Changeset 139540 in webkit


Ignore:
Timestamp:
Jan 11, 2013, 8:22:32 PM (12 years ago)
Author:
fpizlo@apple.com
Message:

If you use Phantom to force something to be live across an OSR exit, you should put it after the OSR exit
https://bugs.webkit.org/show_bug.cgi?id=106724

Reviewed by Oliver Hunt.

In cases where we were getting it wrong, I think it was benign because we would either already have an
OSR exit prior to there, or the operand would be a constant. But still, it's good to get this right.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r139528 r139540  
     12013-01-11  Filip Pizlo  <fpizlo@apple.com>
     2
     3        If you use Phantom to force something to be live across an OSR exit, you should put it after the OSR exit
     4        https://bugs.webkit.org/show_bug.cgi?id=106724
     5
     6        Reviewed by Oliver Hunt.
     7       
     8        In cases where we were getting it wrong, I think it was benign because we would either already have an
     9        OSR exit prior to there, or the operand would be a constant.  But still, it's good to get this right.
     10
     11        * dfg/DFGByteCodeParser.cpp:
     12        (JSC::DFG::ByteCodeParser::parseBlock):
     13
    1142013-01-11  Filip Pizlo  <fpizlo@apple.com>
    215
  • trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp

    r139506 r139540  
    30143014
    30153015            if (putToBase->m_isDynamic) {
    3016                 addToGraph(Phantom, get(base));
    30173016                addToGraph(PutById, OpInfo(identifier), get(base), get(value));
    30183017                NEXT_OPCODE(op_put_to_base);
     
    30213020            switch (putToBase->m_kind) {
    30223021            case PutToBaseOperation::Uninitialised:
     3022                addToGraph(ForceOSRExit);
    30233023                addToGraph(Phantom, get(base));
    3024                 addToGraph(ForceOSRExit);
    30253024                break;
    30263025
     
    30503049            case PutToBaseOperation::GlobalPropertyPut: {
    30513050                if (!putToBase->m_structure) {
     3051                    addToGraph(ForceOSRExit);
    30523052                    addToGraph(Phantom, get(base));
    3053                     addToGraph(ForceOSRExit);
    30543053                    NEXT_OPCODE(op_put_to_base);
    30553054                }
     
    30713070            case PutToBaseOperation::Readonly:
    30723071            case PutToBaseOperation::Generic:
    3073                 addToGraph(Phantom, get(base));
    30743072                addToGraph(PutById, OpInfo(identifier), get(base), get(value));
    30753073            }
Note: See TracChangeset for help on using the changeset viewer.