diff --git a/src/c/alloc_2.d b/src/c/alloc_2.d index 3c7c73e6a..e7b306b99 100644 --- a/src/c/alloc_2.d +++ b/src/c/alloc_2.d @@ -212,6 +212,8 @@ ecl_alloc_instance(cl_index slots) i = ecl_alloc_object(t_instance); i->instance.slots = (cl_object *)ecl_alloc(sizeof(cl_object) * slots); i->instance.length = slots; + i->instance.entry = FEnot_funcallable_vararg; + i->instance.entry_fixed = FEnot_funcallable_fixed; return i; } diff --git a/src/c/compiler.d b/src/c/compiler.d index dcaa4f8f9..46878df66 100644 --- a/src/c/compiler.d +++ b/src/c/compiler.d @@ -176,6 +176,8 @@ asm_end(cl_index beginning) { bytecodes->bytecodes.data[i] = CAR(ENV->constants); ENV->constants = CDR(ENV->constants); } + bytecodes->bytecodes.entry = _ecl_bytecodes_dispatch_vararg; + bytecodes->bytecodes.entry_fixed = FEnot_a_fixed_no_arguments; asm_clear(beginning); return bytecodes; } diff --git a/src/c/gfun.d b/src/c/gfun.d index 9024c57e2..319130b90 100644 --- a/src/c/gfun.d +++ b/src/c/gfun.d @@ -21,8 +21,8 @@ static cl_object generic_function_dispatch_vararg(cl_narg, ...); -static cl_object -not_funcallable_fixed() +cl_object +FEnot_funcallable_fixed() { cl_env_ptr env = ecl_process_env(); cl_object fun = env->function; @@ -30,10 +30,10 @@ not_funcallable_fixed() @(return); } -static cl_object -not_funcallable_vararg(cl_narg narg, ...) +cl_object +FEnot_funcallable_vararg(cl_narg narg, ...) { - return not_funcallable_fixed(); + return FEnot_funcallable_fixed(); } static cl_object @@ -83,8 +83,8 @@ si_set_raw_funcallable(cl_object instance, cl_object function) instance->instance.slots = slots; instance->instance.length = length; instance->instance.isgf = 0; - instance->instance.entry = not_funcallable_vararg; - instance->instance.entry_fixed = not_funcallable_fixed; + instance->instance.entry = FEnot_funcallable_vararg; + instance->instance.entry_fixed = FEnot_funcallable_fixed; } } else { if (instance->instance.isgf == 0) { @@ -117,8 +117,8 @@ clos_set_funcallable_instance_function(cl_object x, cl_object function_or_t) x->instance.entry_fixed = FEnot_a_fixed_no_arguments; } else if (function_or_t == Cnil) { x->instance.isgf = ECL_NOT_FUNCALLABLE; - x->instance.entry = not_funcallable_vararg; - x->instance.entry_fixed = not_funcallable_fixed; + x->instance.entry = FEnot_funcallable_vararg; + x->instance.entry_fixed = FEnot_funcallable_fixed; } else if (Null(cl_functionp(function_or_t))) { FEwrong_type_argument(@'function', function_or_t); } else { diff --git a/src/c/instance.d b/src/c/instance.d index 8e4829f8a..c4f1d3a01 100644 --- a/src/c/instance.d +++ b/src/c/instance.d @@ -25,7 +25,7 @@ ecl_allocate_instance(cl_object clas, cl_index size) CLASS_OF(x) = clas; for (i = 0; i < size; i++) x->instance.slots[i] = ECL_UNBOUND; - return(x); + return x; } cl_object diff --git a/src/c/read.d b/src/c/read.d index f1bafab85..9bb162905 100644 --- a/src/c/read.d +++ b/src/c/read.d @@ -889,10 +889,15 @@ sharp_Y_reader(cl_object in, cl_object c, cl_object d) for ( i=0, nth=CAR(x) ; !ecl_endp(nth) ; i++, nth=CDR(nth) ) ((cl_object*)(rv->bytecodes.data))[i] = CAR(nth); + rv->bytecodes.entry = _ecl_bytecodes_dispatch_vararg; + rv->bytecodes.entry_fixed = FEnot_a_fixed_no_arguments; + if (lex != Cnil) { cl_object x = ecl_alloc_object(t_bclosure); x->bclosure.code = rv; x->bclosure.lex = lex; + x->bclosure.entry = _ecl_bclosure_dispatch_vararg; + x->bclosure.entry_fixed = FEnot_a_fixed_no_arguments; rv = x; } @(return rv); diff --git a/src/cmp/cmpenv.lsp b/src/cmp/cmpenv.lsp index b4b523229..874c36222 100644 --- a/src/cmp/cmpenv.lsp +++ b/src/cmp/cmpenv.lsp @@ -19,7 +19,8 @@ ;;; included in the compiled code. The default value is OFF. (defconstant +init-env-form+ - '((*compiler-in-use* t) + '((*gensym-counter* 0) + (*compiler-in-use* t) (*compiler-phase* 't1) (*callbacks* nil) (*max-temp* 0) diff --git a/src/h/internal.h b/src/h/internal.h index 1cc5d6083..2821ef3f3 100644 --- a/src/h/internal.h +++ b/src/h/internal.h @@ -179,6 +179,9 @@ extern void ecl_extend_hashtable(cl_object hashtable); #define GFUN_SPEC(x) ((x)->instance.slots[1]) #define GFUN_COMB(x) ((x)->instance.slots[2]) +extern cl_object FEnot_funcallable_fixed(); +extern cl_object FEnot_funcallable_vararg(); + /* package.d */ extern cl_object ecl_find_symbol_nolock(cl_object name, cl_object p, int *intern_flag);