lp:guile
- Get this branch:
- bzr branch lp:guile
Branch information
Import details
This branch is an import of the HEAD branch of the Git repository at git://git.savannah.gnu.org/guile.git.
Last successful import was .
Recent revisions
- 14773. By Andy Wingo
-
Document class redefinition change
* doc/ref/goops.texi (Redefinable Classes): New subsection.
(Default Class Redefinition Behaviour)
(Changing the Class of an Instance): Update for class redefinition
change.
* NEWS: Add 2.3.0 section. - 14772. By Andy Wingo
-
Remove "redefined" class slot
* module/
oop/goops. scm (fold-class-slots): Remove "redefined" field from
class objects. Redefinable classes are now handled in a layer on top
of GOOPS core. - 14771. By Andy Wingo
-
remove self field of vtables
* libguile/struct.h (SCM_VTABLE_
BASE_LAYOUT, scm_vtable_ index_self) :
Remove "self" field. Renumber the other fields.
* module/oop/goops. scm (<self-slot>): Remove.
(fold-class-slots) : Adapt for "self" slot removal. Adapt all users.
(class-redefinition) : Now that there is no "self" slot to update, use
%modify-instance instead of %modify-class.
* libguile/goops.c (class_self): Remove.
(scm_sys_modify_ class): Remove.
* libguile/goops.h (scm_sys_modify_ class): Remove.
* module/rnrs/records/ procedural. scm: Import vtable-offset-user.
Renumber rtd indexes using vtable-offset-user.
* module/srfi/srfi- 35.scm (%condition- type-vtable) : Remove mention of
vtable fields.
* module/system/ base/types. scm (address- >inferior- struct) : Adapt for
different vtable field layout. - 14770. By Andy Wingo
-
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. - 14769. By Andy Wingo
-
Implement class redefinition on top of fixed structs
* libguile/struct.h: Steal another flag for GOOPS.
* libguile/goops.h (SCM_VTABLE_FLAG_GOOPS_ INDIRECT)
(SCM_VTABLE_ FLAG_GOOPS_ NEEDS_MIGRATION ): New flags.
(SCM_CLASSF_ GOOPS_VALID, SCM_CLASSF_ GOOPS_OR_ VALID): Remove obsolete
definitions.
(SCM_IS_A_P): Use the scm_class_of function.
* libguile/goops.c (var_class_of_obsolete_ indirect_ instance) : Rename
from var_migrate_instance.
(scm_is_generic, scm_is_method, scm_sys_init_layout_ x): Use
scm_class_of instead of the SCM_CLASS_OF macro.
(get_indirect_ slots): New helper.
(scm_class_of): This patch moves us in a direction where we won't be
able to separately address a struct's data and its identity.
Therefore to check whether a class needs migration, we check an
embedded pointer from a slot instead of the vtable data.
(scm_sys_struct_ data): Remove this temporary function.
(scm_sys_modify_ instance) : Update to swap slot values instead of the
data pointers themselves.
(scm_sys_modify_ class): Use scm_sys_ modify_ instance.
(scm_sys_goops_ loaded) : Capture class-of- obsolete- indirect- instance
instead of migrate-instance.
(scm_init_goops_ builtins) : Don't export the "valid" flag any more;
export instead the "indirect" and "needs-migration" flags.
* libguile/foreign- object. c (scm_assert_ foreign_ object_ type): Add a
FIXME.
* libguile/vm-engine. c (class-of): Take away fast path for the time
being.
* module/oop/goops. scm (class- has-indirect- instances? )
(indirect-slots-need- migration? ): New helpers.
(<class>, <slot>, %class-slot-definition , initialize): Remove use of
vtable-flag-goops- valid.
(define-class): Always push redefined values through
`class-redefinition' .
(<redefinable-class> ): New public definition. Use it as a metaclass
for redefinable classes. Provide a compute-slots function that
declares the indirect slots mechanism. Add the "indirect" flag to
instances of <redefinable-class>. Create indirect-slots objects for
instances of those classes as part of their allocate-instance.
(change-object- class, class-of- obsolete- indirect- instance) : Update for
new representation change.
* test-suite/tests/goops. test ("object update"): Add #:metaclass
<redefinable-class> to all redefinable classes. For the "hell" test,
make the new classes with class-direct-slots, not class-slots; this
was an error in the test. - 14768. By Andy Wingo
-
Change name of "static" flag indicating static slot allocation
* libguile/goops.h (SCM_VTABLE_
FLAG_GOOPS_ STATIC_ SLOT_ALLOCATION ):
Rename from SCM_VTABLE_FLAG_GOOPS_ STATIC.
* libguile/goops.c (scm_init_goops_builtins) : Adapt.
* module/oop/goops. scm (class- has-statically- allocated- slots?) :
(initialize): Adapt. - 14767. By Andy Wingo
-
GOOPS instance migration implemented in Scheme
* libguile/goops.c (scm_class_of): Call out directly to the GOOPS-local
`migrate-instance' if an instance needs to migrate.
(scm_sys_struct_ data): New internal temporary function used by the
Scheme `migrate-instance'. Exorcise the evil one from the old C
implementation.
* libguile/goops.h (scm_change_object_ class): Remove function used only
internally in GOOPS.
* module/oop/goops. scm (migrate-instance): Implement the
hell/purgatory/ etc logic in Scheme instead of C. - 14765. By Andy Wingo
-
guile.m4 fix for 3.0 prereleases
* meta/guile.m4 (GUILE_PROGS): Allow prereleases of Guile with a new
major version. - 14764. By Andy Wingo
-
Update uri? documentation.
* doc/ref/web.texi (URIs): Update uri? documentation for deprecation
removal.
Branch metadata
- Branch format:
- Branch format 7
- Repository format:
- Bazaar repository format 2a (needs bzr 1.16 or later)