[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] GNU Guile branch, wip-retagging, created. v2.1.0-26-gf8b

From: Andy Wingo
Subject: [Guile-commits] GNU Guile branch, wip-retagging, created. v2.1.0-26-gf8b128b
Date: Tue, 15 Jan 2013 18:04:07 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".

The branch, wip-retagging has been created
        at  f8b128b0dd5d1d3ba9a663dce4609f7460611c9c (commit)

- Log -----------------------------------------------------------------
commit f8b128b0dd5d1d3ba9a663dce4609f7460611c9c
Author: Andy Wingo <address@hidden>
Date:   Mon Oct 24 18:45:41 2011 +0200

    squirrely smob marking refactor
    * libguile/smob.c (smob_mark): No idea what the right thing is to do

commit eb6e3f9dde378af539634b7dadf7f4ba652da267
Author: Andy Wingo <address@hidden>
Date:   Tue Jan 15 19:03:18 2013 +0100

    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/inline.h (scm_is_pair): Remove the (crufty!) GCC workaround,
      as we no longer check the heap to see if something is a pair.
    * libguile/list.c (SCM_I_CONS):
    * libguile/pairs.c (scm_cons):
    * 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):
    * libguile/struct.h (SCM_STRUCTP, SCM_STRUCT_VTABLE_DATA):
    * libguile/vm-i-scheme.c (make-struct): Adapt to struct tagging
    * 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.

commit 03daea184e59235e5fc34750746332aaccb49f5d
Author: Andy Wingo <address@hidden>
Date:   Tue Jan 15 18:29:59 2013 +0100

    * libguile/tags.h (SCM_HEAP_OBJECT_BASE): New macro.  Given a SCM,
      returns a pointer to the start of its memory area on the heap.
    * libguile/bytevectors.c:
    * libguile/fluids.c:
    * libguile/foreign.c:
    * libguile/gc.h:
    * libguile/guardians.c:
    * libguile/numbers.h:
    * libguile/ports.c:
    * libguile/smob.c:
    * libguile/struct.c:
    * libguile/weak-set.c:
    * libguile/weak-table.c:
    * libguile/weak-vector.c: Use it.


GNU Guile

reply via email to

[Prev in Thread] Current Thread [Next in Thread]