-
fpizlo@apple.com authored
DFG should not use a graph that is a vector, Nodes shouldn't move after allocation, and we should always refer to nodes by Node* https://bugs.webkit.org/show_bug.cgi?id=106868 Reviewed by Oliver Hunt. This adds a pool allocator for Nodes, and uses that instead of a Vector. Changes all uses of Node& and NodeIndex to be simply Node*. Nodes no longer have an index except for debugging (Node::index(), which is not guaranteed to be O(1)). 1% speed-up on SunSpider, presumably because this improves compile times. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/DataFormat.h: (JSC::dataFormatToString): * dfg/DFGAbstractState.cpp: (JSC::DFG::AbstractState::initialize): (JSC::DFG::AbstractState::booleanResult): (JSC::DFG::AbstractState::execute): (JSC::DFG::AbstractState::mergeStateAtTail): (JSC::DFG::AbstractState::mergeToSuccessors): (JSC::DFG::AbstractState::mergeVariableBetweenBlocks): (JSC::DFG::AbstractState::dump): * dfg/DFGAbstractState.h: (DFG): (JSC::DFG::AbstractState::forNode): (AbstractState): (JSC::DFG::AbstractState::speculateInt32Unary): (JSC::DFG::AbstractState::speculateNumberUnary): (JSC::DFG::AbstractState::speculateBooleanUnary): (JSC::DFG::AbstractState::speculateInt32Binary): (JSC::DFG::AbstractState::speculateNumberBinary): (JSC::DFG::AbstractState::trySetConstant): * dfg/DFGAbstractValue.h: (AbstractValue): * dfg/DFGAdjacencyList.h: (JSC::DFG::AdjacencyList::AdjacencyList): (JSC::DFG::AdjacencyList::initialize): * dfg/DFGAllocator.h: Added. (DFG): (Allocator): (JSC::DFG::Allocator::Region::size): (JSC::DFG::Allocator::Region::headerSize): (JSC::DFG::Allocator::Region::numberOfThingsPerRegion): (JSC::DFG::Allocator::Region::data): (JSC::DFG::Allocator::Region::isInThisRegion): (JSC::DFG::Allocator::Region::regionFor): (Region): (JSC::DFG::::Allocator): (JSC::DFG::::~Allocator): (JSC::DFG::::allocate): (JSC::DFG::::free): (JSC::DFG::::freeAll): (JSC::DFG::::reset): (JSC::DFG::::indexOf): (JSC::DFG::::allocatorOf): (JSC::DFG::::bumpAllocate): (JSC::DFG::::freeListAllocate): (JSC::DFG::::allocateSlow): (JSC::DFG::::freeRegionsStartingAt): (JSC::DFG::::startBumpingIn): * dfg/DFGArgumentsSimplificationPhase.cpp: (JSC::DFG::ArgumentsSimplificationPhase::run): (JSC::DFG::ArgumentsSimplificationPhase::observeBadArgumentsUse): (JSC::DFG::ArgumentsSimplificationPhase::observeBadArgumentsUses): (JSC::DFG::ArgumentsSimplificationPhase::observeProperArgumentsUse): (JSC::DFG::ArgumentsSimplificationPhase::isOKToOptimize): (JSC::DFG::ArgumentsSimplificationPhase::removeArgumentsReferencingPhantomChild): * dfg/DFGArrayMode.cpp: (JSC::DFG::ArrayMode::originalArrayStructure): (JSC::DFG::ArrayMode::alreadyChecked): * dfg/DFGArrayMode.h: (ArrayMode): * dfg/DFGArrayifySlowPathGenerator.h: (JSC::DFG::ArrayifySlowPathGenerator::ArrayifySlowPathGenerator): * dfg/DFGBasicBlock.h: (JSC::DFG::BasicBlock::node): (JSC::DFG::BasicBlock::isInPhis): (JSC::DFG::BasicBlock::isInBlock): (BasicBlock): * dfg/DFGBasicBlockInlines.h: (DFG): * dfg/DFGByteCodeParser.cpp: (ByteCodeParser): (JSC::DFG::ByteCodeParser::getDirect): (JSC::DFG::ByteCodeParser::get): (JSC::DFG::ByteCodeParser::setDirect): (JSC::DFG::ByteCodeParser::set): (JSC::DFG::ByteCodeParser::setPair): (JSC::DFG::ByteCodeParser::injectLazyOperandSpeculation): (JSC::DFG::ByteCodeParser::getLocal): (JSC::DFG::ByteCodeParser::setLocal): (JSC::DFG::ByteCodeParser::getArgument): (JSC::DFG::ByteCodeParser::setArgument): (JSC::DFG::ByteCodeParser::flushDirect): (JSC::DFG::ByteCodeParser::getToInt32): (JSC::DFG::ByteCodeParser::toInt32): (JSC::DFG::ByteCodeParser::getJSConstantForValue): (JSC::DFG::ByteCodeParser::getJSConstant): (JSC::DFG::ByteCodeParser::getCallee): (JSC::DFG::ByteCodeParser::getThis): (JSC::DFG::ByteCodeParser::setThis): (JSC::DFG::ByteCodeParser::isJSConstant): (JSC::DFG::ByteCodeParser::isInt32Constant): (JSC::DFG::ByteCodeParser::valueOfJSConstant): (JSC::DFG::ByteCodeParser::valueOfInt32Constant): (JSC::DFG::ByteCodeParser::constantUndefined): (JSC::DFG::ByteCodeParser::constantNull): (JSC::DFG::ByteCodeParser::one): (JSC::DFG::ByteCodeParser::constantNaN): (JSC::DFG::ByteCodeParser::cellConstant): (JSC::DFG::ByteCodeParser::addToGraph): (JSC::DFG::ByteCodeParser::insertPhiNode): (JSC::DFG::ByteCodeParser::addVarArgChild): (JSC::DFG::ByteCodeParser::addCall): (JSC::DFG::ByteCodeParser::addStructureTransitionCheck): (JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit): (JSC::DFG::ByteCodeParser::getPrediction): (JSC::DFG::ByteCodeParser::getArrayModeAndEmitChecks): (JSC::DFG::ByteCodeParser::makeSafe): (JSC::DFG::ByteCodeParser::makeDivSafe): (JSC::DFG::ByteCodeParser::ConstantRecord::ConstantRecord): (ConstantRecord): (JSC::DFG::ByteCodeParser::PhiStackEntry::PhiStackEntry): (PhiStackEntry): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::emitFunctionChecks): (JSC::DFG::ByteCodeParser::handleInlining): (JSC::DFG::ByteCodeParser::setIntrinsicResult): (JSC::DFG::ByteCodeParser::handleMinMax): (JSC::DFG::ByteCodeParser::handleIntrinsic): (JSC::DFG::ByteCodeParser::handleGetByOffset): (JSC::DFG::ByteCodeParser::handleGetById): (JSC::DFG::ByteCodeParser::getScope): (JSC::DFG::ByteCodeParser::parseResolveOperations): (JSC::DFG::ByteCodeParser::parseBlock): (JSC::DFG::ByteCodeParser::processPhiStack): (JSC::DFG::ByteCodeParser::linkBlock): (JSC::DFG::ByteCodeParser::parseCodeBlock): (JSC::DFG::ByteCodeParser::parse): * dfg/DFGCFAPhase.cpp: (JSC::DFG::CFAPhase::performBlockCFA): * dfg/DFGCFGSimplificationPhase.cpp: (JSC::DFG::CFGSimplificationPhase::run): (JSC::DFG::CFGSimplificationPhase::keepOperandAlive): (JSC::DFG::CFGSimplificationPhase::fixPossibleGetLocal): (JSC::DFG::CFGSimplificationPhase::fixPhis): (JSC::DFG::CFGSimplificationPhase::removePotentiallyDeadPhiReference): (JSC::DFG::CFGSimplificationPhase::OperandSubstitution::OperandSubstitution): (JSC::DFG::CFGSimplificationPhase::OperandSubstitution::dump): (OperandSubstitution): (JSC::DFG::CFGSimplificationPhase::skipGetLocal): (JSC::DFG::CFGSimplificationPhase::recordNewTarget): (JSC::DFG::CFGSimplificationPhase::fixTailOperand): (JSC::DFG::CFGSimplificationPhase::mergeBlocks): * dfg/DFGCSEPhase.cpp: (JSC::DFG::CSEPhase::canonicalize): (JSC::DFG::CSEPhase::endIndexForPureCSE): (JSC::DFG::CSEPhase::pureCSE): (JSC::DFG::CSEPhase::constantCSE): (JSC::DFG::CSEPhase::weakConstantCSE): (JSC::DFG::CSEPhase::getCalleeLoadElimination): (JSC::DFG::CSEPhase::getArrayLengthElimination): (JSC::DFG::CSEPhase::globalVarLoadElimination): (JSC::DFG::CSEPhase::scopedVarLoadElimination): (JSC::DFG::CSEPhase::globalVarWatchpointElimination): (JSC::DFG::CSEPhase::globalVarStoreElimination): (JSC::DFG::CSEPhase::scopedVarStoreElimination): (JSC::DFG::CSEPhase::getByValLoadElimination): (JSC::DFG::CSEPhase::checkFunctionElimination): (JSC::DFG::CSEPhase::checkExecutableElimination): (JSC::DFG::CSEPhase::checkStructureElimination): (JSC::DFG::CSEPhase::structureTransitionWatchpointElimination): (JSC::DFG::CSEPhase::putStructureStoreElimination): (JSC::DFG::CSEPhase::getByOffsetLoadElimination): (JSC::DFG::CSEPhase::putByOffsetStoreElimination): (JSC::DFG::CSEPhase::getPropertyStorageLoadElimination): (JSC::DFG::CSEPhase::checkArrayElimination): (JSC::DFG::CSEPhase::getIndexedPropertyStorageLoadElimination): (JSC::DFG::CSEPhase::getMyScopeLoadElimination): (JSC::DFG::CSEPhase::getLocalLoadElimination): (JSC::DFG::CSEPhase::setLocalStoreElimination): (JSC::DFG::CSEPhase::performSubstitution): (JSC::DFG::CSEPhase::eliminateIrrelevantPhantomChildren): (JSC::DFG::CSEPhase::setReplacement): (JSC::DFG::CSEPhase::eliminate): (JSC::DFG::CSEPhase::performNodeCSE): (JSC::DFG::CSEPhase::performBlockCSE): (CSEPhase): * dfg/DFGCommon.cpp: Added. (DFG): (JSC::DFG::NodePointerTraits::dump): * dfg/DFGCommon.h: (DFG): (JSC::DFG::NodePointerTraits::defaultValue): (NodePointerTraits): (JSC::DFG::verboseCompilationEnabled): (JSC::DFG::shouldDumpGraphAtEachPhase): (JSC::DFG::validationEnabled): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): (JSC::DFG::ConstantFoldingPhase::isCapturedAtOrAfter): (JSC::DFG::ConstantFoldingPhase::addStructureTransitionCheck): (JSC::DFG::ConstantFoldingPhase::paintUnreachableCode): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::Disassembler): (JSC::DFG::Disassembler::createDumpList): (JSC::DFG::Disassembler::dumpDisassembly): * dfg/DFGDisassembler.h: (JSC::DFG::Disassembler::setForNode): (Disassembler): * dfg/DFGDriver.cpp: (JSC::DFG::compile): * dfg/DFGEdge.cpp: Added. (DFG): (JSC::DFG::Edge::dump): * dfg/DFGEdge.h: (JSC::DFG::Edge::Edge): (JSC::DFG::Edge::node): (JSC::DFG::Edge::operator*): (JSC::DFG::Edge::operator->): (Edge): (JSC::DFG::Edge::setNode): (JSC::DFG::Edge::useKind): (JSC::DFG::Edge::setUseKind): (JSC::DFG::Edge::isSet): (JSC::DFG::Edge::shift): (JSC::DFG::Edge::makeWord): (JSC::DFG::operator==): (JSC::DFG::operator!=): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupBlock): (JSC::DFG::FixupPhase::fixupNode): (JSC::DFG::FixupPhase::checkArray): (JSC::DFG::FixupPhase::blessArrayOperation): (JSC::DFG::FixupPhase::fixIntEdge): (JSC::DFG::FixupPhase::fixDoubleEdge): (JSC::DFG::FixupPhase::injectInt32ToDoubleNode): (FixupPhase): * dfg/DFGGenerationInfo.h: (JSC::DFG::GenerationInfo::GenerationInfo): (JSC::DFG::GenerationInfo::initConstant): (JSC::DFG::GenerationInfo::initInteger): (JSC::DFG::GenerationInfo::initJSValue): (JSC::DFG::GenerationInfo::initCell): (JSC::DFG::GenerationInfo::initBoolean): (JSC::DFG::GenerationInfo::initDouble): (JSC::DFG::GenerationInfo::initStorage): (GenerationInfo): (JSC::DFG::GenerationInfo::node): (JSC::DFG::GenerationInfo::noticeOSRBirth): (JSC::DFG::GenerationInfo::use): (JSC::DFG::GenerationInfo::appendFill): (JSC::DFG::GenerationInfo::appendSpill): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::Graph): (JSC::DFG::Graph::~Graph): (DFG): (JSC::DFG::Graph::dumpCodeOrigin): (JSC::DFG::Graph::amountOfNodeWhiteSpace): (JSC::DFG::Graph::printNodeWhiteSpace): (JSC::DFG::Graph::dump): (JSC::DFG::Graph::dumpBlockHeader): (JSC::DFG::Graph::refChildren): (JSC::DFG::Graph::derefChildren): (JSC::DFG::Graph::predictArgumentTypes): (JSC::DFG::Graph::collectGarbage): (JSC::DFG::Graph::determineReachability): (JSC::DFG::Graph::resetExitStates): * dfg/DFGGraph.h: (Graph): (JSC::DFG::Graph::ref): (JSC::DFG::Graph::deref): (JSC::DFG::Graph::changeChild): (JSC::DFG::Graph::compareAndSwap): (JSC::DFG::Graph::clearAndDerefChild): (JSC::DFG::Graph::clearAndDerefChild1): (JSC::DFG::Graph::clearAndDerefChild2): (JSC::DFG::Graph::clearAndDerefChild3): (JSC::DFG::Graph::convertToConstant): (JSC::DFG::Graph::getJSConstantSpeculation): (JSC::DFG::Graph::addSpeculationMode): (JSC::DFG::Graph::valueAddSpeculationMode): (JSC::DFG::Graph::arithAddSpeculationMode): (JSC::DFG::Graph::addShouldSpeculateInteger): (JSC::DFG::Graph::mulShouldSpeculateInteger): (JSC::DFG::Graph::negateShouldSpeculateInteger): (JSC::DFG::Graph::isConstant): (JSC::DFG::Graph::isJSConstant): (JSC::DFG::Graph::isInt32Constant): (JSC::DFG::Graph::isDoubleConstant): (JSC::DFG::Graph::isNumberConstant): (JSC::DFG::Graph::isBooleanConstant): (JSC::DFG::Graph::isCellConstant): (JSC::DFG::Graph::isFunctionConstant): (JSC::DFG::Graph::isInternalFunctionConstant): (JSC::DFG::Graph::valueOfJSConstant): (JSC::DFG::Graph::valueOfInt32Constant): (JSC::DFG::Graph::valueOfNumberConstant): (JSC::DFG::Graph::valueOfBooleanConstant): (JSC::DFG::Graph::valueOfFunctionConstant): (JSC::DFG::Graph::valueProfileFor): (JSC::DFG::Graph::methodOfGettingAValueProfileFor): (JSC::DFG::Graph::numSuccessors): (JSC::DFG::Graph::successor): (JSC::DFG::Graph::successorForCondition): (JSC::DFG::Graph::isPredictedNumerical): (JSC::DFG::Graph::byValIsPure): (JSC::DFG::Graph::clobbersWorld): (JSC::DFG::Graph::varArgNumChildren): (JSC::DFG::Graph::numChildren): (JSC::DFG::Graph::varArgChild): (JSC::DFG::Graph::child): (JSC::DFG::Graph::voteNode): (JSC::DFG::Graph::voteChildren): (JSC::DFG::Graph::substitute): (JSC::DFG::Graph::substituteGetLocal): (JSC::DFG::Graph::addImmediateShouldSpeculateInteger): (JSC::DFG::Graph::mulImmediateShouldSpeculateInteger): * dfg/DFGInsertionSet.h: (JSC::DFG::Insertion::Insertion): (JSC::DFG::Insertion::element): (Insertion): (JSC::DFG::InsertionSet::insert): (InsertionSet): * dfg/DFGJITCompiler.cpp: * dfg/DFGJITCompiler.h: (JSC::DFG::JITCompiler::setForNode): (JSC::DFG::JITCompiler::addressOfDoubleConstant): (JSC::DFG::JITCompiler::noticeOSREntry): * dfg/DFGLongLivedState.cpp: Added. (DFG): (JSC::DFG::LongLivedState::LongLivedState): (JSC::DFG::LongLivedState::~LongLivedState): (JSC::DFG::LongLivedState::shrinkToFit): * dfg/DFGLongLivedState.h: Added. (DFG): (LongLivedState): * dfg/DFGMinifiedID.h: (JSC::DFG::MinifiedID::MinifiedID): (JSC::DFG::MinifiedID::node): * dfg/DFGMinifiedNode.cpp: (JSC::DFG::MinifiedNode::fromNode): * dfg/DFGMinifiedNode.h: (MinifiedNode): * dfg/DFGNode.cpp: Added. (DFG): (JSC::DFG::Node::index): (WTF): (WTF::printInternal): * dfg/DFGNode.h: (DFG): (JSC::DFG::Node::Node): (Node): (JSC::DFG::Node::convertToGetByOffset): (JSC::DFG::Node::convertToPutByOffset): (JSC::DFG::Node::ref): (JSC::DFG::Node::shouldSpeculateInteger): (JSC::DFG::Node::shouldSpeculateIntegerForArithmetic): (JSC::DFG::Node::shouldSpeculateIntegerExpectingDefined): (JSC::DFG::Node::shouldSpeculateDoubleForArithmetic): (JSC::DFG::Node::shouldSpeculateNumber): (JSC::DFG::Node::shouldSpeculateNumberExpectingDefined): (JSC::DFG::Node::shouldSpeculateFinalObject): (JSC::DFG::Node::shouldSpeculateArray): (JSC::DFG::Node::dumpChildren): (WTF): * dfg/DFGNodeAllocator.h: Added. (DFG): (operator new ): * dfg/DFGOSRExit.cpp: (JSC::DFG::OSRExit::OSRExit): * dfg/DFGOSRExit.h: (OSRExit): (SpeculationFailureDebugInfo): * dfg/DFGOSRExitCompiler.cpp: * dfg/DFGOSRExitCompiler32_64.cpp: (JSC::DFG::OSRExitCompiler::compileExit): * dfg/DFGOSRExitCompiler64.cpp: (JSC::DFG::OSRExitCompiler::compileExit): * dfg/DFGOperations.cpp: * dfg/DFGPhase.cpp: (DFG): (JSC::DFG::Phase::beginPhase): (JSC::DFG::Phase::endPhase): * dfg/DFGPhase.h: (Phase): (JSC::DFG::runAndLog): * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::setPrediction): (JSC::DFG::PredictionPropagationPhase::mergePrediction): (JSC::DFG::PredictionPropagationPhase::isNotNegZero): (JSC::DFG::PredictionPropagationPhase::isNotZero): (JSC::DFG::PredictionPropagationPhase::isWithinPowerOfTwoForConstant): (JSC::DFG::PredictionPropagationPhase::isWithinPowerOfTwoNonRecursive): (JSC::DFG::PredictionPropagationPhase::isWithinPowerOfTwo): (JSC::DFG::PredictionPropagationPhase::propagate): (JSC::DFG::PredictionPropagationPhase::mergeDefaultFlags): (JSC::DFG::PredictionPropagationPhase::propagateForward): (JSC::DFG::PredictionPropagationPhase::propagateBackward): (JSC::DFG::PredictionPropagationPhase::doDoubleVoting): (PredictionPropagationPhase): (JSC::DFG::PredictionPropagationPhase::doRoundOfDoubleVoting): * dfg/DFGScoreBoard.h: (JSC::DFG::ScoreBoard::ScoreBoard): (JSC::DFG::ScoreBoard::use): (JSC::DFG::ScoreBoard::useIfHasResult): (ScoreBoard): * dfg/DFGSilentRegisterSavePlan.h: (JSC::DFG::SilentRegisterSavePlan::SilentRegisterSavePlan): (JSC::DFG::SilentRegisterSavePlan::node): (SilentRegisterSavePlan): * dfg/DFGSlowPathGenerator.h: (JSC::DFG::SlowPathGenerator::SlowPathGenerator): (JSC::DFG::SlowPathGenerator::generate): (SlowPathGenerator): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::SpeculativeJIT): (JSC::DFG::SpeculativeJIT::speculationCheck): (JSC::DFG::SpeculativeJIT::speculationWatchpoint): (JSC::DFG::SpeculativeJIT::convertLastOSRExitToForward): (JSC::DFG::SpeculativeJIT::forwardSpeculationCheck): (JSC::DFG::SpeculativeJIT::terminateSpeculativeExecution): (JSC::DFG::SpeculativeJIT::silentSavePlanForGPR): (JSC::DFG::SpeculativeJIT::silentSavePlanForFPR): (JSC::DFG::SpeculativeJIT::silentSpill): (JSC::DFG::SpeculativeJIT::silentFill): (JSC::DFG::SpeculativeJIT::checkArray): (JSC::DFG::SpeculativeJIT::arrayify): (JSC::DFG::SpeculativeJIT::fillStorage): (JSC::DFG::SpeculativeJIT::useChildren): (JSC::DFG::SpeculativeJIT::isStrictInt32): (JSC::DFG::SpeculativeJIT::isKnownInteger): (JSC::DFG::SpeculativeJIT::isKnownNumeric): (JSC::DFG::SpeculativeJIT::isKnownCell): (JSC::DFG::SpeculativeJIT::isKnownNotCell): (JSC::DFG::SpeculativeJIT::isKnownNotInteger): (JSC::DFG::SpeculativeJIT::isKnownNotNumber): (JSC::DFG::SpeculativeJIT::writeBarrier): (JSC::DFG::SpeculativeJIT::nonSpeculativeCompare): (JSC::DFG::SpeculativeJIT::nonSpeculativeStrictEq): (JSC::DFG::GPRTemporary::GPRTemporary): (JSC::DFG::FPRTemporary::FPRTemporary): (JSC::DFG::SpeculativeJIT::compilePeepHoleDoubleBranch): (JSC::DFG::SpeculativeJIT::compilePeepHoleObjectEquality): (JSC::DFG::SpeculativeJIT::compilePeepHoleIntegerBranch): (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch): (JSC::DFG::SpeculativeJIT::noticeOSRBirth): (JSC::DFG::SpeculativeJIT::compileMovHint): (JSC::DFG::SpeculativeJIT::compile): (JSC::DFG::SpeculativeJIT::checkArgumentTypes): (JSC::DFG::SpeculativeJIT::computeValueRecoveryFor): (JSC::DFG::SpeculativeJIT::compileDoublePutByVal): (JSC::DFG::SpeculativeJIT::compileGetCharCodeAt): (JSC::DFG::SpeculativeJIT::compileGetByValOnString): (JSC::DFG::SpeculativeJIT::checkGeneratedTypeForToInt32): (JSC::DFG::SpeculativeJIT::compileValueToInt32): (JSC::DFG::SpeculativeJIT::compileUInt32ToNumber): (JSC::DFG::SpeculativeJIT::compileDoubleAsInt32): (JSC::DFG::SpeculativeJIT::compileInt32ToDouble): (JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray): (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray): (JSC::DFG::SpeculativeJIT::compileGetByValOnFloatTypedArray): (JSC::DFG::SpeculativeJIT::compilePutByValForFloatTypedArray): (JSC::DFG::SpeculativeJIT::compileInstanceOfForObject): (JSC::DFG::SpeculativeJIT::compileInstanceOf): (JSC::DFG::SpeculativeJIT::compileSoftModulo): (JSC::DFG::SpeculativeJIT::compileAdd): (JSC::DFG::SpeculativeJIT::compileArithSub): (JSC::DFG::SpeculativeJIT::compileArithNegate): (JSC::DFG::SpeculativeJIT::compileArithMul): (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForX86): (JSC::DFG::SpeculativeJIT::compileArithMod): (JSC::DFG::SpeculativeJIT::compare): (JSC::DFG::SpeculativeJIT::compileStrictEqForConstant): (JSC::DFG::SpeculativeJIT::compileStrictEq): (JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage): (JSC::DFG::SpeculativeJIT::compileGetByValOnArguments): (JSC::DFG::SpeculativeJIT::compileGetArgumentsLength): (JSC::DFG::SpeculativeJIT::compileGetArrayLength): (JSC::DFG::SpeculativeJIT::compileNewFunctionNoCheck): (JSC::DFG::SpeculativeJIT::compileNewFunctionExpression): (JSC::DFG::SpeculativeJIT::compileRegExpExec): (JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage): (JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage): * dfg/DFGSpeculativeJIT.h: (SpeculativeJIT): (JSC::DFG::SpeculativeJIT::canReuse): (JSC::DFG::SpeculativeJIT::isFilled): (JSC::DFG::SpeculativeJIT::isFilledDouble): (JSC::DFG::SpeculativeJIT::use): (JSC::DFG::SpeculativeJIT::isConstant): (JSC::DFG::SpeculativeJIT::isJSConstant): (JSC::DFG::SpeculativeJIT::isInt32Constant): (JSC::DFG::SpeculativeJIT::isDoubleConstant): (JSC::DFG::SpeculativeJIT::isNumberConstant): (JSC::DFG::SpeculativeJIT::isBooleanConstant): (JSC::DFG::SpeculativeJIT::isFunctionConstant): (JSC::DFG::SpeculativeJIT::valueOfInt32Constant): (JSC::DFG::SpeculativeJIT::valueOfNumberConstant): (JSC::DFG::SpeculativeJIT::valueOfNumberConstantAsInt32): (JSC::DFG::SpeculativeJIT::addressOfDoubleConstant): (JSC::DFG::SpeculativeJIT::valueOfJSConstant): (JSC::DFG::SpeculativeJIT::valueOfBooleanConstant): (JSC::DFG::SpeculativeJIT::valueOfFunctionConstant): (JSC::DFG::SpeculativeJIT::isNullConstant): (JSC::DFG::SpeculativeJIT::valueOfJSConstantAsImm64): (JSC::DFG::SpeculativeJIT::detectPeepHoleBranch): (JSC::DFG::SpeculativeJIT::integerResult): (JSC::DFG::SpeculativeJIT::noResult): (JSC::DFG::SpeculativeJIT::cellResult): (JSC::DFG::SpeculativeJIT::booleanResult): (JSC::DFG::SpeculativeJIT::jsValueResult): (JSC::DFG::SpeculativeJIT::storageResult): (JSC::DFG::SpeculativeJIT::doubleResult): (JSC::DFG::SpeculativeJIT::initConstantInfo): (JSC::DFG::SpeculativeJIT::appendCallWithExceptionCheck): (JSC::DFG::SpeculativeJIT::isInteger): (JSC::DFG::SpeculativeJIT::temporaryRegisterForPutByVal): (JSC::DFG::SpeculativeJIT::emitAllocateBasicStorage): (JSC::DFG::SpeculativeJIT::setNodeForOperand): (JSC::DFG::IntegerOperand::IntegerOperand): (JSC::DFG::IntegerOperand::node): (JSC::DFG::IntegerOperand::gpr): (JSC::DFG::IntegerOperand::use): (IntegerOperand): (JSC::DFG::DoubleOperand::DoubleOperand): (JSC::DFG::DoubleOperand::node): (JSC::DFG::DoubleOperand::fpr): (JSC::DFG::DoubleOperand::use): (DoubleOperand): (JSC::DFG::JSValueOperand::JSValueOperand): (JSC::DFG::JSValueOperand::node): (JSC::DFG::JSValueOperand::gpr): (JSC::DFG::JSValueOperand::fill): (JSC::DFG::JSValueOperand::use): (JSValueOperand): (JSC::DFG::StorageOperand::StorageOperand): (JSC::DFG::StorageOperand::node): (JSC::DFG::StorageOperand::gpr): (JSC::DFG::StorageOperand::use): (StorageOperand): (JSC::DFG::SpeculateIntegerOperand::SpeculateIntegerOperand): (JSC::DFG::SpeculateIntegerOperand::node): (JSC::DFG::SpeculateIntegerOperand::gpr): (JSC::DFG::SpeculateIntegerOperand::use): (SpeculateIntegerOperand): (JSC::DFG::SpeculateStrictInt32Operand::SpeculateStrictInt32Operand): (JSC::DFG::SpeculateStrictInt32Operand::node): (JSC::DFG::SpeculateStrictInt32Operand::gpr): (JSC::DFG::SpeculateStrictInt32Operand::use): (SpeculateStrictInt32Operand): (JSC::DFG::SpeculateDoubleOperand::SpeculateDoubleOperand): (JSC::DFG::SpeculateDoubleOperand::node): (JSC::DFG::SpeculateDoubleOperand::fpr): (JSC::DFG::SpeculateDoubleOperand::use): (SpeculateDoubleOperand): (JSC::DFG::SpeculateCellOperand::SpeculateCellOperand): (JSC::DFG::SpeculateCellOperand::node): (JSC::DFG::SpeculateCellOperand::gpr): (JSC::DFG::SpeculateCellOperand::use): (SpeculateCellOperand): (JSC::DFG::SpeculateBooleanOperand::SpeculateBooleanOperand): (JSC::DFG::SpeculateBooleanOperand::node): (JSC::DFG::SpeculateBooleanOperand::gpr): (JSC::DFG::SpeculateBooleanOperand::use): (SpeculateBooleanOperand): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::fillInteger): (JSC::DFG::SpeculativeJIT::fillDouble): (JSC::DFG::SpeculativeJIT::fillJSValue): (JSC::DFG::SpeculativeJIT::nonSpeculativeValueToNumber): (JSC::DFG::SpeculativeJIT::nonSpeculativeValueToInt32): (JSC::DFG::SpeculativeJIT::nonSpeculativeUInt32ToNumber): (JSC::DFG::SpeculativeJIT::cachedPutById): (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull): (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull): (JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull): (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch): (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare): (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq): (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq): (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal): (JSC::DFG::SpeculativeJIT::fillSpeculateInt): (JSC::DFG::SpeculativeJIT::fillSpeculateIntStrict): (JSC::DFG::SpeculativeJIT::fillSpeculateDouble): (JSC::DFG::SpeculativeJIT::fillSpeculateCell): (JSC::DFG::SpeculativeJIT::fillSpeculateBoolean): (JSC::DFG::SpeculativeJIT::compileObjectEquality): (JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality): (JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality): (JSC::DFG::SpeculativeJIT::compileIntegerCompare): (JSC::DFG::SpeculativeJIT::compileDoubleCompare): (JSC::DFG::SpeculativeJIT::compileValueAdd): (JSC::DFG::SpeculativeJIT::compileNonStringCellOrOtherLogicalNot): (JSC::DFG::SpeculativeJIT::compileLogicalNot): (JSC::DFG::SpeculativeJIT::emitNonStringCellOrOtherBranch): (JSC::DFG::SpeculativeJIT::emitBranch): (JSC::DFG::SpeculativeJIT::compileContiguousPutByVal): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::fillInteger): (JSC::DFG::SpeculativeJIT::fillDouble): (JSC::DFG::SpeculativeJIT::fillJSValue): (JSC::DFG::SpeculativeJIT::nonSpeculativeValueToNumber): (JSC::DFG::SpeculativeJIT::nonSpeculativeValueToInt32): (JSC::DFG::SpeculativeJIT::nonSpeculativeUInt32ToNumber): (JSC::DFG::SpeculativeJIT::cachedPutById): (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull): (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull): (JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull): (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch): (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare): (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq): (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq): (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal): (JSC::DFG::SpeculativeJIT::fillSpeculateInt): (JSC::DFG::SpeculativeJIT::fillSpeculateIntStrict): (JSC::DFG::SpeculativeJIT::fillSpeculateDouble): (JSC::DFG::SpeculativeJIT::fillSpeculateCell): (JSC::DFG::SpeculativeJIT::fillSpeculateBoolean): (JSC::DFG::SpeculativeJIT::compileObjectEquality): (JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality): (JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality): (JSC::DFG::SpeculativeJIT::compileIntegerCompare): (JSC::DFG::SpeculativeJIT::compileDoubleCompare): (JSC::DFG::SpeculativeJIT::compileValueAdd): (JSC::DFG::SpeculativeJIT::compileNonStringCellOrOtherLogicalNot): (JSC::DFG::SpeculativeJIT::compileLogicalNot): (JSC::DFG::SpeculativeJIT::emitNonStringCellOrOtherBranch): (JSC::DFG::SpeculativeJIT::emitBranch): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGStructureAbstractValue.h: (StructureAbstractValue): * dfg/DFGStructureCheckHoistingPhase.cpp: (JSC::DFG::StructureCheckHoistingPhase::run): * dfg/DFGValidate.cpp: (DFG): (Validate): (JSC::DFG::Validate::validate): (JSC::DFG::Validate::reportValidationContext): * dfg/DFGValidate.h: * dfg/DFGValueSource.cpp: (JSC::DFG::ValueSource::dump): * dfg/DFGValueSource.h: (JSC::DFG::ValueSource::ValueSource): * dfg/DFGVirtualRegisterAllocationPhase.cpp: (JSC::DFG::VirtualRegisterAllocationPhase::run): * runtime/FunctionExecutableDump.cpp: Added. (JSC): (JSC::FunctionExecutableDump::dump): * runtime/FunctionExecutableDump.h: Added. (JSC): (FunctionExecutableDump): (JSC::FunctionExecutableDump::FunctionExecutableDump): * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): * runtime/JSGlobalData.h: (JSC): (DFG): (JSGlobalData): * runtime/Options.h: (JSC): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@141069 268f45cc-cd09-0410-ab3c-d52691b4dbfc
8ff092fc