Title: [242649] trunk
Revision
242649
Author
tzaga...@apple.com
Date
2019-03-08 11:18:18 -0800 (Fri, 08 Mar 2019)

Log Message

op_check_tdz does not def its argument
https://bugs.webkit.org/show_bug.cgi?id=192880
<rdar://problem/46221598>

Reviewed by Saam Barati.

JSTests:

* microbenchmarks/let-for-in.js: Added.
(foo):

Source/_javascript_Core:

This prevented the for-in loop optimization in the bytecode generator, since
the analysis sees a redefinition of the loop variable.

* bytecode/BytecodeUseDef.h:
(JSC::computeDefsForBytecodeOffset):

Modified Paths

Added Paths

Diff

Modified: trunk/JSTests/ChangeLog (242648 => 242649)


--- trunk/JSTests/ChangeLog	2019-03-08 19:15:19 UTC (rev 242648)
+++ trunk/JSTests/ChangeLog	2019-03-08 19:18:18 UTC (rev 242649)
@@ -1,3 +1,14 @@
+2019-03-08  Tadeu Zagallo  <tzaga...@apple.com>
+
+        op_check_tdz does not def its argument
+        https://bugs.webkit.org/show_bug.cgi?id=192880
+        <rdar://problem/46221598>
+
+        Reviewed by Saam Barati.
+
+        * microbenchmarks/let-for-in.js: Added.
+        (foo):
+
 2019-03-07  Yusuke Suzuki  <ysuz...@apple.com>
 
         [JSC] StringFromCharCode fast path should accept 0xff in DFG and FTL

Added: trunk/JSTests/microbenchmarks/let-for-in.js (0 => 242649)


--- trunk/JSTests/microbenchmarks/let-for-in.js	                        (rev 0)
+++ trunk/JSTests/microbenchmarks/let-for-in.js	2019-03-08 19:18:18 UTC (rev 242649)
@@ -0,0 +1,15 @@
+function foo(o) {
+    var count = 0;
+    for (let p in o) {
+        if (o[p])
+            count++;
+    }
+    return count;
+}
+noInline(foo);
+
+var total = 0;
+for (let j = 0; j < 100000; ++j)
+    total += foo(new Error);
+if (total != 300000)
+    throw new Error("Bad result: " + total);

Modified: trunk/Source/_javascript_Core/ChangeLog (242648 => 242649)


--- trunk/Source/_javascript_Core/ChangeLog	2019-03-08 19:15:19 UTC (rev 242648)
+++ trunk/Source/_javascript_Core/ChangeLog	2019-03-08 19:18:18 UTC (rev 242649)
@@ -1,3 +1,17 @@
+2019-03-08  Tadeu Zagallo  <tzaga...@apple.com>
+
+        op_check_tdz does not def its argument
+        https://bugs.webkit.org/show_bug.cgi?id=192880
+        <rdar://problem/46221598>
+
+        Reviewed by Saam Barati.
+
+        This prevented the for-in loop optimization in the bytecode generator, since
+        the analysis sees a redefinition of the loop variable.
+
+        * bytecode/BytecodeUseDef.h:
+        (JSC::computeDefsForBytecodeOffset):
+
 2019-03-07  Yusuke Suzuki  <ysuz...@apple.com>
 
         [JSC] Make more fields lazy in JSGlobalObject

Modified: trunk/Source/_javascript_Core/bytecode/BytecodeUseDef.h (242648 => 242649)


--- trunk/Source/_javascript_Core/bytecode/BytecodeUseDef.h	2019-03-08 19:15:19 UTC (rev 242648)
+++ trunk/Source/_javascript_Core/bytecode/BytecodeUseDef.h	2019-03-08 19:18:18 UTC (rev 242649)
@@ -295,6 +295,7 @@
     case op_end:
     case op_throw:
     case op_throw_static_error:
+    case op_check_tdz:
     case op_debug:
     case op_ret:
     case op_jmp:
@@ -448,7 +449,6 @@
     DEFS(OpMov, dst)
     DEFS(OpNewObject, dst)
     DEFS(OpToThis, srcDst)
-    DEFS(OpCheckTdz, targetVirtualRegister)
     DEFS(OpGetScope, dst)
     DEFS(OpCreateDirectArguments, dst)
     DEFS(OpCreateScopedArguments, dst)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to