From 731a9972ced36ab4c8cd722307446e664865cacd Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Tue, 9 Feb 2010 19:33:21 -0500 Subject: [PATCH] Removed code that dealt with ROM closure, since these don't exist. --- debug.c | 2 +- dispatch.c | 8 +------- gc.c | 1 - picobit-vm.c | 4 ---- picobit-vm.h | 3 +-- primitives.c | 13 +++---------- 6 files changed, 6 insertions(+), 25 deletions(-) diff --git a/debug.c b/debug.c index ecd5228..3690074 100644 --- 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"); } diff --git a/dispatch.c b/dispatch.c index d1edaa7..23d325c 100644 --- a/dispatch.c +++ b/dispatch.c @@ -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 --- 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)) { diff --git a/picobit-vm.c b/picobit-vm.c index 81bd323..bd16370 100644 --- a/picobit-vm.c +++ b/picobit-vm.c @@ -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 diff --git a/picobit-vm.h b/picobit-vm.h index 032027d..8f6e38e 100644 --- a/picobit-vm.h +++ b/picobit-vm.h @@ -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 /*---------------------------------------------------------------------------*/ diff --git a/primitives.c b/primitives.c index 7d263f2..8d33917 100644 --- a/primitives.c +++ b/primitives.c @@ -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); -- 2.11.4.GIT