Ignore:
Timestamp:
Jul 24, 2013, 9:03:18 PM (12 years ago)
Author:
[email protected]
Message:

fourthTier: FTL should support SwitchChar
https://bugs.webkit.org/show_bug.cgi?id=117849

Reviewed by Geoffrey Garen.

This adds Switch(SwitchChar) to the FTL and also implicitly does some other things.
SwitchChar requires calling a slow path to resolve ropes. Previously the FTL had no
support for calling slow paths, and we avoided adding coverage that would require
that. Well, this patch adds the ability to call slow paths and just uses that for
resolving ropes for SwitchChar. Also SwitchChar required adding awareness of strings,
so I did that, too.

  • bytecode/CodeBlock.h:

(CodeBlock):
(JSC::CodeBlock::addCodeOrigin):

  • dfg/DFGBackwardsPropagationPhase.cpp:

(JSC::DFG::BackwardsPropagationPhase::propagate):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):

  • dfg/DFGNode.cpp:

(WTF):
(WTF::printInternal):

  • dfg/DFGNode.h:

(WTF):

  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • ftl/FTLAbbreviations.h:

(JSC::FTL::int16Type):
(JSC::FTL::constInt):

  • ftl/FTLAbstractHeapRepository.h:

(FTL):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLCommonValues.cpp:

(JSC::FTL::CommonValues::CommonValues):

  • ftl/FTLCommonValues.h:

(CommonValues):

  • ftl/FTLIntrinsicRepository.cpp:

(JSC::FTL::IntrinsicRepository::IntrinsicRepository):
(FTL):

  • ftl/FTLIntrinsicRepository.h:

(FTL):
(IntrinsicRepository):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::lower):
(JSC::FTL::LowerDFGToLLVM::transferAndCheckArguments):
(JSC::FTL::LowerDFGToLLVM::compileJump):
(JSC::FTL::LowerDFGToLLVM::compileBranch):
(JSC::FTL::LowerDFGToLLVM::compileSwitch):
(JSC::FTL::LowerDFGToLLVM::buildSwitch):
(LowerDFGToLLVM):
(JSC::FTL::LowerDFGToLLVM::lowString):
(JSC::FTL::LowerDFGToLLVM::speculate):
(JSC::FTL::LowerDFGToLLVM::isObject):
(JSC::FTL::LowerDFGToLLVM::isNotString):
(JSC::FTL::LowerDFGToLLVM::isString):
(JSC::FTL::LowerDFGToLLVM::isNotObject):
(JSC::FTL::LowerDFGToLLVM::speculateObject):
(JSC::FTL::LowerDFGToLLVM::speculateString):
(JSC::FTL::LowerDFGToLLVM::speculateNonNullObject):
(JSC::FTL::LowerDFGToLLVM::vmCall):
(JSC::FTL::LowerDFGToLLVM::callPreflight):
(JSC::FTL::LowerDFGToLLVM::callCheck):
(JSC::FTL::LowerDFGToLLVM::lowBlock):

  • ftl/FTLOutput.h:

(JSC::FTL::Output::constBool):
(JSC::FTL::Output::constInt8):
(JSC::FTL::Output::constInt32):
(JSC::FTL::Output::constIntPtr):
(JSC::FTL::Output::constInt64):
(JSC::FTL::Output::load16):
(JSC::FTL::Output::isNull):
(JSC::FTL::Output::notNull):
(JSC::FTL::Output::testIsZero32):
(JSC::FTL::Output::testNonZero32):
(Output):
(JSC::FTL::Output::operation):
(JSC::FTL::Output::crash):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGNode.cpp

    r141069 r153235  
    4242namespace WTF {
    4343
    44 void printInternal(PrintStream& out, JSC::DFG::Node* node)
     44using namespace JSC;
     45using namespace JSC::DFG;
     46
     47void printInternal(PrintStream& out, SwitchKind kind)
     48{
     49    switch (kind) {
     50    case SwitchImm:
     51        out.print("SwitchImm");
     52        return;
     53    case SwitchChar:
     54        out.print("SwitchChar");
     55        return;
     56    }
     57    RELEASE_ASSERT_NOT_REACHED();
     58}
     59
     60void printInternal(PrintStream& out, Node* node)
    4561{
    4662    if (!node) {
     
    4965    }
    5066    out.print("@", node->index());
    51     out.print(JSC::AbbreviatedSpeculationDump(node->prediction()));
     67    out.print(AbbreviatedSpeculationDump(node->prediction()));
    5268}
    5369
Note: See TracChangeset for help on using the changeset viewer.