summaryrefslogtreecommitdiff
path: root/compile.c
diff options
context:
space:
mode:
Diffstat (limited to 'compile.c')
-rw-r--r--compile.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/compile.c b/compile.c
index 5455bd7034..54a806ed99 100644
--- a/compile.c
+++ b/compile.c
@@ -2345,6 +2345,11 @@ defined_expr(yarv_iseq_t *iseq, LINK_ANCHOR *ret,
ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_IVAR),
ID2SYM(node->nd_vid), needstr);
return 1;
+ case NODE_IVAR2:
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN3(ret, nd_line(node), defined, INT2FIX(DEFINED_IVAR2),
+ ID2SYM(node->nd_vid), needstr);
+ return 1;
case NODE_GVAR:
ADD_INSN(ret, nd_line(node), putnil);
@@ -3327,6 +3332,15 @@ iseq_compile_each(yarv_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
ID2SYM(node->nd_vid));
break;
}
+ case NODE_IASGN2:{
+ COMPILE(ret, "lvalue", node->nd_value);
+ if (!poped) {
+ ADD_INSN(ret, nd_line(node), dup);
+ }
+ ADD_INSN1(ret, nd_line(node), setinstancevariable2,
+ ID2SYM(node->nd_vid));
+ break;
+ }
case NODE_CDECL:{
COMPILE(ret, "lvalue", node->nd_value);
@@ -3903,6 +3917,14 @@ iseq_compile_each(yarv_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
}
break;
}
+ case NODE_IVAR2:{
+ debugi("nd_vid", node->nd_vid);
+ if (!poped) {
+ ADD_INSN1(ret, nd_line(node), getinstancevariable2,
+ ID2SYM(node->nd_vid));
+ }
+ break;
+ }
case NODE_CONST:{
debugi("nd_vid", node->nd_vid);