[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] GNU Guile branch, goops-cleanup, created. release_1-9-4-
From: |
Andy Wingo |
Subject: |
[Guile-commits] GNU Guile branch, goops-cleanup, created. release_1-9-4-72-gb1955b1 |
Date: |
Tue, 03 Nov 2009 23:08:10 +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".
http://git.savannah.gnu.org/cgit/guile.git/commit/?id=b1955b1187eccb9383154942f0353d5cdcfeed99
The branch, goops-cleanup has been created
at b1955b1187eccb9383154942f0353d5cdcfeed99 (commit)
- Log -----------------------------------------------------------------
commit b1955b1187eccb9383154942f0353d5cdcfeed99
Author: Andy Wingo <address@hidden>
Date: Tue Nov 3 23:59:51 2009 +0100
a very big commit cleaning up structs & goops. also applicable structs.
I tried to split this one, and I know it's a bit disruptive, but this
stuff really is one big cobweb. So instead we'll pretend like these are
separate commits, by separating the changelog.
Applicable struct runtime support.
* libguile/debug.c (scm_procedure_source):
* libguile/eval.c (scm_trampoline_0, scm_trampoline_1)
(scm_trampoline_2):
* libguile/eval.i.c (CEVAL):
* libguile/goops.c (scm_class_of):
* libguile/procprop.c (scm_i_procedure_arity):
* libguile/procs.c (scm_procedure_p, scm_procedure, scm_setter): Allow
for applicable structs. Whee!
* libguile/deprecated.h (scm_vtable_index_vtable): Define as a synonym
for scm_vtable_index_self.
(scm_vtable_index_printer): Alias scm_vtable_index_instance_printer.
(scm_struct_i_free): Alias scm_vtable_index_instance_finalize.
(scm_struct_i_flags): Alias scm_vtable_index_flags.
(SCM_STRUCTF_FLAGS): Be a -1 mask, we have a whole word now.
(SCM_SET_VTABLE_DESTRUCTOR): Implement by hand.
Hidden slots.
* libguile/struct.c (scm_make_struct_layout): Add support for "hidden"
fields, writable fields that are not visible to make-struct. This
allows us to add fields to vtables and not break existing make-struct
invocations.
(scm_struct_ref, scm_struct_set_x): Always get struct length from the
vtable. Support hidden fields.
* libguile/goops.c (scm_class_hidden, scm_class_protected_hidden): New
slot classes, to correspond to the new vtable slots.
(scm_sys_prep_layout_x): Turn hidden slots into 'h'.
(build_class_class_slots): Reorder the class slots to account for
vtable fields coming out of negative-land, for name as a vtable slot,
and for hidden fields.
(create_standard_classes): Define <hidden-slot> and
<protected-hidden-slot>.
Clean up struct.h.
* libguile/struct.h: Lay things out cleaner. There are no more hidden
(negative) words. Names are nicer. The exposition is nicer. But the
basics are the same. The incompatibilities are that <vtable> has more
slots now, and that scm_alloc_struct's signature has changed. The
former is ameliorated by the "hidden" slots mentioned before, and the
latter, well, it was always a very internal thing...
* libguile/struct.c: (scm_vtable_p): Now we keep flags on
vtable-vtables, so this check is cheaper.
(scm_alloc_struct): No hidden words. Yippee.
(struct_finalizer_trampoline): Entersify.
(scm_make_struct): No need to babysit extra words, though now we have
to babysit flags. Propagate the vtable, applicable, and setter flags
appropriately.
(scm_make_vtable_vtable): Update for new simplicity.
(scm_print_struct): A better printer.
(scm_init_struct): Define <applicable-struct-vtable>, a magical vtable
like CL's funcallable-standard-class. Also define
<applicable-struct-with-setter-vtable>.
Remove foreign object implementation.
* libguile/goops.h:
* libguile/goops.c (scm_make_foreign_object, scm_make_class)
(scm_add_slot, scm_wrap_object, scm_wrap_component): Remove, these
were undocumented and unworking.
Clean up goops.h, a little.
* libguile/goops.h:
* libguile/goops.c: Also clean up.
* module/oop/goops/dispatch.scm (hashset-index): Adapt for new hashset
index.
commit ba33a21a28ceb5cf5a30ca34d4f833b8e3292187
Author: Andy Wingo <address@hidden>
Date: Tue Nov 3 22:43:29 2009 +0100
actually set all 8 hashsets in classes
* libguile/goops.c (prep_hashsets): Actually set all 8 hashsets. Doh...
commit 0fb03157867ae1d12257928f9253c19b267e8ede
Author: Andy Wingo <address@hidden>
Date: Tue Nov 3 22:41:59 2009 +0100
remove goops-local %tag-body
* libguile/goops.c (scm_sys_tag_body): Remove goops-local hack that is
no longer necessary.
commit 84dab750a7db5e451b4bc6e49652161d298621a9
Author: Andy Wingo <address@hidden>
Date: Tue Nov 3 22:33:22 2009 +0100
SCM_VALIDATE_VTABLE tweak
* libguile/validate.h (SCM_VALIDATE_VTABLE): Simply call
scm_struct_vtable_p.
commit d427d8386ad5d23332280d60eaef7226620513bf
Author: Andy Wingo <address@hidden>
Date: Tue Nov 3 22:32:39 2009 +0100
fix printing-programs bug
* module/system/vm/program.scm (write-program): Fix a bug if we couldn't
get a procedure's arity.
commit 48a69b27398d88dd54965b7584191acf2a974fde
Author: Andy Wingo <address@hidden>
Date: Tue Nov 3 22:28:26 2009 +0100
values.c defines a vtable, not a vtable-vtable
* libguile/values.c (scm_init_values): Define a vtable, not a
"metaclass".
commit d8ebd1d41d3cfe0aab118c214dc7db4b0ac3c433
Author: Andy Wingo <address@hidden>
Date: Tue Nov 3 22:27:34 2009 +0100
srfi-35 properly uses vtable-offset-user
* module/srfi/srfi-35.scm (condition-type-id):
(condition-type-parent, condition-type-all-fields): Don't ref fixed
struct indices, use vtable-offset-user instead.
commit 635bc2288076acfa5fcd305704d2a95b882fa090
Author: Andy Wingo <address@hidden>
Date: Tue Nov 3 22:26:46 2009 +0100
fix a structs.test test
* test-suite/tests/structs.test ("equal?"): Instantiate vtables, not
vtable-vtables. "hello" is not a valid vtable layout.
commit 67d29780cd0288bb8b6825ac9bfe207a3b5192b8
Author: Andy Wingo <address@hidden>
Date: Sun Nov 1 21:09:42 2009 +0100
remove redundant, unnecessary instance size from struct vtables
* libguile/struct.h (scm_struct_i_size): Remove this shared field -- I
mean, the slot is still there, but it's only used for flags.
* libguile/goops.h (SCM_SET_CLASS_INSTANCE_SIZE):
* libguile/goops.c (scm_sys_inherit_magic_x, scm_make_class): Remove
uses and definition of SCM_SET_CLASS_INSTANCE_SIZE. Light structs used
it, but you have that info in the layout; and foreign classes used it,
but that is going away soon anyway :)
commit 2f145cc2974c1b528fed5e1cc7855d553f084c57
Author: Andy Wingo <address@hidden>
Date: Sun Nov 1 20:45:02 2009 +0100
fold objects.[ch] into goops.[ch]
Remove objects.h #includes as appropriate.
commit 5ea6ce3cde873cb75e4eddd36781182940177d68
Author: Andy Wingo <address@hidden>
Date: Sun Nov 1 19:46:27 2009 +0100
remove support for "entities" -- a form of applicable struct
Entities were meant to be a form of applicable struct. Unfortunately,
the implementation is intertwingled with generics. Removing them, for
now, will make it possible to cleanly re-add applicable struct support.
* libguile/struct.h (SCM_STRUCTF_ENTITY): Remove.
(SCM_STRUCTF_GOOPS_HACK): New flag; sigh.
* libguile/struct.c (scm_make_struct): We make "entity" structs if the
GOOPS_HACK flag is set. This will be fixed when we rework flags and
remove hidden words.
* libguile/goops.c (scm_class_of): Structs are not applicable, for now
at least.
(scm_sys_inherit_magic_x, scm_basic_basic_make_class)
(scm_sys_allocate_instance, scm_sys_set_object_setter_x):
(make_struct_class): Adapt for no more entities (and thus no entity
flag).
(create_standard_classes): For some reason, generic functions were
getting the LIGHT flag set, after the ENTITY flag was removed; so for
now explicitly clear that flag.
* libguile/goops.h (SCM_GENERIC_SETTER, SCM_SET_GENERIC_SETTER): New
macros.
* libguile/objects.h:
* libguile/objects.c: Remove code for entities.
* libguile/debug.c: (scm_procedure_source): Only work with generics.
* libguile/eval.c (scm_trampoline_0, scm_trampoline_1)
(scm_trampoline_2): Only handle generics.
* libguile/eval.i.c (CEVAL): #ifdef out the pieces about entities.
* libguile/procprop.c (scm_i_procedure_arity): Remove support for
entities.
* libguile/procs.c (scm_procedure_p, scm_procedure, scm_setter): Remove
entity support.
commit 0dccce8b8ab89c56b0816801b7700d1bed80ee8c
Author: Andy Wingo <address@hidden>
Date: Sat Oct 31 12:04:53 2009 +0100
SCM_GENERIC_METHOD_CACHE macro splits from SCM_ENTITY_PROCEDURE
* libguile/goops.h (SCM_GENERIC_METHOD_CACHE)
(SCM_SET_GENERIC_METHOD_CACHE): Two new macros; the same as
SCM_[SET_]ENTITY_PROCEDURE, but more reflecting the reality of the
generic hack.
* libguile/eval.i.c:
* libguile/goops.c:
* libguile/objects.c:
* libguile/vm-i-system.c: Use the new macros when it is appropriate to
do so.
commit 87af2dfc34cb5228de3574057a277df930581547
Author: Andy Wingo <address@hidden>
Date: Sat Oct 31 11:17:12 2009 +0100
remove unused things from object.[ch]
* libguile/objects.h:
* libguile/objects.c (scm_object_procedure): Remove, it was only
compiled with SCM_DEBUG.
* libguile/objects.h:
* libguile/objects.c (scm_make_class_object, scm_make_subclass_object,
(scm_i_make_class_object, scm_metaclass_standard): Remove also. These
implemented an undocumented object system, and are totally replaced by
GOOPS.
commit 90dcbb12be64260cb1329c456a4f02900639347d
Author: Andy Wingo <address@hidden>
Date: Sat Oct 31 00:28:43 2009 +0100
remove operators
commit a1724f53c0e51d5577d8e50d25867abc010991d0
Author: Andy Wingo <address@hidden>
Date: Sat Oct 31 00:08:42 2009 +0100
generic dispatch in the vm (sorta)
* libguile/vm-i-system.c (call, goto/args, mv-call): Add a case for
generics, so we can avoid the evaluator in that case. Still have to
cons up a list -- the real solution comes later.
commit 0108ba52a1da29e6b0f84c6380a5d4b36311a271
Author: Andy Wingo <address@hidden>
Date: Thu Oct 29 09:47:00 2009 +0100
remove unused struct gc chain macros
* libguile/struct.h (SCM_STRUCT_GC_CHAIN, SCM_SET_STRUCT_GC_CHAIN):
Remove, no longer necessary given topological finalization, provided
by libGC.
commit 8fa54cfd403e82ae4818c817036106e9f13e90e3
Author: Andy Wingo <address@hidden>
Date: Fri Oct 30 22:21:29 2009 +0100
de-inline goops dispatch from the evaluator
* libguile/eval.i.c: De-inline goops dispatch from the evaluator. Part
of a refactor.
-----------------------------------------------------------------------
hooks/post-receive
--
GNU Guile
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Guile-commits] GNU Guile branch, goops-cleanup, created. release_1-9-4-72-gb1955b1,
Andy Wingo <=