Changeset 205216 in webkit


Ignore:
Timestamp:
Aug 30, 2016 6:48:22 PM (8 years ago)
Author:
commit-queue@webkit.org
Message:

[JSC] Some arith nodes are too pessimistic with the types supported on the fast path
https://bugs.webkit.org/show_bug.cgi?id=161410

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-08-30
Reviewed by Geoffrey Garen.

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):
DoubleRep is able to convert numbers, undefined, booleans and null.
I was too pessimistic when I gated the double implementations
on number-or-boolean speculation. We can just let DoubleRep convert
the other cases as long as it is not a Cell.

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r205208 r205216  
     12016-08-30  Benjamin Poulain  <bpoulain@apple.com>
     2
     3        [JSC] Some arith nodes are too pessimistic with the types supported on the fast path
     4        https://bugs.webkit.org/show_bug.cgi?id=161410
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        * dfg/DFGFixupPhase.cpp:
     9        (JSC::DFG::FixupPhase::fixupNode):
     10        DoubleRep is able to convert numbers, undefined, booleans and null.
     11        I was too pessimistic when I gated the double implementations
     12        on number-or-boolean speculation. We can just let DoubleRep convert
     13        the other cases as long as it is not a Cell.
     14
    1152016-08-30  Chris Dumez  <cdumez@apple.com>
    216
  • trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp

    r205112 r205216  
    344344            }
    345345
    346             if (node->child1()->shouldSpeculateNumberOrBoolean()) {
     346            if (node->child1()->shouldSpeculateNotCell()) {
    347347                fixDoubleOrBooleanEdge(node->child1());
    348348                node->clearFlags(NodeMustGenerate);
     
    401401        case ArithSqrt: {
    402402            Edge& child1 = node->child1();
    403             if (child1->shouldSpeculateNumberOrBoolean()) {
     403            if (child1->shouldSpeculateNotCell()) {
    404404                fixDoubleOrBooleanEdge(child1);
    405405                node->clearFlags(NodeMustGenerate);
Note: See TracChangeset for help on using the changeset viewer.