diff --git a/gc.c b/gc.c index b4bd726c..c1b402c6 100644 --- a/gc.c +++ b/gc.c @@ -252,39 +252,6 @@ char *gc_copy_obj(object dest, char *obj, gc_thread_data *thd) hp->elt1 = ((closure1) obj)->elt1; return (char *)hp; } - case closure2_tag: { - closure2_type *hp = dest; - mark(hp) = thd->gc_alloc_color; - type_of(hp) = closure2_tag; - hp->fn = ((closure2) obj)->fn; - hp->num_args = ((closure2) obj)->num_args; - hp->elt1 = ((closure2) obj)->elt1; - hp->elt2 = ((closure2) obj)->elt2; - return (char *)hp; - } - case closure3_tag: { - closure3_type *hp = dest; - mark(hp) = thd->gc_alloc_color; - type_of(hp) = closure3_tag; - hp->fn = ((closure3) obj)->fn; - hp->num_args = ((closure3) obj)->num_args; - hp->elt1 = ((closure3) obj)->elt1; - hp->elt2 = ((closure3) obj)->elt2; - hp->elt3 = ((closure3) obj)->elt3; - return (char *)hp; - } - case closure4_tag: { - closure4_type *hp = dest; - mark(hp) = thd->gc_alloc_color; - type_of(hp) = closure4_tag; - hp->fn = ((closure4) obj)->fn; - hp->num_args = ((closure4) obj)->num_args; - hp->elt1 = ((closure4) obj)->elt1; - hp->elt2 = ((closure4) obj)->elt2; - hp->elt3 = ((closure4) obj)->elt3; - hp->elt4 = ((closure4) obj)->elt4; - return (char *)hp; - } case closureN_tag: { int i; closureN_type *hp = dest; @@ -476,9 +443,6 @@ size_t gc_allocated_bytes(object obj, gc_free_list *q, gc_free_list *r) if (t == macro_tag) return gc_heap_align(sizeof(macro_type)); if (t == closure0_tag) return gc_heap_align(sizeof(closure0_type)); if (t == closure1_tag) return gc_heap_align(sizeof(closure1_type)); - if (t == closure2_tag) return gc_heap_align(sizeof(closure2_type)); - if (t == closure3_tag) return gc_heap_align(sizeof(closure3_type)); - if (t == closure4_tag) return gc_heap_align(sizeof(closure4_type)); if (t == closureN_tag){ return gc_heap_align(sizeof(closureN_type) + sizeof(object) * ((closureN_type *)obj)->num_elt); } @@ -990,19 +954,6 @@ void gc_mark_black(object obj) case closure1_tag: gc_collector_mark_gray(obj, ((closure1) obj)->elt1); break; - case closure2_tag: - gc_collector_mark_gray(obj, ((closure2) obj)->elt1); - gc_collector_mark_gray(obj, ((closure2) obj)->elt2); - case closure3_tag: - gc_collector_mark_gray(obj, ((closure3) obj)->elt1); - gc_collector_mark_gray(obj, ((closure3) obj)->elt2); - gc_collector_mark_gray(obj, ((closure3) obj)->elt3); - case closure4_tag: - gc_collector_mark_gray(obj, ((closure4) obj)->elt1); - gc_collector_mark_gray(obj, ((closure4) obj)->elt2); - gc_collector_mark_gray(obj, ((closure4) obj)->elt3); - gc_collector_mark_gray(obj, ((closure4) obj)->elt4); - break; case closureN_tag: { int i, n = ((closureN) obj)->num_elt; for (i = 0; i < n; i++) { diff --git a/include/cyclone/types.h b/include/cyclone/types.h index 16783f20..a8ec4499 100644 --- a/include/cyclone/types.h +++ b/include/cyclone/types.h @@ -172,9 +172,6 @@ typedef long tag_type; #define forward_tag 2 #define closure0_tag 3 #define closure1_tag 4 -#define closure2_tag 5 -#define closure3_tag 6 -#define closure4_tag 7 #define closureN_tag 8 #define integer_tag 9 #define double_tag 10 @@ -344,16 +341,10 @@ cons_type n; n.hdr.mark = gc_color_red; n.hdr.grayed = 0; n.tag = cons_tag; n.co typedef struct {gc_header_type hdr; tag_type tag; function_type fn; int num_args; } macro_type; typedef struct {gc_header_type hdr; tag_type tag; function_type fn; int num_args; } closure0_type; typedef struct {gc_header_type hdr; tag_type tag; function_type fn; int num_args; object elt1;} closure1_type; -typedef struct {gc_header_type hdr; tag_type tag; function_type fn; int num_args; object elt1,elt2;} closure2_type; -typedef struct {gc_header_type hdr; tag_type tag; function_type fn; int num_args; object elt1,elt2,elt3;} closure3_type; -typedef struct {gc_header_type hdr; tag_type tag; function_type fn; int num_args; object elt1,elt2,elt3,elt4;} closure4_type; typedef struct {gc_header_type hdr; tag_type tag; function_type fn; int num_args; int num_elt; object *elts;} closureN_type; typedef closure0_type *closure0; typedef closure1_type *closure1; -typedef closure2_type *closure2; -typedef closure3_type *closure3; -typedef closure4_type *closure4; typedef closureN_type *closureN; typedef closure0_type *closure; typedef closure0_type *macro; @@ -362,12 +353,6 @@ typedef closure0_type *macro; #define mclosure0(c,f) closure0_type c; c.hdr.mark = gc_color_red; c.hdr.grayed = 0; c.tag = closure0_tag; c.fn = f; c.num_args = -1; #define mclosure1(c,f,a) closure1_type c; c.hdr.mark = gc_color_red; c.hdr.grayed = 0; c.tag = closure1_tag; \ c.fn = f; c.num_args = -1; c.elt1 = a; -#define mclosure2(c,f,a1,a2) closure2_type c; c.hdr.mark = gc_color_red; c.hdr.grayed = 0; c.tag = closure2_tag; \ - c.fn = f; c.num_args = -1; c.elt1 = a1; c.elt2 = a2; -#define mclosure3(c,f,a1,a2,a3) closure3_type c; c.hdr.mark = gc_color_red; c.hdr.grayed = 0; c.tag = closure3_tag; \ - c.fn = f; c.num_args = -1; c.elt1 = a1; c.elt2 = a2; c.elt3 = a3; -#define mclosure4(c,f,a1,a2,a3,a4) closure4_type c; c.hdr.mark = gc_color_red; c.hdr.grayed = 0; c.tag = closure4_tag; \ - c.fn = f; c.num_args = -1; c.elt1 = a1; c.elt2 = a2; c.elt3 = a3; c.elt4 = a4; #define mlist1(e1) (mcons(e1,nil)) #define mlist2(e2,e1) (mcons(e2,mlist1(e1))) diff --git a/runtime.c b/runtime.c index 28ed4def..ab7957ec 100644 --- a/runtime.c +++ b/runtime.c @@ -540,9 +540,6 @@ object Cyc_display(object x, FILE *port) break; case closure0_tag: case closure1_tag: - case closure2_tag: - case closure3_tag: - case closure4_tag: case closureN_tag: fprintf(port, "",(void *)((closure) x)->fn); break; @@ -874,9 +871,6 @@ object Cyc_is_procedure(void *data, object o) { tag = type_of(o); if (tag == closure0_tag || tag == closure1_tag || - tag == closure2_tag || - tag == closure3_tag || - tag == closure4_tag || tag == closureN_tag || tag == primitive_tag) { return boolean_t; @@ -2079,7 +2073,7 @@ void _display(void *data, object cont, object args) { void _call_95cc(void *data, object cont, object args){ Cyc_check_num_args(data, "call/cc", 1, args); if (eq(boolean_f, Cyc_is_procedure(data, car(args)))) { - Cyc_invalid_type_error(data, closure2_tag, car(args)); + Cyc_invalid_type_error(data, closure1_tag, car(args)); } return_closcall2(data, __glo_call_95cc, cont, car(args)); } @@ -2110,9 +2104,6 @@ object apply(void *data, object cont, object func, object args){ case macro_tag: case closure0_tag: case closure1_tag: - case closure2_tag: - case closure3_tag: - case closure4_tag: case closureN_tag: count = Cyc_length(data, args); // TODO: validate number of args provided: @@ -2300,18 +2291,6 @@ char *gc_move(char *obj, gc_thread_data *thd, int *alloci, int *heap_grown) { closure1_type *hp = gc_alloc(Cyc_heap, sizeof(closure1_type), obj, thd, heap_grown); return gc_fixup_moved_obj(thd, alloci, obj, hp); } - case closure2_tag: { - closure2_type *hp = gc_alloc(Cyc_heap, sizeof(closure2_type), obj, thd, heap_grown); - return gc_fixup_moved_obj(thd, alloci, obj, hp); - } - case closure3_tag: { - closure3_type *hp = gc_alloc(Cyc_heap, sizeof(closure3_type), obj, thd, heap_grown); - return gc_fixup_moved_obj(thd, alloci, obj, hp); - } - case closure4_tag: { - closure4_type *hp = gc_alloc(Cyc_heap, sizeof(closure4_type), obj, thd, heap_grown); - return gc_fixup_moved_obj(thd, alloci, obj, hp); - } case closureN_tag: { closureN_type *hp = gc_alloc(Cyc_heap, sizeof(closureN_type) + sizeof(object) * (((closureN) obj)->num_elt), @@ -2451,19 +2430,6 @@ int gc_minor(void *data, object low_limit, object high_limit, closure cont, obje case closure1_tag: gc_move2heap(((closure1) obj)->elt1); break; - case closure2_tag: - gc_move2heap(((closure2) obj)->elt1); - gc_move2heap(((closure2) obj)->elt2); - case closure3_tag: - gc_move2heap(((closure3) obj)->elt1); - gc_move2heap(((closure3) obj)->elt2); - gc_move2heap(((closure3) obj)->elt3); - case closure4_tag: - gc_move2heap(((closure4) obj)->elt1); - gc_move2heap(((closure4) obj)->elt2); - gc_move2heap(((closure4) obj)->elt3); - gc_move2heap(((closure4) obj)->elt4); - break; case closureN_tag: { int i, n = ((closureN) obj)->num_elt; for (i = 0; i < n; i++) {