Skip to content
  • fpizlo@apple.com's avatar
    DFG bytecode parser should understand inline stacks · 41f5c958
    fpizlo@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=70278
    
    Reviewed by Oliver Hunt.
            
    The DFG bytecode parser is now capable of parsing multiple code blocks at
    once. This remains turned off since not all inlining functionality is
    implemented.       
            
    This required making a few changes elsewhere in the system. The bytecode
    parser now may do some of the same things that the bytecode generator does,
    like allocating constants and identifiers. Basic block linking relies on
    bytecode indices, which are only meaningful within the context of one basic
    block. This is fine, so long as linking is done eagerly whenever switching
    from one code block to another.
    
    * bytecode/CodeOrigin.h:
    (JSC::CodeOrigin::CodeOrigin):
    * bytecompiler/BytecodeGenerator.h:
    * dfg/DFGBasicBlock.h:
    * dfg/DFGByteCodeParser.cpp:
    (JSC::DFG::ByteCodeParser::ByteCodeParser):
    (JSC::DFG::ByteCodeParser::get):
    (JSC::DFG::ByteCodeParser::set):
    (JSC::DFG::ByteCodeParser::getThis):
    (JSC::DFG::ByteCodeParser::setThis):
    (JSC::DFG::ByteCodeParser::currentCodeOrigin):
    (JSC::DFG::ByteCodeParser::getPrediction):
    (JSC::DFG::ByteCodeParser::makeSafe):
    (JSC::DFG::ByteCodeParser::makeDivSafe):
    (JSC::DFG::ByteCodeParser::InlineStackEntry::executable):
    (JSC::DFG::ByteCodeParser::InlineStackEntry::~InlineStackEntry):
    (JSC::DFG::ByteCodeParser::InlineStackEntry::remapOperand):
    (JSC::DFG::ByteCodeParser::parseBlock):
    (JSC::DFG::ByteCodeParser::linkBlock):
    (JSC::DFG::ByteCodeParser::linkBlocks):
    (JSC::DFG::ByteCodeParser::setupPredecessors):
    (JSC::DFG::ByteCodeParser::buildOperandMapsIfNecessary):
    (JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
    (JSC::DFG::ByteCodeParser::parseCodeBlock):
    (JSC::DFG::ByteCodeParser::parse):
    * dfg/DFGGraph.h:
    (JSC::DFG::GetBytecodeBeginForBlock::GetBytecodeBeginForBlock):
    (JSC::DFG::GetBytecodeBeginForBlock::operator()):
    (JSC::DFG::Graph::blockIndexForBytecodeOffset):
    * dfg/DFGNode.h:
    * runtime/Identifier.h:
    (JSC::IdentifierMapIndexHashTraits::emptyValue):
    * runtime/JSValue.h:
    * wtf/StdLibExtras.h:
    (WTF::binarySearchWithFunctor):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@97675 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    41f5c958