Created by snd and last modified
Get this branch:
bzr branch lp://staging/guile

Related bugs

Related blueprints

Branch information

VCS Imports II
GUILE Scheme

Import details

Import Status: Suspended

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 .

Import started on pear and finished taking 25 seconds — see the log
Import started on pear and finished taking 25 seconds — see the log
Import started on russkaya and finished taking 40 seconds — see the log
Import started on pear and finished taking 25 seconds — see the log

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
* 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
* libguile/goops.c (scm_sys_modify_instance): Fix the format of a
* 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_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.
  (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
* libguile/vm-engine.c (class-of): Take away fast path for the time
* module/oop/goops.scm (class-has-indirect-instances?)
  (indirect-slots-need-migration?): New helpers.
  (<class>, <slot>, %class-slot-definition, initialize): Remove use of
  (define-class): Always push redefined values through
  (<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.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
* 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.

14766. By Andy Wingo

Merge remote-tracking branch 'origin/stable-2.2'

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

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
This branch contains Public information 
Everyone can see this information.