Branch: Tag:

2014-12-04

2014-12-04 19:23:40 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Renumbered PIKE_T_*. Breaks ppc32 and ppc64.

Renumber the low PIKE_T_* values so that PIKE_T_INT becomes zero.

This has the feature that zeroed memory becomes filled with Pike
svalues containing integer zeroes (and not NULL pointer arrays).
This will let call_c_initializers() avoid traversing the entire
identifier table for the class.

Note: The serialized representation of types (__parse_pike_type())
is unchanged. As is the {out,in}put for {en,de}code_value().

Updates the code generators for ia32 and amd64.

Breaks the code generators for ppc32 and ppc64.

4355:   /* Be careful if extending this with internal types like    * T_MAPPING_DATA and T_MULTISET_DATA; there's code that assumes    * type_from_visit_fn only returns types that fit in a TYPE_FIELD. */ - PMOD_EXPORT visit_thing_fn *const visit_fn_from_type[MAX_REF_TYPE + 1] = { + PMOD_EXPORT visit_thing_fn *const visit_fn_from_type[MAX_TYPE + 1] = { +  (visit_thing_fn *) (ptrdiff_t) -1, +  (visit_thing_fn *) (ptrdiff_t) -1, +  (visit_thing_fn *) (ptrdiff_t) -1, +  (visit_thing_fn *) (ptrdiff_t) -1, +  (visit_thing_fn *) (ptrdiff_t) -1, +  (visit_thing_fn *) (ptrdiff_t) -1, +  (visit_thing_fn *) (ptrdiff_t) -1, +  (visit_thing_fn *) (ptrdiff_t) -1,    (visit_thing_fn *) &visit_array,    (visit_thing_fn *) &visit_mapping,    (visit_thing_fn *) &visit_multiset,