Merge commit '5b7632331e7551ac202bbaba37c572b96a791c6e'
[bpt/guile.git] / libguile / procprop.c
index 78a40c1..d455360 100644 (file)
@@ -33,6 +33,7 @@
 #include "libguile/vectors.h"
 #include "libguile/weak-table.h"
 #include "libguile/programs.h"
+#include "libguile/vm-builtins.h"
 
 #include "libguile/validate.h"
 #include "libguile/procprop.h"
@@ -60,7 +61,7 @@ scm_i_procedure_arity (SCM proc, int *req, int *opt, int *rest)
       return 1;
     }
 
-  while (!SCM_PROGRAM_P (proc) && !SCM_RTL_PROGRAM_P (proc))
+  while (!SCM_PROGRAM_P (proc))
     {
       if (SCM_STRUCTP (proc))
         {
@@ -147,8 +148,6 @@ SCM_DEFINE (scm_procedure_properties, "procedure-properties", 1, 0, 0,
 
   if (SCM_PROGRAM_P (proc))
     ret = scm_i_program_properties (proc);
-  else if (SCM_RTL_PROGRAM_P (proc))
-    ret = scm_i_rtl_program_properties (proc);
   else
     ret = SCM_EOL;
 
@@ -249,9 +248,6 @@ SCM_DEFINE (scm_procedure_name, "procedure-name", 1, 0, 0,
 
   SCM_VALIDATE_PROC (1, proc);
 
-  while (SCM_STRUCTP (proc) && SCM_STRUCT_APPLICABLE_P (proc))
-    proc = SCM_STRUCT_PROCEDURE (proc);
-
   user_props = scm_weak_table_refq (overrides, proc, SCM_BOOL_F);
   if (scm_is_true (user_props)) 
     {
@@ -262,10 +258,10 @@ SCM_DEFINE (scm_procedure_name, "procedure-name", 1, 0, 0,
         return SCM_BOOL_F;
     }
 
-  if (SCM_RTL_PROGRAM_P (proc))
-    return scm_i_rtl_program_name (proc);
-  else if (SCM_PROGRAM_P (proc))
-    return scm_assq_ref (scm_i_program_properties (proc), scm_sym_name);
+  if (SCM_PROGRAM_P (proc))
+    return scm_i_program_name (proc);
+  else if (SCM_STRUCTP (proc) && SCM_STRUCT_APPLICABLE_P (proc))
+    return scm_procedure_name (SCM_STRUCT_PROCEDURE (proc));
   else
     return SCM_BOOL_F;
 }
@@ -299,11 +295,8 @@ SCM_DEFINE (scm_procedure_documentation, "procedure-documentation", 1, 0, 0,
         return SCM_BOOL_F;
     }
 
-  if (SCM_RTL_PROGRAM_P (proc))
-    return scm_i_rtl_program_documentation (proc);
-  else if (SCM_PROGRAM_P (proc))
-    return scm_assq_ref (scm_i_program_properties (proc),
-                         scm_sym_documentation);
+  if (SCM_PROGRAM_P (proc))
+    return scm_i_program_documentation (proc);
   else
     return SCM_BOOL_F;
 }
@@ -343,6 +336,7 @@ scm_init_procprop ()
   overrides = scm_c_make_weak_table (0, SCM_WEAK_TABLE_KIND_KEY);
   arity_overrides = scm_c_make_weak_table (0, SCM_WEAK_TABLE_KIND_KEY);
 #include "libguile/procprop.x"
+  scm_init_vm_builtin_properties ();
 }