[前][次][番号順一覧][スレッド一覧]

ruby-changes:51175

From: k0kubun <ko1@a...>
Date: Thu, 10 May 2018 02:11:14 +0900 (JST)
Subject: [ruby-changes:51175] k0kubun:r63382 (trunk): _mjit_compile_send.erb: revert r63350

k0kubun	2018-05-10 02:11:07 +0900 (Thu, 10 May 2018)

  New Revision: 63382

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=63382

  Log:
    _mjit_compile_send.erb: revert r63350
    
    Revert "_mjit_compile_send.erb: inline recursive call"
    
    I reverted r63360 in r63379, but the errors were reproductive from
    r63350. So I need to revert this.

  Modified files:
    trunk/mjit_compile.c
    trunk/test/ruby/test_jit.rb
    trunk/tool/ruby_vm/views/_mjit_compile_send.erb
Index: mjit_compile.c
===================================================================
--- mjit_compile.c	(revision 63381)
+++ mjit_compile.c	(revision 63382)
@@ -27,7 +27,6 @@ struct compile_status { https://github.com/ruby/ruby/blob/trunk/mjit_compile.c#L27
     /* If TRUE, JIT-ed code will use local variables to store pushed values instead of
        using VM's stack and moving stack pointer. */
     int local_stack_p;
-    const char *funcname; /* the method name which is being compiled */
 };
 
 /* Storage to keep data which is consistent in each conditional branch.
@@ -194,7 +193,6 @@ mjit_compile(FILE *f, const struct rb_is https://github.com/ruby/ruby/blob/trunk/mjit_compile.c#L193
     status.success = TRUE;
     status.local_stack_p = !body->catch_except_p;
     status.stack_size_for_pos = ALLOC_N(int, body->iseq_size);
-    status.funcname = funcname;
     memset(status.stack_size_for_pos, NOT_COMPILED_STACK_SIZE, sizeof(int) * body->iseq_size);
 
     /* For performance, we verify stack size only on compilation time (mjit_compile.inc.erb) without --jit-debug */
Index: tool/ruby_vm/views/_mjit_compile_send.erb
===================================================================
--- tool/ruby_vm/views/_mjit_compile_send.erb	(revision 63381)
+++ tool/ruby_vm/views/_mjit_compile_send.erb	(revision 63382)
@@ -58,9 +58,6 @@ https://github.com/ruby/ruby/blob/trunk/tool/ruby_vm/views/_mjit_compile_send.erb#L58
                 fprintf(f, "            VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_FINISH);\n");
                 fprintf(f, "            v = vm_exec(ec, TRUE);\n");
             }
-            else if (body == iseq->body) { /* inline recursive call */
-                fprintf(f, "            v = %s(ec, ec->cfp);\n", status->funcname);
-            }
             else {
                 fprintf(f, "            if ((v = mjit_exec(ec)) == Qundef) {\n");
                 fprintf(f, "                VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_FINISH);\n"); /* This is vm_call0_body's code after vm_call_iseq_setup */
Index: test/ruby/test_jit.rb
===================================================================
--- test/ruby/test_jit.rb	(revision 63381)
+++ test/ruby/test_jit.rb	(revision 63382)
@@ -322,16 +322,6 @@ class TestJIT < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_jit.rb#L322
 
   def test_compile_insn_opt_send_without_block
     assert_compile_once('print', result_inspect: 'nil', insns: %i[opt_send_without_block])
-
-    # recursive inline
-    assert_eval_with_jit("#{<<~"begin;"}\n#{<<~"end;"}", stdout: '120', success_count: 1, min_calls: 2)
-    begin;
-      def fact(i)
-        return i if i <= 1
-        i * fact(i - 1)
-      end
-      print fact(5)
-    end;
   end
 
   def test_compile_insn_invokesuper

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]