Merge commit 'feccd2d3100fd2964d4c2df58ab3da7ce4949a66' into vm-check
[bpt/guile.git] / libguile / goops.c
index 4acaebe..2fc6c31 100644 (file)
@@ -158,8 +158,13 @@ SCM scm_class_protected_opaque, scm_class_protected_read_only;
 SCM scm_class_scm;
 SCM scm_class_int, scm_class_float, scm_class_double;
 
-SCM *scm_port_class = 0;
-SCM *scm_smob_class = 0;
+/* Port classes.  Allocate 3 times the maximum number of port types so that
+   input ports, output ports, and in/out ports can be stored at different
+   offsets.  See `SCM_IN_PCLASS_INDEX' et al.  */
+SCM scm_port_class[3 * SCM_I_MAX_PORT_TYPE_COUNT];
+
+/* SMOB classes.  */
+SCM scm_smob_class[SCM_I_MAX_SMOB_TYPE_COUNT];
 
 SCM scm_no_applicable_method;
 
@@ -1900,7 +1905,7 @@ scm_c_extend_primitive_generic (SCM extended, SCM extension)
       gext = scm_call_2 (SCM_VARIABLE_REF (scm_var_make_extended_generic),
                         gf,
                         SCM_SNAME (extension));
-      *SCM_SUBR_GENERIC (extension) = gext;
+      SCM_SET_SUBR_GENERIC (extension, gext);
     }
   else
     {
@@ -2231,7 +2236,7 @@ SCM_KEYWORD (k_specializers,      "specializers");
 SCM_KEYWORD (k_procedure,      "procedure");
 SCM_KEYWORD (k_formals,                "formals");
 SCM_KEYWORD (k_body,           "body");
-SCM_KEYWORD (k_compile_env,    "compile-env");
+SCM_KEYWORD (k_make_procedure, "make-procedure");
 SCM_KEYWORD (k_dsupers,                "dsupers");
 SCM_KEYWORD (k_slots,          "slots");
 SCM_KEYWORD (k_gf,             "generic-function");
@@ -2295,7 +2300,7 @@ SCM_DEFINE (scm_make, "make",  0, 0, 1,
            scm_i_get_keyword (k_procedure,
                               args,
                               len - 1,
-                              SCM_EOL,
+                              SCM_BOOL_F,
                               FUNC_NAME));
          SCM_SET_SLOT (z, scm_si_code_table, SCM_EOL);
          SCM_SET_SLOT (z, scm_si_formals,
@@ -2310,8 +2315,8 @@ SCM_DEFINE (scm_make, "make",  0, 0, 1,
                               len - 1,
                               SCM_EOL,
                               FUNC_NAME));
-         SCM_SET_SLOT (z, scm_si_compile_env,
-           scm_i_get_keyword (k_compile_env,
+         SCM_SET_SLOT (z, scm_si_make_procedure,
+           scm_i_get_keyword (k_make_procedure,
                               args,
                               len - 1,
                               SCM_BOOL_F,
@@ -2461,7 +2466,7 @@ create_standard_classes (void)
                                 scm_from_locale_symbol ("code-table"),
                                 scm_from_locale_symbol ("formals"),
                                 scm_from_locale_symbol ("body"),
-                                scm_from_locale_symbol ("compile-env"),
+                                scm_from_locale_symbol ("make-procedure"),
                                  SCM_UNDEFINED);
   SCM amethod_slots = scm_list_1 (scm_list_3 (scm_from_locale_symbol ("slot-definition"),
                                              k_init_keyword,
@@ -2727,8 +2732,7 @@ create_smob_classes (void)
 {
   long i;
 
-  scm_smob_class = (SCM *) scm_malloc (255 * sizeof (SCM));
-  for (i = 0; i < 255; ++i)
+  for (i = 0; i < SCM_I_MAX_SMOB_TYPE_COUNT; ++i)
     scm_smob_class[i] = 0;
 
   scm_smob_class[SCM_TC2SMOBNUM (scm_tc16_keyword)] = scm_class_keyword;
@@ -2772,10 +2776,6 @@ create_port_classes (void)
 {
   long i;
 
-  scm_port_class = (SCM *) scm_malloc (3 * 256 * sizeof (SCM));
-  for (i = 0; i < 3 * 256; ++i)
-    scm_port_class[i] = 0;
-
   for (i = 0; i < scm_numptob; ++i)
     scm_make_port_classes (i, SCM_PTOBNAME (i));
 }