-
oliver@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=117559 Reviewed by Oliver Hunt. Implement integer (i.e. immediate) switches in the DFG. Reduce the minimum threshold for using op_switch. Also get rid of edge code support, since we haven't used it in the year since I introduced it. It was supposed to allow us to break critical edges late in the backend, thus enabling global register allocation from an SSA-form graph. But we aren't doing that so I figure we should just kill the code for now. It would have made implementing switch harder. * assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssembler::timesPtr): * assembler/MacroAssemblerCodeRef.h: (JSC::MacroAssemblerCodePtr::dumpWithName): (MacroAssemblerCodePtr): (JSC::MacroAssemblerCodePtr::dump): (MacroAssemblerCodeRef): (JSC::MacroAssemblerCodeRef::dump): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::shrinkToFit): * bytecode/JumpTable.h: (SimpleJumpTable): (JSC::SimpleJumpTable::clear): * dfg/DFGAbstractState.cpp: (JSC::DFG::AbstractState::executeEffects): (JSC::DFG::AbstractState::mergeToSuccessors): * dfg/DFGBackwardsPropagationPhase.cpp: (JSC::DFG::BackwardsPropagationPhase::propagate): * dfg/DFGByteCodeParser.cpp: (InlineStackEntry): (JSC::DFG::ByteCodeParser::parseBlock): (JSC::DFG::ByteCodeParser::linkBlock): (JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry): * dfg/DFGCapabilities.cpp: (JSC::DFG::capabilityLevel): * dfg/DFGCommon.h: * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::dump): (JSC::DFG::Graph::determineReachability): * dfg/DFGGraph.h: (Graph): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::JITCompiler): (JSC::DFG::JITCompiler::link): * dfg/DFGJITCompiler.h: (JITCompiler): (JSC::DFG::JITCompiler::blockHeads): * dfg/DFGNode.h: (DFG): (JSC::DFG::SwitchCase::SwitchCase): (SwitchCase): (SwitchData): (JSC::DFG::SwitchData::SwitchData): (Node): (JSC::DFG::Node::isSwitch): (JSC::DFG::Node::isTerminal): (JSC::DFG::Node::switchData): (JSC::DFG::Node::numSuccessors): (JSC::DFG::Node::successor): * dfg/DFGNodeType.h: (DFG): * dfg/DFGOperations.cpp: * dfg/DFGOperations.h: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::SpeculativeJIT): (JSC::DFG::SpeculativeJIT::compile): (JSC::DFG::SpeculativeJIT::createOSREntries): (JSC::DFG::SpeculativeJIT::emitSwitchImmIntJump): (DFG): (JSC::DFG::SpeculativeJIT::emitSwitchImm): (JSC::DFG::SpeculativeJIT::emitSwitch): (JSC::DFG::SpeculativeJIT::linkBranches): * dfg/DFGSpeculativeJIT.h: (JSC::DFG::SpeculativeJIT::callOperation): (SpeculativeJIT): (JSC::DFG::SpeculativeJIT::branchDouble): (JSC::DFG::SpeculativeJIT::branchDoubleNonZero): (JSC::DFG::SpeculativeJIT::branch32): (JSC::DFG::SpeculativeJIT::branchTest32): (JSC::DFG::SpeculativeJIT::branch64): (JSC::DFG::SpeculativeJIT::branchPtr): (JSC::DFG::SpeculativeJIT::branchTestPtr): (JSC::DFG::SpeculativeJIT::branchTest8): (JSC::DFG::SpeculativeJIT::jump): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * parser/Nodes.h: (CaseBlockNode): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153228 268f45cc-cd09-0410-ab3c-d52691b4dbfc
9b7647ba