ruby-changes:51839
From: k0kubun <ko1@a...>
Date: Wed, 25 Jul 2018 23:55:51 +0900 (JST)
Subject: [ruby-changes:51839] k0kubun:r64053 (trunk): insns.def: s/handles_frame/handles_sp/
k0kubun 2018-07-25 23:55:43 +0900 (Wed, 25 Jul 2018) New Revision: 64053 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=64053 Log: insns.def: s/handles_frame/handles_sp/ because it's more suitable to describe the current behavior now. tool/ruby_vm/models/bare_instructions.rb: ditto. tool/ruby_vm/views/_insn_entry.erb: ditto. tool/ruby_vm/views/_mjit_compile_insn_body.erb: ditto. tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb: ditto. Modified files: trunk/insns.def trunk/tool/ruby_vm/models/bare_instructions.rb trunk/tool/ruby_vm/views/_insn_entry.erb trunk/tool/ruby_vm/views/_mjit_compile_insn_body.erb trunk/tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb Index: insns.def =================================================================== --- insns.def (revision 64052) +++ insns.def (revision 64053) @@ -43,7 +43,7 @@ https://github.com/ruby/ruby/blob/trunk/insns.def#L43 * sp_inc: Used to dynamically calculate sp increase in `insn_stack_increase`. - * handles_frame: If it is true, VM deals with sp in the insn. + * handles_sp: If it is true, VM deals with sp in the insn. - Attributes can access operands, but not stack (push/pop) variables. @@ -687,7 +687,7 @@ defineclass https://github.com/ruby/ruby/blob/trunk/insns.def#L687 (ID id, ISEQ class_iseq, rb_num_t flags) (VALUE cbase, VALUE super) (VALUE val) -// attr bool handles_frame = true; +// attr bool handles_sp = true; { VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super); @@ -714,7 +714,7 @@ send https://github.com/ruby/ruby/blob/trunk/insns.def#L714 (CALL_INFO ci, CALL_CACHE cc, ISEQ blockiseq) (...) (VALUE val) -// attr bool handles_frame = true; +// attr bool handles_sp = true; // attr rb_snum_t sp_inc = - (int)(ci->orig_argc + ((ci->flag & VM_CALL_ARGS_BLOCKARG) ? 1 : 0)); { struct rb_calling_info calling; @@ -768,7 +768,7 @@ opt_send_without_block https://github.com/ruby/ruby/blob/trunk/insns.def#L768 (CALL_INFO ci, CALL_CACHE cc) (...) (VALUE val) -// attr bool handles_frame = true; +// attr bool handles_sp = true; // attr rb_snum_t sp_inc = -ci->orig_argc; { struct rb_calling_info calling; @@ -783,7 +783,7 @@ invokesuper https://github.com/ruby/ruby/blob/trunk/insns.def#L783 (CALL_INFO ci, CALL_CACHE cc, ISEQ blockiseq) (...) (VALUE val) -// attr bool handles_frame = true; +// attr bool handles_sp = true; // attr rb_snum_t sp_inc = - (int)(ci->orig_argc + ((ci->flag & VM_CALL_ARGS_BLOCKARG) ? 1 : 0)); { struct rb_calling_info calling; @@ -801,7 +801,7 @@ invokeblock https://github.com/ruby/ruby/blob/trunk/insns.def#L801 (CALL_INFO ci) (...) (VALUE val) -// attr bool handles_frame = true; +// attr bool handles_sp = true; // attr rb_snum_t sp_inc = 1 - ci->orig_argc; { struct rb_calling_info calling; @@ -828,7 +828,7 @@ leave https://github.com/ruby/ruby/blob/trunk/insns.def#L828 () (VALUE val) (VALUE val) -// attr bool handles_frame = true; +// attr bool handles_sp = true; { if (OPT_CHECKED_RUN) { const VALUE *const bp = vm_base_ptr(reg_cfp); @@ -1376,7 +1376,7 @@ opt_call_c_function https://github.com/ruby/ruby/blob/trunk/insns.def#L1376 (rb_insn_func_t funcptr) () () -// attr bool handles_frame = true; +// attr bool handles_sp = true; { reg_cfp = (funcptr)(ec, reg_cfp); Index: tool/ruby_vm/models/bare_instructions.rb =================================================================== --- tool/ruby_vm/models/bare_instructions.rb (revision 64052) +++ tool/ruby_vm/models/bare_instructions.rb (revision 64053) @@ -101,8 +101,8 @@ class RubyVM::BareInstructions https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/models/bare_instructions.rb#L101 }.join end - def handles_frame? - /\b(false|0)\b/ !~ @attrs['handles_frame'].expr.expr + def handles_sp? + /\b(false|0)\b/ !~ @attrs['handles_sp'].expr.expr end def inspect @@ -129,7 +129,7 @@ class RubyVM::BareInstructions https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/models/bare_instructions.rb#L129 generate_attribute 'rb_num_t', 'retn', rets.size generate_attribute 'rb_num_t', 'width', width generate_attribute 'rb_snum_t', 'sp_inc', rets.size - pops.size - generate_attribute 'bool', 'handles_frame', false + generate_attribute 'bool', 'handles_sp', false end def typesplit a Index: tool/ruby_vm/views/_insn_entry.erb =================================================================== --- tool/ruby_vm/views/_insn_entry.erb (revision 64052) +++ tool/ruby_vm/views/_insn_entry.erb (revision 64053) @@ -30,7 +30,7 @@ INSN_ENTRY(<%= insn.name %>) https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/views/_insn_entry.erb#L30 % end DEBUG_ENTER_INSN(INSN_ATTR(name)); ADD_PC(INSN_ATTR(width)); -% if insn.handles_frame? +% if insn.handles_sp? POPN(INSN_ATTR(popn)); % end COLLECT_USAGE_INSN(INSN_ATTR(bin)); @@ -39,7 +39,7 @@ INSN_ENTRY(<%= insn.name %>) https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/views/_insn_entry.erb#L39 % end <%= render_c_expr insn.expr -%> CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, INSN_ATTR(retn)); -% if insn.handles_frame? +% if insn.handles_sp? % insn.rets.reverse_each do |ret| PUSH(<%= insn.cast_to_VALUE ret %>); % end Index: tool/ruby_vm/views/_mjit_compile_insn_body.erb =================================================================== --- tool/ruby_vm/views/_mjit_compile_insn_body.erb (revision 64052) +++ tool/ruby_vm/views/_mjit_compile_insn_body.erb (revision 64053) @@ -75,13 +75,13 @@ https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/views/_mjit_compile_insn_body.erb#L75 fprintf(f, " reg_cfp->pc = original_body_iseq + %d;\n", pos); fprintf(f, " goto cancel;\n"); % else -% if insn.handles_frame? -% # If insn.handles_frame? is true, cfp->sp might be changed inside insns (like vm_caller_setup_arg_block) -% # and thus we need to use cfp->sp, even when local_stack_p is TRUE. When insn.handles_frame? is true, +% if insn.handles_sp? +% # If insn.handles_sp? is true, cfp->sp might be changed inside insns (like vm_caller_setup_arg_block) +% # and thus we need to use cfp->sp, even when local_stack_p is TRUE. When insn.handles_sp? is true, % # cfp->sp should be available too because _mjit_compile_pc_and_sp.erb sets it. fprintf(f, <%= to_cstr.call(line) %>); % else -% # If local_stack_p is TRUE and insn.handles_frame? is false, stack values are only available in local variables +% # If local_stack_p is TRUE and insn.handles_sp? is false, stack values are only available in local variables % # for stack. So we need to replace those macros if local_stack_p is TRUE here. % case line % when /\bGET_SP\(\)/ Index: tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb =================================================================== --- tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb (revision 64052) +++ tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb (revision 64053) @@ -13,9 +13,9 @@ https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb#L13 % % # JIT: move sp to use or preserve stack variables if (status->local_stack_p) { -% # sp motion is optimized away for `handles_frame? #=> false` case. +% # sp motion is optimized away for `handles_sp? #=> false` case. % # Thus sp should be set properly before `goto cancel`. -% if insn.handles_frame? +% if insn.handles_sp? % # JIT-only behavior (pushing JIT's local variables to VM's stack): { rb_snum_t i, push_size; @@ -28,7 +28,7 @@ https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb#L28 % end } else { -% if insn.handles_frame? +% if insn.handles_sp? fprintf(f, " reg_cfp->sp = (VALUE *)reg_cfp->bp + %d;\n", b->stack_size + 1 - <%= insn.pops.size %>); /* POPN(INSN_ATTR(popn)); */ % else fprintf(f, " reg_cfp->sp = (VALUE *)reg_cfp->bp + %d;\n", b->stack_size + 1); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/