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

ruby-changes:53890

From: tenderlove <ko1@a...>
Date: Sat, 1 Dec 2018 09:08:41 +0900 (JST)
Subject: [ruby-changes:53890] tenderlove:r66109 (trunk): Revert "Collapse putobject, putobject, newarray"

tenderlove	2018-12-01 09:08:36 +0900 (Sat, 01 Dec 2018)

  New Revision: 66109

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

  Log:
    Revert "Collapse putobject, putobject, newarray"
    
    This reverts commit cbdf5a1842cda89347a2c840d23c35f041aead68.

  Modified files:
    trunk/compile.c
Index: compile.c
===================================================================
--- compile.c	(revision 66108)
+++ compile.c	(revision 66109)
@@ -2823,53 +2823,6 @@ iseq_peephole_optimize(rb_iseq_t *iseq, https://github.com/ruby/ruby/blob/trunk/compile.c#L2823
 	}
     }
 
-    /*
-     * putobject "foo"
-     * putobject "bar"
-     * newarray 2
-     *
-     * ==>
-     *
-     * duparray ["foo", "bar"]
-     */
-    if (IS_INSN_ID(iobj, newarray)) {
-        int len;
-
-        len = NUM2INT(OPERAND_AT(iobj, 0));
-
-        if (len > 0) {
-            INSN *link;
-            INSN *cur;
-            int i;
-
-            link = iobj;
-            i = len;
-            while(i > 0) {
-                link = (INSN *)get_prev_insn(link);
-                if (!IS_INSN_ID(link, putobject))
-                    break;
-
-                i--;
-            }
-
-            /* All previous instructions were `putobject` */
-            if (i == 0) {
-                VALUE list = rb_ary_new_capa(len);
-                iseq_add_mark_object_compile_time(iseq, list);
-
-                while(i < len) {
-                    cur = link;
-                    rb_ary_push(list, OPERAND_AT(cur, 0));
-                    link = (INSN *)get_next_insn(link);
-                    ELEM_REMOVE(&cur->link);
-                    i++;
-                }
-                iobj->insn_id = BIN(duparray);
-                OPERAND_AT(iobj, 0) = list;
-            }
-        }
-    }
-
     if (IS_INSN_ID(iobj, leave)) {
 	remove_unreachable_chunk(iseq, iobj->link.next);
     }

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

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