1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00
guile/module
Andy Wingo b071ce2147 redo the SCM tagging strategy
Currently failing some guardian tests.

* libguile/tags.h: Refactor tagging so that tc3 bits for a pair live in
  the SCM value, not in the heap words.  Do the same for structs.  This
  more rational tagging strategy will make native code generation
  easier.  Note that this means that to check a heap pointer for its
  type, you first have to ensure that it has the expected tc3, as not
  all the type bits are on the heap.
  (SCM_TYP3): Check the SCM tag type, not the bits in the cell.
  (SCM_HAS_TYP3): New helper.
  (SCM_I_CONSP): Redefine to just check the typ3.
  (scm_tcs_cons_imcar, scm_tcs_cons_nimcar, scm_tcs_struct): Remove, as
  they are no longer necessary.

* libguile/array-handle.c (scm_i_array_implementation_for_obj): Check
  for heap objects before checking type bits, so we don't check pairs.

* libguile/evalext.c (scm_self_evaluating_p):
* libguile/gc.c (scm_i_tag_name):
* libguile/goops.c (scm_class_of)
* libguile/hash.c (scm_hasher):
* libguile/print.c (iprin1): Adapt to tagging changes.

* libguile/gc.c (scm_storage_prehistory): Register all displacements
  here.  There are the same displacements as before, unfortunately.

* libguile/list.c (SCM_I_CONS):
* libguile/pairs.c (scm_cons):
* libguile/pairs.h (scm_is_pair):
* libguile/vm-engine.h (CONS): Tag pairs with scm_tc3_pair.

* libguile/modules.c (scm_post_boot_init_modules):
* libguile/modules.h (SCM_MODULEP):
* libguile/struct.c (struct_finalizer_trampoline, scm_i_alloc_struct):
  (scm_make_vtable_vtable):
* libguile/struct.h (SCM_STRUCTP, SCM_STRUCT_VTABLE_DATA):
  (SCM_STRUCT_VTABLE_SLOTS):
* libguile/vm-i-scheme.c (make-struct): Adapt to struct tagging
  changes.

* libguile/numbers.h (SCM_I_INUMP):
* module/rnrs/arithmetic/fixnums.scm (fixnum?, inline-fixnum?): Adapt
  to the new fixnum tag.

* libguile/numbers.h (SCM_INEXACTP): Make sure of the tc3 before looking
  at the cell type.
2013-01-15 19:13:03 +01:00
..
ice-9 fix string->bytevector for utf-8 and non-error conversion strategies 2013-01-15 16:37:01 +01:00
language Merge remote-tracking branch 'origin/stable-2.0' 2013-01-07 17:23:26 -05:00
oop Merge remote-tracking branch 'origin/stable-2.0' 2012-07-06 16:52:54 +02:00
rnrs redo the SCM tagging strategy 2013-01-15 19:13:03 +01:00
scripts instead of our custom .go format, use elf 2012-06-22 13:40:50 +02:00
srfi Merge remote-tracking branch 'origin/stable-2.0' 2013-01-07 17:23:26 -05:00
sxml remove duplicate when/unless definitions 2012-01-20 21:16:50 +01:00
system Merge remote-tracking branch 'origin/stable-2.0' 2013-01-07 17:23:26 -05:00
texinfo docbook->texi fix 2012-05-08 16:03:54 +02:00
web Merge remote-tracking branch 'origin/stable-2.0' 2013-01-15 10:45:39 +01:00
Makefile.am Merge remote-tracking branch 'origin/stable-2.0' 2013-01-15 10:45:39 +01:00
rnrs.scm Add missing R6RS `open-file-input/output-port' procedure 2012-11-12 20:47:57 +01:00
statprof.scm add gcprof 2011-05-05 11:43:12 +02:00
texinfo.scm more robust texinfo alias handling 2012-08-25 14:11:45 +02:00