Skip to content

Commit 9665bc7

Browse files
committed
Stop initializing local variables to nil
1 parent dc5555d commit 9665bc7

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

insns.def

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,13 @@ getlocal
7979
()
8080
(VALUE val)
8181
{
82-
val = *(vm_get_ep(GET_EP(), level) - idx);
82+
// printf("getlocal\n");
83+
const VALUE *ep = vm_get_ep(GET_EP(), level);
84+
val = *(ep - idx);
85+
if (val == Qundef) {
86+
printf("Assigning to nil in getlocal\n");
87+
val = Qnil;
88+
}
8389
RB_DEBUG_COUNTER_INC(lvar_get);
8490
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
8591
}

vm_insnhelper.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,8 +399,10 @@ vm_push_frame(rb_execution_context_t *ec,
399399

400400
/* initialize local variables */
401401
for (int i=0; i < local_size; i++) {
402-
*sp++ = Qnil;
402+
// *sp++ = Qnil;
403+
// printf("in vm_push_frame, local_size: %d\n", local_size);
403404
}
405+
sp += local_size;
404406

405407
/* setup ep with managing data */
406408
*sp++ = cref_or_me; /* ep[-2] / Qnil or T_IMEMO(cref) or T_IMEMO(ment) */

0 commit comments

Comments
 (0)