summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2015-06-01 21:40:11 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2015-06-01 21:40:11 +0900
commit214bc3c95a9e01a7be4d76e94d80be9d9d59bd4b (patch)
tree86d7753dd1f3ac31b1cb0a0fa5823712932db445
parentddab53e66f2898e178e4e037831f288bdc4bfa0f (diff)
parent7e8fb15457f08faf0fd6b7e1d0823140ecee2a60 (diff)
downloadmruby-214bc3c95a9e01a7be4d76e94d80be9d9d59bd4b.tar.gz
mruby-214bc3c95a9e01a7be4d76e94d80be9d9d59bd4b.zip
Merge pull request #2819 from cremno/only-genop-non-lvar-gets-in-val-mode
only generate gets of non-local vars in VAL mode
-rw-r--r--src/codegen.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/codegen.c b/src/codegen.c
index be630b9a8..16233347c 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -1911,7 +1911,7 @@ codegen(codegen_scope *s, node *tree, int val)
break;
case NODE_GVAR:
- {
+ if (val) {
int sym = new_sym(s, sym(tree));
genop(s, MKOP_ABx(OP_GETGLOBAL, cursp(), sym));
@@ -1920,7 +1920,7 @@ codegen(codegen_scope *s, node *tree, int val)
break;
case NODE_IVAR:
- {
+ if (val) {
int sym = new_sym(s, sym(tree));
genop(s, MKOP_ABx(OP_GETIV, cursp(), sym));
@@ -1929,7 +1929,7 @@ codegen(codegen_scope *s, node *tree, int val)
break;
case NODE_CVAR:
- {
+ if (val) {
int sym = new_sym(s, sym(tree));
genop(s, MKOP_ABx(OP_GETCV, cursp(), sym));
@@ -1951,7 +1951,7 @@ codegen(codegen_scope *s, node *tree, int val)
break;
case NODE_BACK_REF:
- {
+ if (val) {
char buf[2] = { '$' };
mrb_value str;
int sym;
@@ -1965,7 +1965,7 @@ codegen(codegen_scope *s, node *tree, int val)
break;
case NODE_NTH_REF:
- {
+ if (val) {
int sym;
mrb_state *mrb = s->mrb;
mrb_value fix = mrb_fixnum_value((intptr_t)tree);