reduce hash creation by using update method

This commit is contained in:
Yukihiro "Matz" Matsumoto
2014-03-21 09:31:44 +09:00
parent 287f317f05
commit 2c44f96e78
3 changed files with 8 additions and 2 deletions
+1
View File
@@ -12,4 +12,5 @@ class Hash
end
alias each_pair each
alias update merge!
end
+5
View File
@@ -183,6 +183,11 @@ class Hash
}
h
end
def __update(h)
h.each{|k,v| self[k] = v}
self
end
end
##
+2 -2
View File
@@ -1513,7 +1513,7 @@ codegen(codegen_scope *s, node *tree, int val)
genop(s, MKOP_ABC(OP_HASH, cursp(), cursp(), len));
if (update) {
pop();
genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern_lit(s->mrb, "merge")), 1));
genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern_lit(s->mrb, "__update")), 1));
}
push();
update = TRUE;
@@ -1525,7 +1525,7 @@ codegen(codegen_scope *s, node *tree, int val)
genop(s, MKOP_ABC(OP_HASH, cursp(), cursp(), len));
if (update) {
pop();
genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern_lit(s->mrb, "merge")), 1));
genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern_lit(s->mrb, "__update")), 1));
}
push();
}