зеркало из https://github.com/github/ruby.git
use rb_iseq_check() for USE_LAZY_LOAD, too.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
3261cfd881
Коммит
ccc388d806
|
@ -1334,7 +1334,7 @@ static inline const rb_iseq_t *
|
||||||
vm_block_iseq(const struct rb_block *block)
|
vm_block_iseq(const struct rb_block *block)
|
||||||
{
|
{
|
||||||
switch (vm_block_type(block)) {
|
switch (vm_block_type(block)) {
|
||||||
case block_type_iseq: return block->as.captured.code.iseq;
|
case block_type_iseq: return rb_iseq_check(block->as.captured.code.iseq);
|
||||||
case block_type_proc: return vm_proc_iseq(block->as.proc);
|
case block_type_proc: return vm_proc_iseq(block->as.proc);
|
||||||
case block_type_ifunc:
|
case block_type_ifunc:
|
||||||
case block_type_symbol: return NULL;
|
case block_type_symbol: return NULL;
|
||||||
|
|
|
@ -2562,7 +2562,7 @@ vm_invoke_iseq_block(rb_thread_t *th, rb_control_frame_t *reg_cfp,
|
||||||
struct rb_calling_info *calling, const struct rb_call_info *ci,
|
struct rb_calling_info *calling, const struct rb_call_info *ci,
|
||||||
int is_lambda, const struct rb_captured_block *captured)
|
int is_lambda, const struct rb_captured_block *captured)
|
||||||
{
|
{
|
||||||
const rb_iseq_t *iseq = captured->code.iseq;
|
const rb_iseq_t *iseq = rb_iseq_check(captured->code.iseq);
|
||||||
const int arg_size = iseq->body->param.size;
|
const int arg_size = iseq->body->param.size;
|
||||||
VALUE * const rsp = GET_SP() - calling->argc;
|
VALUE * const rsp = GET_SP() - calling->argc;
|
||||||
int opt_pc = vm_callee_setup_block_arg(th, calling, ci, iseq, rsp, is_lambda ? arg_setup_lambda : arg_setup_block);
|
int opt_pc = vm_callee_setup_block_arg(th, calling, ci, iseq, rsp, is_lambda ? arg_setup_lambda : arg_setup_block);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче