diff options
Diffstat (limited to 'tool/ruby_vm/views/_insn_entry.erb')
-rw-r--r-- | tool/ruby_vm/views/_insn_entry.erb | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/tool/ruby_vm/views/_insn_entry.erb b/tool/ruby_vm/views/_insn_entry.erb index 836ca32b6b..bae8eae890 100644 --- a/tool/ruby_vm/views/_insn_entry.erb +++ b/tool/ruby_vm/views/_insn_entry.erb @@ -30,16 +30,25 @@ INSN_ENTRY(<%= insn.name %>) % end DEBUG_ENTER_INSN(INSN_ATTR(name)); ADD_PC(INSN_ATTR(width)); +% if insn.handles_frame? 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)); -% insn.rets.each do |ret| +% if insn.handles_frame? +% insn.rets.reverse_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 +% end END_INSN(<%= insn.name %>); # undef INSN_ATTR # undef NAME_OF_CURRENT_INSN |