Removed unused closure types

This commit is contained in:
Justin Ethier 2016-03-22 21:49:12 -04:00
parent ab73e63f64
commit 9889248cab
3 changed files with 1 additions and 99 deletions

49
gc.c
View file

@ -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++) {

View file

@ -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)))

View file

@ -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, "<procedure %p>",(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++) {