remove unneeded zero_sized/closure_size field
svn: r2187
This commit is contained in:
parent
9a6c225450
commit
692b99e636
|
@ -75,7 +75,8 @@
|
|||
easily-evaluated expressions, such as constrants and variable
|
||||
lookups. This can be viewed as a kind of half-way A-normalization.
|
||||
|
||||
Bytecodes are not linear, but actually trees of expression nodes.
|
||||
Bytecodes are not linear. They're actually trees of expression
|
||||
nodes.
|
||||
|
||||
Compilation:
|
||||
|
||||
|
@ -93,6 +94,12 @@
|
|||
are sometimes called the "prefix", and scheme_push_prefix()
|
||||
initializes the prefix portion of the stack.
|
||||
|
||||
Just-in-time compilation:
|
||||
|
||||
If the JIT is enabled, then `eval' processes a compiled expression
|
||||
one more time (functionally): `lambda' and `case-lambda' forms are
|
||||
converted to native-code generators, instead of bytecode variants.
|
||||
|
||||
*/
|
||||
|
||||
#include "schpriv.h"
|
||||
|
|
|
@ -639,12 +639,6 @@ scheme_make_closure(Scheme_Thread *p, Scheme_Object *code, int close)
|
|||
closure->so.type = scheme_closure_type;
|
||||
SCHEME_COMPILED_CLOS_CODE(closure) = data;
|
||||
|
||||
#ifdef MZ_PRECISE_GC
|
||||
closure->closure_size = i; /* needed for getting the object's size in bytes */
|
||||
#else
|
||||
closure->zero_sized = !i; /* info used for reporting certain arity errors */
|
||||
#endif
|
||||
|
||||
if (!close || !i)
|
||||
return (Scheme_Object *)closure;
|
||||
|
||||
|
@ -2120,6 +2114,9 @@ const char *scheme_get_proc_name(Scheme_Object *p, int *len, int for_error)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if (SCHEME_VECTORP(n))
|
||||
n = SCHEME_VEC_ELS(n)[0];
|
||||
|
||||
if (for_error < 0) {
|
||||
s = (char *)n;
|
||||
*len = -1;
|
||||
|
|
|
@ -782,36 +782,41 @@ int closed_prim_proc_FIXUP(void *p) {
|
|||
|
||||
int scm_closure_SIZE(void *p) {
|
||||
Scheme_Closure *c = (Scheme_Closure *)p;
|
||||
int closure_size = ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size;
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS((sizeof(Scheme_Closure)
|
||||
+ (c->closure_size - 1) * sizeof(Scheme_Object *)));
|
||||
+ (closure_size - 1) * sizeof(Scheme_Object *)));
|
||||
}
|
||||
|
||||
int scm_closure_MARK(void *p) {
|
||||
Scheme_Closure *c = (Scheme_Closure *)p;
|
||||
int closure_size = ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size;
|
||||
|
||||
int i = c->closure_size;
|
||||
|
||||
int i = closure_size;
|
||||
while (i--)
|
||||
gcMARK(c->vals[i]);
|
||||
gcMARK(c->code);
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS((sizeof(Scheme_Closure)
|
||||
+ (c->closure_size - 1) * sizeof(Scheme_Object *)));
|
||||
+ (closure_size - 1) * sizeof(Scheme_Object *)));
|
||||
}
|
||||
|
||||
int scm_closure_FIXUP(void *p) {
|
||||
Scheme_Closure *c = (Scheme_Closure *)p;
|
||||
int closure_size = ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size;
|
||||
|
||||
int i = c->closure_size;
|
||||
|
||||
int i = closure_size;
|
||||
while (i--)
|
||||
gcFIXUP(c->vals[i]);
|
||||
gcFIXUP(c->code);
|
||||
|
||||
return
|
||||
gcBYTES_TO_WORDS((sizeof(Scheme_Closure)
|
||||
+ (c->closure_size - 1) * sizeof(Scheme_Object *)));
|
||||
+ (closure_size - 1) * sizeof(Scheme_Object *)));
|
||||
}
|
||||
|
||||
#define scm_closure_IS_ATOMIC 0
|
||||
|
|
|
@ -293,16 +293,18 @@ closed_prim_proc {
|
|||
|
||||
scm_closure {
|
||||
Scheme_Closure *c = (Scheme_Closure *)p;
|
||||
int closure_size = ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size;
|
||||
|
||||
mark:
|
||||
int i = c->closure_size;
|
||||
|
||||
int i = closure_size;
|
||||
while (i--)
|
||||
gcMARK(c->vals[i]);
|
||||
gcMARK(c->code);
|
||||
|
||||
size:
|
||||
gcBYTES_TO_WORDS((sizeof(Scheme_Closure)
|
||||
+ (c->closure_size - 1) * sizeof(Scheme_Object *)));
|
||||
+ (closure_size - 1) * sizeof(Scheme_Object *)));
|
||||
}
|
||||
|
||||
case_closure {
|
||||
|
|
|
@ -1542,11 +1542,6 @@ int scheme_has_method_property(Scheme_Object *code);
|
|||
|
||||
typedef struct {
|
||||
Scheme_Object so;
|
||||
#ifdef MZ_PRECISE_GC
|
||||
int closure_size;
|
||||
#else
|
||||
short zero_sized;
|
||||
#endif
|
||||
Scheme_Closure_Data *code;
|
||||
Scheme_Object *vals[1];
|
||||
} Scheme_Closure;
|
||||
|
@ -1554,11 +1549,7 @@ typedef struct {
|
|||
#define SCHEME_COMPILED_CLOS_CODE(c) ((Scheme_Closure *)c)->code
|
||||
#define SCHEME_COMPILED_CLOS_ENV(c) ((Scheme_Closure *)c)->vals
|
||||
|
||||
#ifdef MZ_PRECISE_GC
|
||||
# define ZERO_SIZED_CLOSUREP(closure) !(closure->closure_size)
|
||||
#else
|
||||
# define ZERO_SIZED_CLOSUREP(closure) closure->zero_sized
|
||||
#endif
|
||||
#define ZERO_SIZED_CLOSUREP(closure) !(closure->code->closure_size)
|
||||
|
||||
typedef struct Scheme_Native_Closure_Data {
|
||||
MZTAG_IF_REQUIRED
|
||||
|
@ -1580,11 +1571,6 @@ typedef struct Scheme_Native_Closure_Data {
|
|||
|
||||
typedef struct {
|
||||
Scheme_Object so;
|
||||
#ifdef MZ_PRECISE_GC
|
||||
int closure_size;
|
||||
#else
|
||||
short zero_sized;
|
||||
#endif
|
||||
Scheme_Native_Closure_Data *code;
|
||||
Scheme_Object *vals[1];
|
||||
} Scheme_Native_Closure;
|
||||
|
|
Loading…
Reference in New Issue
Block a user