mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-02 07:30:55 -08:00
Avoid using field lex_env in frame stack records, at least for blocks
This commit is contained in:
parent
33a53695cf
commit
2c3a2f33a6
1 changed files with 3 additions and 2 deletions
|
|
@ -1051,22 +1051,23 @@ ecl_interpret(cl_object env, cl_object bytecodes, void *pc)
|
|||
DO_BLOCK: {
|
||||
cl_opcode *exit;
|
||||
GET_LABEL(exit, vector);
|
||||
cl_stack_push(cl_env.lex_env);
|
||||
cl_stack_push((cl_object)exit);
|
||||
if (frs_push(reg1) == 0) {
|
||||
cl_env.lex_env = CONS(CONS(reg1, reg0), cl_env.lex_env);
|
||||
} else {
|
||||
reg0 = VALUES(0);
|
||||
cl_env.lex_env = cl_env.frs_top->frs_lex;
|
||||
frs_pop();
|
||||
vector = (cl_opcode *)cl_stack_pop(); /* FIXME! */
|
||||
cl_env.lex_env = cl_stack_pop();
|
||||
}
|
||||
THREAD_NEXT;
|
||||
}
|
||||
CASE(OP_EXIT_FRAME); {
|
||||
bds_unwind(cl_env.frs_top->frs_bds_top);
|
||||
cl_env.lex_env = cl_env.frs_top->frs_lex;
|
||||
frs_pop();
|
||||
cl_stack_pop();
|
||||
cl_env.lex_env = cl_stack_pop();
|
||||
THREAD_NEXT;
|
||||
}
|
||||
/* OP_TAGBODY n{arg}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue