Title: [206149] trunk
Revision
206149
Author
sbar...@apple.com
Date
2016-09-20 08:56:42 -0700 (Tue, 20 Sep 2016)

Log Message

JSTests:
Unreviewed, added test for x86 32-bit failure for HasOwnProperty node in DFG.

* stress/has-own-property-called-on-non-object.js: Added.
(let.objs):
(new.String):
(foo):

Source/_javascript_Core:
Unreviewed fix for 32-bit DFG x86 implementation of HasOwnProperty.

Fixup phase is always setting ObjectUse on child1() of HasOwnProperty.
However, on x86 32-bit, I omitted a call to speculateObject() on child1().

* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):

Modified Paths

Added Paths

Diff

Modified: trunk/JSTests/ChangeLog (206148 => 206149)


--- trunk/JSTests/ChangeLog	2016-09-20 15:47:12 UTC (rev 206148)
+++ trunk/JSTests/ChangeLog	2016-09-20 15:56:42 UTC (rev 206149)
@@ -1,3 +1,12 @@
+2016-09-20  Saam Barati  <sbar...@apple.com>
+
+        Unreviewed, added test for x86 32-bit failure for HasOwnProperty node in DFG.
+
+        * stress/has-own-property-called-on-non-object.js: Added.
+        (let.objs):
+        (new.String):
+        (foo):
+
 2016-09-20  Yusuke Suzuki  <utatane....@gmail.com>
 
         [JSC] Add `typeof value === "symbol"` handling to bytecode compiler

Added: trunk/JSTests/stress/has-own-property-called-on-non-object.js (0 => 206149)


--- trunk/JSTests/stress/has-own-property-called-on-non-object.js	                        (rev 0)
+++ trunk/JSTests/stress/has-own-property-called-on-non-object.js	2016-09-20 15:56:42 UTC (rev 206149)
@@ -0,0 +1,21 @@
+"use strict";
+
+let objs = [
+    function() { },
+    new String(),
+    {foo: 45},
+    {bar:50, foo: 45},
+    {baz:70, bar:50, foo: 45},
+    new Date,
+];
+
+let has = ({}).hasOwnProperty;
+function foo(o) {
+    return has.call(o, "foo");
+}
+noInline(foo);
+
+for (let i = 0; i < 10000; i++)
+    foo(objs[i % objs.length]);
+
+foo("foo");

Modified: trunk/Source/_javascript_Core/ChangeLog (206148 => 206149)


--- trunk/Source/_javascript_Core/ChangeLog	2016-09-20 15:47:12 UTC (rev 206148)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-09-20 15:56:42 UTC (rev 206149)
@@ -1,3 +1,13 @@
+2016-09-20  Saam Barati  <sbar...@apple.com>
+
+        Unreviewed fix for 32-bit DFG x86 implementation of HasOwnProperty.
+
+        Fixup phase is always setting ObjectUse on child1() of HasOwnProperty.
+        However, on x86 32-bit, I omitted a call to speculateObject() on child1().
+
+        * dfg/DFGSpeculativeJIT32_64.cpp:
+        (JSC::DFG::SpeculativeJIT::compile):
+
 2016-09-20  Yusuke Suzuki  <utatane....@gmail.com>
 
         [JSC] Add `typeof value === "symbol"` handling to bytecode compiler

Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (206148 => 206149)


--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2016-09-20 15:47:12 UTC (rev 206148)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp	2016-09-20 15:56:42 UTC (rev 206149)
@@ -4899,6 +4899,9 @@
         JSValueRegs keyRegs = key.jsValueRegs();
         GPRReg objectGPR = object.gpr();
         GPRReg resultGPR = result.gpr();
+
+        speculateObject(node->child1());
+
         flushRegisters();
         callOperation(operationHasOwnProperty, resultGPR, objectGPR, keyRegs);
         booleanResult(resultGPR, node);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to