summaryrefslogtreecommitdiff
path: root/tool/ruby_vm/views/_insn_entry.erb
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-06-27 09:28:09 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-06-27 09:28:09 +0000
commit6b534134a78e3e43c344682c3585e1abab015216 (patch)
treed11c5c2df90dd40086ab6e189e856219b1be098a /tool/ruby_vm/views/_insn_entry.erb
parent8222d794f3ecf6cd93d537ee2f214b86975d1efc (diff)
downloadruby-6b534134a78e3e43c344682c3585e1abab015216.tar.gz
give up insn attr handles_frame
I introduced this mechanism in r62051 to speed things up. Later it was reported that the change causes problems. I searched for workarounds but nothing seemed appropriate. I hereby officially give it up. The idea to move ADD_PC around was a mistake. Fixes [Bug #14809] and [Bug #14834]. Signed-off-by: Urabe, Shyouhei <shyouhei@ruby-lang.org> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool/ruby_vm/views/_insn_entry.erb')
-rw-r--r--tool/ruby_vm/views/_insn_entry.erb13
1 files changed, 1 insertions, 12 deletions
diff --git a/tool/ruby_vm/views/_insn_entry.erb b/tool/ruby_vm/views/_insn_entry.erb
index 2118dece86..836ca32b6b 100644
--- a/tool/ruby_vm/views/_insn_entry.erb
+++ b/tool/ruby_vm/views/_insn_entry.erb
@@ -29,28 +29,17 @@ INSN_ENTRY(<%= insn.name %>)
<%= pop[:name] %> = <%= insn.cast_from_VALUE pop, "TOPN(#{i})"%>;
% end
DEBUG_ENTER_INSN(INSN_ATTR(name));
-% if insn.handles_frame?
ADD_PC(INSN_ATTR(width));
POPN(INSN_ATTR(popn));
-% end
COLLECT_USAGE_INSN(INSN_ATTR(bin));
% insn.opes.each_with_index do |ope, i|
COLLECT_USAGE_OPERAND(INSN_ATTR(bin), <%= i %>, <%= ope[:name] %>);
% end
<%= render_c_expr insn.expr -%>
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn));
-% if insn.handles_frame?
-% insn.rets.reverse_each do |ret|
+% insn.rets.each do |ret|
PUSH(<%= insn.cast_to_VALUE ret %>);
% end
-% else
- ADJ_SP(INSN_ATTR(sp_inc));
-% insn.rets.reverse_each.with_index do |ret, i|
- TOPN(<%= i %>) = <%= insn.cast_to_VALUE ret %>;
-% end
- ADD_PC(INSN_ATTR(width));
- PREFETCH(GET_PC());
-% end
END_INSN(<%= insn.name %>);
# undef INSN_ATTR
# undef NAME_OF_CURRENT_INSN