EDuke32 Changelog Archivio non ufficiale

Build 3458

3 febbraio 2013 · 5 commit di 1 autore · SVN

Build per mese 214 build

  1. gen

  2. feb

  3. mar

  4. apr

  5. mag

  6. giu

  7. lug

  8. ago

  9. set

  10. ott

  11. nov

  12. dic

File di log originale · 20130203-3458.txt
------------------------------------------------------------------------
r3458 | helixhorned | 2013-02-03 04:48:25 -0800 (Sun, 03 Feb 2013) | 10 lines

Lose the packed attribute on / rearrange some game struct types.

actors.h: remove 'packed' from projectile_t, tiledata_t. In tiledata_t,
 make .cacherange member an int32_t so that the following member
 "projectile_t defproj" is aligned on a 4-byte boundary.
player.h: remove 'packed' from playerspawn_t, DukeStatus_t, input_t.
In Lunatic, correct packing attribute of the base type of the unrestricted
actor_t and DukePlayer_t pointer types (the declaration was used without

Bump BYTEVERSION.
------------------------------------------------------------------------
r3457 | helixhorned | 2013-02-03 04:48:20 -0800 (Sun, 03 Feb 2013) | 1 line

player.c: remove a couple of unnecessary casts.
------------------------------------------------------------------------
r3456 | helixhorned | 2013-02-03 04:48:17 -0800 (Sun, 03 Feb 2013) | 1 line

Lunatic: conditionally compile out more legacy code, remove old mixed mode code.
------------------------------------------------------------------------
r3455 | helixhorned | 2013-02-03 04:48:11 -0800 (Sun, 03 Feb 2013) | 20 lines

Lose the 'packed' attribute for types declared in build.h.

Most of them are already aligned to their natural boundaries, so lowering
the alignment to 1 byte can only worsen things by making the C compiler
generate poorer (unaligned access) code for some platforms.

The layout of structures is not specified by the C Standard, but is rather
given by a particular platform + toolchain's ABI (application binary interface).
Most ABIs follow the expected pattern "alignment of scalars is their size,
alignment of arrays is that of its element type, alignment of structs is the
maximum alignment of its members". A couple of links to particular ABIs are
given in build.h.

Problems are expected with archs that care about unaligned access when a pointer
to a non-packed struct is taken that resides in a packed aggregate, but these
uses should be weeded out (I'm not sure if there are any in our codebase).

The following types are affected, only hitdata_t changes its size:
sectortype, walltype, spritetype, spriteext_t, spritesmooth_t,
struct validmode_t, picanm_t, palette_t, vec2_t, vec3_t, hitdata_t.
------------------------------------------------------------------------
r3454 | helixhorned | 2013-02-03 04:48:06 -0800 (Sun, 03 Feb 2013) | 1 line

Lunatic translator: codegen for actor-tsprite accesses, sync some RO members.
------------------------------------------------------------------------

Lose the packed attribute on / rearrange some game struct types.

Philipp Kutin (Helixhorned) 3 feb 2013, 04:48 UTC−8 r3458

actors.h: remove 'packed' from projectile_t, tiledata_t. In tiledata_t, make .cacherange member an int32_t so that the following member "projectile_t defproj" is aligned on a 4-byte boundary. player.h: remove 'packed' from playerspawn_t, DukeStatus_t, input_t. In Lunatic, correct packing attribute of the base type of the unrestricted actor_t and DukePlayer_t pointer types (the declaration was used without Bump BYTEVERSION.

Lose the 'packed' attribute for types declared in build.h.

Philipp Kutin (Helixhorned) 3 feb 2013, 04:48 UTC−8 r3455

Most of them are already aligned to their natural boundaries, so lowering the alignment to 1 byte can only worsen things by making the C compiler generate poorer (unaligned access) code for some platforms. The layout of structures is not specified by the C Standard, but is rather given by a particular platform + toolchain's ABI (application binary interface). Most ABIs follow the expected pattern "alignment of scalars is their size, alignment of arrays is that of its element type, alignment of structs is the maximum alignment of its members". A couple of links to particular ABIs are given in build.h. Problems are expected with archs that care about unaligned access when a pointer to a non-packed struct is taken that resides in a packed aggregate, but these uses should be weeded out (I'm not sure if there are any in our codebase). The following types are affected, only hitdata_t changes its size: sectortype, walltype, spritetype, spriteext_t, spritesmooth_t, struct validmode_t, picanm_t, palette_t, vec2_t, vec3_t, hitdata_t.