mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-08 10:50:21 +02:00
Add tc7 for finalizer objects
Whippet will need this. * libguile/scm.h (scm_tc7_finalizer): Reserve. * libguile/evalext.c (scm_self_evaluating_p): Add finalizer case. * libguile/print.c (iprin1): * libguile/finalizers.h: * libguile/finalizers.c (scm_i_print_finalizer): Arrange to print finalizers. * module/oop/goops.scm (<finalizer>): * libguile/goops.c (class_finalizer, scm_class_of) (scm_sys_goops_early_init): Wire up support for <finalizer>. * module/system/base/types/internal.scm (heap-tags): Add finalizers. * module/system/vm/assembler.scm (system): Add emit-finalizer?.
This commit is contained in:
parent
532df66e07
commit
cf25a94745
9 changed files with 28 additions and 4 deletions
|
@ -134,6 +134,7 @@ static SCM class_uvec;
|
|||
static SCM class_array;
|
||||
static SCM class_thread;
|
||||
static SCM class_bitvector;
|
||||
static SCM class_finalizer;
|
||||
|
||||
static SCM vtable_class_map = SCM_BOOL_F;
|
||||
|
||||
|
@ -257,6 +258,8 @@ SCM_DEFINE (scm_class_of, "class-of", 1, 0, 0,
|
|||
return class_array;
|
||||
case scm_tc7_bitvector:
|
||||
return class_bitvector;
|
||||
case scm_tc7_finalizer:
|
||||
return class_finalizer;
|
||||
case scm_tc7_thread:
|
||||
return class_thread;
|
||||
case scm_tc7_string:
|
||||
|
@ -940,6 +943,7 @@ SCM_DEFINE (scm_sys_goops_early_init, "%goops-early-init", 0, 0, 0,
|
|||
class_array = scm_variable_ref (scm_c_lookup ("<array>"));
|
||||
class_thread = scm_variable_ref (scm_c_lookup ("<thread>"));
|
||||
class_bitvector = scm_variable_ref (scm_c_lookup ("<bitvector>"));
|
||||
class_finalizer = scm_variable_ref (scm_c_lookup ("<finalizer>"));
|
||||
class_number = scm_variable_ref (scm_c_lookup ("<number>"));
|
||||
class_complex = scm_variable_ref (scm_c_lookup ("<complex>"));
|
||||
class_real = scm_variable_ref (scm_c_lookup ("<real>"));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue