mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +02:00
* compile.c (NODE_NEXT, NODE_REDO): add dummy putnil instruction to
fix stack consistency error. [ruby-core:28172] * bootstraptest/test_jump.rb: add a test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
7c7a7c1205
commit
adfe4f3930
3 changed files with 24 additions and 0 deletions
|
@ -3359,6 +3359,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
|
|||
ADD_ADJUST(ret, nd_line(node), iseq->compile_data->redo_label);
|
||||
ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->start_label);
|
||||
ADD_ADJUST_RESTORE(ret, splabel);
|
||||
if (!poped) {
|
||||
ADD_INSN(ret, nd_line(node), putnil);
|
||||
}
|
||||
}
|
||||
else if (iseq->compile_data->end_label) {
|
||||
LABEL *splabel = NEW_LABEL(0);
|
||||
|
@ -3424,6 +3427,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
|
|||
add_ensure_iseq(ret, iseq, 0);
|
||||
ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->redo_label);
|
||||
ADD_ADJUST_RESTORE(ret, splabel);
|
||||
if (!poped) {
|
||||
ADD_INSN(ret, nd_line(node), putnil);
|
||||
}
|
||||
}
|
||||
else if (iseq->type == ISEQ_TYPE_EVAL) {
|
||||
redo_in_eval:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue