throw out attempt at more laziness in phase instantiation

keep some related refactoring, though
This commit is contained in:
Matthew Flatt 2010-06-30 10:20:02 -06:00
parent cd95e082d7
commit 128d86da1f
4 changed files with 1 additions and 45 deletions

View File

@ -3980,7 +3980,6 @@ static void chain_start_module(Scheme_Env *menv, Scheme_Env *env, int eval_exp,
{
Scheme_Object *new_cycle_list, *midx, *l;
Scheme_Module *im;
int max_template_depth = 1;
new_cycle_list = scheme_make_pair(menv->module->modname, cycle_list);
@ -4018,9 +4017,6 @@ static void chain_start_module(Scheme_Env *menv, Scheme_Env *env, int eval_exp,
midx,
eval_exp, eval_run, base_phase,
new_cycle_list);
if ((im->template_depth + 1) > max_template_depth)
max_template_depth = im->template_depth + 1;
}
}
@ -4032,9 +4028,6 @@ static void chain_start_module(Scheme_Env *menv, Scheme_Env *env, int eval_exp,
im = module_load(scheme_module_resolve(midx, 1), env, NULL);
start_module(im, env, 0, midx, eval_exp, eval_run, base_phase, new_cycle_list);
if (im->template_depth > max_template_depth)
max_template_depth = im->template_depth;
}
scheme_prepare_exp_env(menv);
@ -4049,9 +4042,6 @@ static void chain_start_module(Scheme_Env *menv, Scheme_Env *env, int eval_exp,
im = module_load(scheme_module_resolve(midx, 1), env, NULL);
start_module(im, menv->exp_env, 0, midx, eval_exp, eval_run, base_phase, new_cycle_list);
if ((im->template_depth - 1) > max_template_depth)
max_template_depth = im->template_depth - 1;
}
}
@ -4086,9 +4076,6 @@ static void chain_start_module(Scheme_Env *menv, Scheme_Env *env, int eval_exp,
midx,
eval_exp, eval_run, base_phase,
new_cycle_list);
if ((im->template_depth - SCHEME_INT_VAL(phase)) > max_template_depth)
max_template_depth = im->template_depth - SCHEME_INT_VAL(phase);
}
} else {
compute_require_names(menv, phase, env, syntax_idx);
@ -4110,26 +4097,11 @@ static void chain_start_module(Scheme_Env *menv, Scheme_Env *env, int eval_exp,
im = module_load(scheme_module_resolve(midx, 1), env, NULL);
start_module(im, menv2, 0, midx, eval_exp, eval_run, base_phase, new_cycle_list);
if ((im->template_depth - SCHEME_INT_VAL(phase)) > max_template_depth)
max_template_depth = im->template_depth - SCHEME_INT_VAL(phase);
}
}
}
}
}
if (max_template_depth > menv->module->template_depth)
menv->module->template_depth = max_template_depth;
if (!env->module_registry->cycled) {
Scheme_Hash_Table *ht;
ht = scheme_make_hash_table(SCHEME_hash_ptr);
env->module_registry->cycled = ht;
}
scheme_hash_set(env->module_registry->cycled,
menv->module->modname,
scheme_true);
}
typedef struct Start_Module_Args {
@ -4431,17 +4403,7 @@ static void start_module(Scheme_Module *m, Scheme_Env *env, int restart,
menv->did_starts = v;
}
if ((env->phase > base_phase)
&& menv->module->template_depth
&& ((env->phase - (menv->module->template_depth - 1)) > (base_phase + 2))
&& env->module_registry->cycled
&& scheme_hash_get(env->module_registry->cycled,
menv->module->modname)) {
/* Skip chain start, because we won't get back to the base phase,
and we've already traversed the module's imports before to load
any needed modules. */
} else
chain_start_module_w_push(menv, env, eval_exp, eval_run, base_phase, cycle_list, syntax_idx);
chain_start_module_w_push(menv, env, eval_exp, eval_run, base_phase, cycle_list, syntax_idx);
if (restart) {
if (menv->rename_set_ready) {

View File

@ -2184,7 +2184,6 @@ static int module_reg_val_MARK(void *p, struct NewGC *gc) {
Scheme_Module_Registry *r = (Scheme_Module_Registry *)p;
gcMARK2(r->loaded, gc);
gcMARK2(r->exports, gc);
gcMARK2(r->cycled, gc);
return
gcBYTES_TO_WORDS(sizeof(Scheme_Module_Registry));
}
@ -2193,7 +2192,6 @@ static int module_reg_val_FIXUP(void *p, struct NewGC *gc) {
Scheme_Module_Registry *r = (Scheme_Module_Registry *)p;
gcFIXUP2(r->loaded, gc);
gcFIXUP2(r->exports, gc);
gcFIXUP2(r->cycled, gc);
return
gcBYTES_TO_WORDS(sizeof(Scheme_Module_Registry));
}

View File

@ -872,7 +872,6 @@ module_reg_val {
Scheme_Module_Registry *r = (Scheme_Module_Registry *)p;
gcMARK2(r->loaded, gc);
gcMARK2(r->exports, gc);
gcMARK2(r->cycled, gc);
size:
gcBYTES_TO_WORDS(sizeof(Scheme_Module_Registry));
}

View File

@ -2769,7 +2769,6 @@ typedef struct Scheme_Module_Registry {
Scheme_Hash_Table *loaded; /* symbol -> module ; loaded modules,
shared with modules in same space */
Scheme_Hash_Table *exports; /* symbol -> module-exports */
Scheme_Hash_Table *cycled; /* resolved module paths that have been traversed */
} Scheme_Module_Registry;
struct Scheme_Env {
@ -2878,8 +2877,6 @@ typedef struct Scheme_Module
Scheme_Env *primitive;
Scheme_Object *rn_stx;
long template_depth;
} Scheme_Module;
typedef struct Scheme_Module_Phase_Exports