Changeset 174121 in webkit


Ignore:
Timestamp:
Sep 30, 2014 2:02:47 PM (10 years ago)
Author:
fpizlo@apple.com
Message:

REGRESSION (r174025): Invalid cast in JSC::asString
https://bugs.webkit.org/show_bug.cgi?id=137224

Reviewed by Geoffrey Garen.

Store barrier elision in fixup depends on checking the type of the value being stored. It's very important that
when we speak of "the value being stored" we are really referring to the right value.

The bug here was that the PutClosureVar case was assuming that child2 is the value being stored. It's actually
child3. So we were incorrectly removing all barriers from PutClosureVar.

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r174113 r174121  
     12014-09-30  Filip Pizlo  <fpizlo@apple.com>
     2
     3        REGRESSION (r174025): Invalid cast in JSC::asString
     4        https://bugs.webkit.org/show_bug.cgi?id=137224
     5
     6        Reviewed by Geoffrey Garen.
     7       
     8        Store barrier elision in fixup depends on checking the type of the value being stored. It's very important that
     9        when we speak of "the value being stored" we are really referring to the right value.
     10       
     11        The bug here was that the PutClosureVar case was assuming that child2 is the value being stored. It's actually
     12        child3. So we were incorrectly removing all barriers from PutClosureVar.
     13
     14        * dfg/DFGFixupPhase.cpp:
     15        (JSC::DFG::FixupPhase::fixupNode):
     16
    1172014-09-30  Brian J. Burg  <burg@cs.washington.edu>
    218
  • trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp

    r174025 r174121  
    855855        case PutClosureVar: {
    856856            fixEdge<KnownCellUse>(node->child1());
    857             insertStoreBarrier(m_indexInBlock, node->child1(), node->child2());
     857            insertStoreBarrier(m_indexInBlock, node->child1(), node->child3());
    858858            break;
    859859        }
Note: See TracChangeset for help on using the changeset viewer.