diff options
author | Andy Wingo <wingo@pobox.com> | 2017-09-07 16:55:30 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2017-09-14 09:44:33 +0200 |
commit | 7e91ff651b3c9f7c27f2be146ea611bab65809a8 (patch) | |
tree | 09e2c37c935bf20f3883721d55708529b7e9eebd /libguile/gc.c | |
parent | 48989599016c218da68899aee2af8264df98e34c (diff) | |
download | guile-7e91ff651b3c9f7c27f2be146ea611bab65809a8.tar.gz |
Remove indirection in structs
* libguile/gc.c (scm_storage_prehistory): Register struct displacement
here.
* libguile/goops.c (scm_sys_modify_instance): Fix the format of a
comment.
* libguile/modules.c (scm_post_boot_init_modules): Update for new format
of struct vtable references.
* libguile/struct.c (scm_i_alloc_struct): Update to include slots
directly, instead of being indirected by an embedded pointer.
(scm_c_make_structv, scm_allocate_struct, scm_i_make_vtable_vtable):
Adapt to pass vtable bits as argument to scm_i_alloc_struct, not
vtable data bits.
(scm_init_struct): Remove two-word displacement from libgc.
* libguile/struct.h: Update comment.
(SCM_STRUCT_SLOTS, SCM_STRUCT_DATA): Update definitions.
(SCM_STRUCT_VTABLE_DATA, SCM_STRUCT_VTABLE_SLOTS): Remove.
(SCM_STRUCT_VTABLE, SCM_STRUCT_LAYOUT, SCM_STRUCT_PRINTER)
(SCM_STRUCT_FINALIZER, SCM_STRUCT_VTABLE_FLAGS)
(SCM_STRUCT_VTABLE_FLAG_IS_SET): Simplify definitions.
* module/system/base/types.scm (cell->object, address->inferior-struct):
Adapt to struct representation change.
Diffstat (limited to 'libguile/gc.c')
-rw-r--r-- | libguile/gc.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libguile/gc.c b/libguile/gc.c index 4478128c6..b9064b3b1 100644 --- a/libguile/gc.c +++ b/libguile/gc.c @@ -1,5 +1,5 @@ /* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2006, - * 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016 Free Software Foundation, Inc. + * 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2017 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -480,9 +480,9 @@ scm_storage_prehistory () /* We only need to register a displacement for those types for which the higher bits of the type tag are used to store a pointer (that is, a - pointer to an 8-octet aligned region). For `scm_tc3_struct', this is - handled in `scm_alloc_struct ()'. */ + pointer to an 8-octet aligned region). */ GC_REGISTER_DISPLACEMENT (scm_tc3_cons); + GC_REGISTER_DISPLACEMENT (scm_tc3_struct); /* GC_REGISTER_DISPLACEMENT (scm_tc3_unused); */ /* Sanity check. */ |