- Source/JavaScriptCore/ChangeLog +14 lines
Lines 1-3 Source/JavaScriptCore/ChangeLog_sec1
1
2014-01-28  Filip Pizlo  <fpizlo@apple.com>
2
3
        FTL should really, *really* support NotCellUse
4
        https://bugs.webkit.org/show_bug.cgi?id=127790
5
6
        Reviewed by NOBODY (OOPS!).
7
        
8
        It's easy to forget about Phantoms. Any use kind that appears in any node can
9
        eventually appear in a Phantom. This was covered by Octane/mandreel.
10
11
        * ftl/FTLLowerDFGToLLVM.cpp:
12
        (JSC::FTL::LowerDFGToLLVM::speculate):
13
        (JSC::FTL::LowerDFGToLLVM::speculateNotCell):
14
1
2014-01-28  Filip Pizlo  <fpizlo@apple.com>
15
2014-01-28  Filip Pizlo  <fpizlo@apple.com>
2
16
3
        FTL should really support NotCellUse
17
        FTL should really support NotCellUse
- Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp +12 lines
Lines 4315-4320 private: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp_sec1
4315
        case BooleanUse:
4315
        case BooleanUse:
4316
            speculateBoolean(edge);
4316
            speculateBoolean(edge);
4317
            break;
4317
            break;
4318
        case NotCellUse:
4319
            speculateNotCell(edge);
4320
            break;
4318
        default:
4321
        default:
4319
            dataLog("Unsupported speculation use kind: ", edge.useKind(), "\n");
4322
            dataLog("Unsupported speculation use kind: ", edge.useKind(), "\n");
4320
            RELEASE_ASSERT_NOT_REACHED();
4323
            RELEASE_ASSERT_NOT_REACHED();
Lines 4590-4595 private: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp_sec2
4590
        lowBoolean(edge);
4593
        lowBoolean(edge);
4591
    }
4594
    }
4592
    
4595
    
4596
    void speculateNotCell(Edge edge)
4597
    {
4598
        if (!m_interpreter.needsTypeCheck(edge))
4599
            return;
4600
        
4601
        LValue value = lowJSValue(edge);
4602
        typeCheck(jsValueValue(value), edge, ~SpecCell, isCell(value));
4603
    }
4604
    
4593
    bool masqueradesAsUndefinedWatchpointIsStillValid()
4605
    bool masqueradesAsUndefinedWatchpointIsStillValid()
4594
    {
4606
    {
4595
        return m_graph.masqueradesAsUndefinedWatchpointIsStillValid(m_node->codeOrigin);
4607
        return m_graph.masqueradesAsUndefinedWatchpointIsStillValid(m_node->codeOrigin);

Return to Bug 127790