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.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64053 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
k0kubun 2018-07-25 14:55:43 +00:00
Родитель 218aa03c0f
Коммит a763bc3c6b
5 изменённых файлов: 20 добавлений и 20 удалений

Просмотреть файл

@ -43,7 +43,7 @@
* 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
(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
(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
(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
(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
(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
()
(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
(rb_insn_func_t funcptr)
()
()
// attr bool handles_frame = true;
// attr bool handles_sp = true;
{
reg_cfp = (funcptr)(ec, reg_cfp);

Просмотреть файл

@ -101,8 +101,8 @@ class RubyVM::BareInstructions
}.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
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

Просмотреть файл

@ -30,7 +30,7 @@ INSN_ENTRY(<%= insn.name %>)
% 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 %>)
% 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

Просмотреть файл

@ -75,13 +75,13 @@
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\(\)/

Просмотреть файл

@ -13,9 +13,9 @@
%
% # 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 @@
% 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);