changed some names of field selectors
This commit is contained in:
@@ -111,23 +111,23 @@ void code_val(e) register struct expr *e;
|
||||
case E_VAR: {
|
||||
register struct symbol *var=e->u.var;
|
||||
|
||||
if (var->type&T_BUILTIN)
|
||||
Loe(var->info.vc.st.builtin, var->info.vc.offset);
|
||||
if (var->s_type&T_BUILTIN)
|
||||
Loe(var->s_info.vc.st.builtin, var->s_info.vc.offset);
|
||||
else
|
||||
if (var->info.vc.st.level==curr_level)
|
||||
if (var->type&T_PARAM && (var->type&T_TYPE)!=T_VALUE)
|
||||
Lil(var->info.vc.offset);
|
||||
if (var->s_info.vc.st.level==curr_level)
|
||||
if (var->s_type&T_PARAM && (var->s_type&T_TYPE)!=T_VALUE)
|
||||
Lil(var->s_info.vc.offset);
|
||||
else
|
||||
Lol(var->info.vc.offset);
|
||||
Lol(var->s_info.vc.offset);
|
||||
else {
|
||||
if (var->info.vc.offset<0)
|
||||
lxl(curr_level-var->info.vc.st.level);
|
||||
if (var->s_info.vc.offset<0)
|
||||
lxl(curr_level-var->s_info.vc.st.level);
|
||||
else
|
||||
lxa(curr_level-var->info.vc.st.level);
|
||||
if (var->type&T_PARAM && (var->type&T_TYPE)!=T_VALUE)
|
||||
Lif(var->info.vc.offset);
|
||||
lxa(curr_level-var->s_info.vc.st.level);
|
||||
if (var->s_type&T_PARAM && (var->s_type&T_TYPE)!=T_VALUE)
|
||||
Lif(var->s_info.vc.offset);
|
||||
else
|
||||
Lof(var->info.vc.offset);
|
||||
Lof(var->s_info.vc.offset);
|
||||
}
|
||||
}break;
|
||||
case E_CONST:
|
||||
@@ -233,25 +233,25 @@ void code_addr(e) register struct expr *e;
|
||||
case E_VAR: { /* variable or channel */
|
||||
register struct symbol *var=e->u.var;
|
||||
|
||||
if (var->type&T_BUILTIN)
|
||||
lae(var->info.vc.st.builtin, var->info.vc.offset);
|
||||
if (var->s_type&T_BUILTIN)
|
||||
lae(var->s_info.vc.st.builtin, var->s_info.vc.offset);
|
||||
else
|
||||
if (var->info.vc.st.level==curr_level)
|
||||
if (var->type&T_PARAM
|
||||
&& (var->type&(T_TYPE|T_ARR))!=T_VALUE)
|
||||
Lolp(var->info.vc.offset);
|
||||
if (var->s_info.vc.st.level==curr_level)
|
||||
if (var->s_type&T_PARAM
|
||||
&& (var->s_type&(T_TYPE|T_ARR))!=T_VALUE)
|
||||
Lolp(var->s_info.vc.offset);
|
||||
else
|
||||
lal(var->info.vc.offset);
|
||||
lal(var->s_info.vc.offset);
|
||||
else {
|
||||
if (var->info.vc.offset<0)
|
||||
lxl(curr_level-var->info.vc.st.level);
|
||||
if (var->s_info.vc.offset<0)
|
||||
lxl(curr_level-var->s_info.vc.st.level);
|
||||
else
|
||||
lxa(curr_level-var->info.vc.st.level);
|
||||
if (var->type&T_PARAM
|
||||
&& (var->type&(T_TYPE|T_ARR))!=T_VALUE)
|
||||
Lofp(var->info.vc.offset);
|
||||
lxa(curr_level-var->s_info.vc.st.level);
|
||||
if (var->s_type&T_PARAM
|
||||
&& (var->s_type&(T_TYPE|T_ARR))!=T_VALUE)
|
||||
Lofp(var->s_info.vc.offset);
|
||||
else
|
||||
adp(var->info.vc.offset);
|
||||
adp(var->s_info.vc.offset);
|
||||
}
|
||||
} break;
|
||||
case E_TABLE:
|
||||
@@ -440,12 +440,12 @@ void code_void(e) register struct expr *e;
|
||||
break;
|
||||
case E_CALL: {
|
||||
register size=0;
|
||||
register struct expr_list *elp=e->u.call.args;
|
||||
register struct symbol *proc=e->u.call.proc->u.var;
|
||||
register struct par_list *pars=proc->info.proc.pars;
|
||||
register struct expr_list *elp=e->u.call.c_args;
|
||||
register struct symbol *proc=e->u.call.c_proc->u.var;
|
||||
register struct par_list *pars=proc->s_info.proc.pars;
|
||||
|
||||
while (elp!=nil) {
|
||||
if (pars->type==T_VALUE) {
|
||||
if (pars->pr_type==T_VALUE) {
|
||||
code_val(elp->arg);
|
||||
size+=vz;
|
||||
} else {
|
||||
@@ -453,27 +453,27 @@ void code_void(e) register struct expr *e;
|
||||
size+=pz;
|
||||
}
|
||||
elp=elp->next;
|
||||
pars=pars->next;
|
||||
pars=pars->pr_next;
|
||||
}
|
||||
if (proc->type&T_BUILTIN) {
|
||||
cal(proc->info.proc.st.builtin);
|
||||
if (proc->s_type&T_BUILTIN) {
|
||||
cal(proc->s_info.proc.st.builtin);
|
||||
asp(size);
|
||||
} else {
|
||||
if (proc->info.proc.st.level>curr_level) {
|
||||
if (proc->s_info.proc.st.level>curr_level) {
|
||||
/* Call down */
|
||||
lor0();
|
||||
} else
|
||||
if (proc->info.proc.st.level==curr_level) {
|
||||
if (proc->s_info.proc.st.level==curr_level) {
|
||||
/* Call at same level */
|
||||
Lolp(0);
|
||||
} else {
|
||||
/* Call up */
|
||||
lxa(curr_level-proc->info.proc.st.level);
|
||||
lxa(curr_level-proc->s_info.proc.st.level);
|
||||
loi(pz);
|
||||
}
|
||||
cal(proc_label(proc->info.proc.label, proc->name));
|
||||
cal(proc_label(proc->s_info.proc.label, proc->s_name));
|
||||
asp(size+pz);
|
||||
if (proc->info.proc.file!=curr_file) fil();
|
||||
if (proc->s_info.proc.file!=curr_file) fil();
|
||||
}
|
||||
} break;
|
||||
}
|
||||
@@ -486,11 +486,11 @@ void prologue(proc) register struct symbol *proc;
|
||||
|
||||
if (err) return;
|
||||
|
||||
proc->info.proc.st.level= ++curr_level;
|
||||
proc->info.proc.file= curr_file;
|
||||
proc->info.proc.label= ++P;
|
||||
proc->s_info.proc.st.level= ++curr_level;
|
||||
proc->s_info.proc.file= curr_file;
|
||||
proc->s_info.proc.label= ++P;
|
||||
curr_offset=min_offset=0;
|
||||
pro(proc_label(proc->info.proc.label, proc->name));
|
||||
pro(proc_label(proc->s_info.proc.label, proc->s_name));
|
||||
if (curr_level==1) fil();
|
||||
}
|
||||
|
||||
@@ -515,7 +515,7 @@ void rep_init(v, e1, e2, r_info)
|
||||
r_info->BEGIN=r_info->END=0;
|
||||
|
||||
code_val(e1);
|
||||
Stl(v->info.vc.offset);
|
||||
Stl(v->s_info.vc.offset);
|
||||
|
||||
if (!constant(e1) || !constant(e2)) {
|
||||
if (constant(e2) && word_constant(e2->u.const)) {
|
||||
@@ -540,10 +540,10 @@ void rep_test(v, e1, e2, r_info)
|
||||
{
|
||||
if (err) return;
|
||||
|
||||
Inl(v->info.vc.offset);
|
||||
Inl(v->s_info.vc.offset);
|
||||
|
||||
if (constant(e1) && constant(e2)) {
|
||||
Lol(v->info.vc.offset);
|
||||
Lol(v->s_info.vc.offset);
|
||||
Loc(e1->u.const+e2->u.const);
|
||||
if (vz>wz) {
|
||||
cmi();
|
||||
|
||||
Reference in New Issue
Block a user