Removed code that dealt with ROM closure, since these don't exist.master
authorVincent St-Amour <stamourv@iro.umontreal.ca>
Wed, 10 Feb 2010 00:33:21 +0000 (9 19:33 -0500)
committerVincent St-Amour <stamourv@iro.umontreal.ca>
Wed, 10 Feb 2010 00:33:21 +0000 (9 19:33 -0500)
debug.c
dispatch.c
gc.c
picobit-vm.c
picobit-vm.h
primitives.c

diff --git a/debug.c b/debug.c
index ecd5228..3690074 100644 (file)
--- a/debug.c
+++ b/debug.c
@@ -31,7 +31,7 @@ void show_type (obj o) {
     else if (ROM_STRING(o)) printf("rom string");
     else if (ROM_VECTOR(o)) printf("rom vector");
     else if (ROM_CONTINUATION(o)) printf("rom continuation");
-    else if (RAM_CLOSURE(o)) printf("rom closure");
+    // ROM closures don't exist
   }
   printf("\n");
 }
index d1edaa7..23d325c 100644 (file)
@@ -26,14 +26,8 @@ void pop_procedure () {
 
     entry = ram_get_entry (arg1) + CODE_START;
   }
-  else if (IN_ROM(arg1)) {
-    if (!ROM_CLOSURE(arg1))
-      TYPE_ERROR("pop_procedure.1", "procedure");
-
-    entry = rom_get_entry (arg1) + CODE_START;
-  }
   else
-    TYPE_ERROR("pop_procedure.2", "procedure");
+    TYPE_ERROR("pop_procedure.1", "procedure");
 }
 
 uint8 handle_arity_and_rest_param (uint8 na) {
diff --git a/gc.c b/gc.c
index 1d8f5b7..b6abc08 100644 (file)
--- a/gc.c
+++ b/gc.c
@@ -86,7 +86,6 @@ void mark (obj temp) {
        
       visit_field1:
 
-       // closures have the pointer in the cdr, not in the car as others
        temp = ram_get_car (visit);
        
        if (IN_RAM(temp)) {
index 81bd323..bd16370 100644 (file)
@@ -95,10 +95,6 @@ obj ram_get_entry (obj o) {
   uint16 tmp  = ram_get_field2 (o);
   return ((tmp << 8) | ram_get_field3 (o));
 }
-obj rom_get_entry (obj o){
-  uint16 tmp  = rom_get_field2 (o);
-  return ((tmp << 8) | rom_get_field3 (o));
-}
 
 obj get_global (uint8 i) {
 // globals occupy the beginning of ram, with 2 globals per word
index 032027d..8f6e38e 100644 (file)
@@ -495,13 +495,12 @@ uint8 ROM_CONTINUATION(uint16 o) {return (ROM_COMPOSITE (o) && ((rom_get_field2
 #endif
 
 // closure first byte : 01Gxxxxx
+// closures are only found in RAM
 #define CLOSURE_FIELD0 0x40
 #ifdef LESS_MACROS
 uint8 RAM_CLOSURE(uint16 o) {return ((ram_get_field0 (o) & 0xc0) == CLOSURE_FIELD0);}
-uint8 ROM_CLOSURE(uint16 o) {return ((rom_get_field0 (o) & 0xc0) == CLOSURE_FIELD0);}
 #else
 #define RAM_CLOSURE(o) ((ram_get_field0 (o) & 0xc0) == CLOSURE_FIELD0)
-#define ROM_CLOSURE(o) ((rom_get_field0 (o) & 0xc0) == CLOSURE_FIELD0)
 #endif
 
 /*---------------------------------------------------------------------------*/
index 7d263f2..8d33917 100644 (file)
@@ -554,16 +554,9 @@ void show (obj o) {
     else { // closure
       obj env;
       rom_addr pc;
-      
-      if (IN_RAM(o)) // TODO remove code for ROM closures
-       env = ram_get_car (o);
-      else
-       env = rom_get_car (o);
-      
-      if (IN_RAM(o))
-       pc = ram_get_entry (o);
-      else
-       pc = rom_get_entry (o);
+
+      env = ram_get_car (o);
+      pc = ram_get_entry (o);
       
       printf ("{0x%04x ", pc);
       show (env);