Skip to content

Commit 92bc7ce

Browse files
author
Filip Pizlo
committed
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): Canonical link: https://commits.webkit.org/126374@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@141069 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent bbac779 commit 92bc7ce

72 files changed

Lines changed: 6830 additions & 5670 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎Source/JavaScriptCore/CMakeLists.txt‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,17 +78,21 @@ set(JavaScriptCore_SOURCES
7878
dfg/DFGAssemblyHelpers.cpp
7979
dfg/DFGByteCodeParser.cpp
8080
dfg/DFGCapabilities.cpp
81+
dfg/DFGCommon.cpp
8182
dfg/DFGCFAPhase.cpp
8283
dfg/DFGCFGSimplificationPhase.cpp
8384
dfg/DFGConstantFoldingPhase.cpp
8485
dfg/DFGCSEPhase.cpp
8586
dfg/DFGDisassembler.cpp
8687
dfg/DFGDominators.cpp
8788
dfg/DFGDriver.cpp
89+
dfg/DFGEdge.cpp
8890
dfg/DFGFixupPhase.cpp
8991
dfg/DFGGraph.cpp
9092
dfg/DFGJITCompiler.cpp
93+
dfg/DFGLongLivedState.cpp
9194
dfg/DFGMinifiedNode.cpp
95+
dfg/DFGNode.cpp
9296
dfg/DFGNodeFlags.cpp
9397
dfg/DFGOSREntry.cpp
9498
dfg/DFGOSRExit.cpp
@@ -217,6 +221,7 @@ set(JavaScriptCore_SOURCES
217221
runtime/ExceptionHelpers.cpp
218222
runtime/Executable.cpp
219223
runtime/FunctionConstructor.cpp
224+
runtime/FunctionExecutableDump.cpp
220225
runtime/FunctionPrototype.cpp
221226
runtime/GCActivityCallback.cpp
222227
runtime/GetterSetter.cpp

‎Source/JavaScriptCore/ChangeLog‎

Lines changed: 670 additions & 0 deletions
Large diffs are not rendered by default.

‎Source/JavaScriptCore/GNUmakefile.list.am‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ javascriptcore_sources += \
168168
Source/JavaScriptCore/dfg/DFGAbstractState.h \
169169
Source/JavaScriptCore/dfg/DFGAbstractValue.h \
170170
Source/JavaScriptCore/dfg/DFGAdjacencyList.h \
171+
Source/JavaScriptCore/dfg/DFGAllocator.h \
171172
Source/JavaScriptCore/dfg/DFGArgumentPosition.h \
172173
Source/JavaScriptCore/dfg/DFGArgumentsSimplificationPhase.cpp \
173174
Source/JavaScriptCore/dfg/DFGArgumentsSimplificationPhase.h \
@@ -189,6 +190,7 @@ javascriptcore_sources += \
189190
Source/JavaScriptCore/dfg/DFGCapabilities.h \
190191
Source/JavaScriptCore/dfg/DFGCFAPhase.cpp \
191192
Source/JavaScriptCore/dfg/DFGCFAPhase.h \
193+
Source/JavaScriptCore/dfg/DFGCommon.cpp \
192194
Source/JavaScriptCore/dfg/DFGCommon.h \
193195
Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp \
194196
Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.h \
@@ -201,6 +203,7 @@ javascriptcore_sources += \
201203
Source/JavaScriptCore/dfg/DFGDoubleFormatState.h \
202204
Source/JavaScriptCore/dfg/DFGDriver.cpp \
203205
Source/JavaScriptCore/dfg/DFGDriver.h \
206+
Source/JavaScriptCore/dfg/DFGEdge.cpp \
204207
Source/JavaScriptCore/dfg/DFGEdge.h \
205208
Source/JavaScriptCore/dfg/DFGFPRInfo.h \
206209
Source/JavaScriptCore/dfg/DFGFixupPhase.cpp \
@@ -212,11 +215,15 @@ javascriptcore_sources += \
212215
Source/JavaScriptCore/dfg/DFGInsertionSet.h \
213216
Source/JavaScriptCore/dfg/DFGJITCompiler.cpp \
214217
Source/JavaScriptCore/dfg/DFGJITCompiler.h \
218+
Source/JavaScriptCore/dfg/DFGLongLivedState.cpp \
219+
Source/JavaScriptCore/dfg/DFGLongLivedState.h \
215220
Source/JavaScriptCore/dfg/DFGMinifiedGraph.h \
216221
Source/JavaScriptCore/dfg/DFGMinifiedID.h \
217222
Source/JavaScriptCore/dfg/DFGMinifiedNode.cpp \
218223
Source/JavaScriptCore/dfg/DFGMinifiedNode.h \
224+
Source/JavaScriptCore/dfg/DFGNode.cpp \
219225
Source/JavaScriptCore/dfg/DFGNode.h \
226+
Source/JavaScriptCore/dfg/DFGNodeAllocator.h \
220227
Source/JavaScriptCore/dfg/DFGNodeFlags.cpp \
221228
Source/JavaScriptCore/dfg/DFGNodeFlags.h \
222229
Source/JavaScriptCore/dfg/DFGNodeType.h \
@@ -580,6 +587,8 @@ javascriptcore_sources += \
580587
Source/JavaScriptCore/runtime/ExecutionHarness.h \
581588
Source/JavaScriptCore/runtime/FunctionConstructor.cpp \
582589
Source/JavaScriptCore/runtime/FunctionConstructor.h \
590+
Source/JavaScriptCore/runtime/FunctionExecutableDump.cpp \
591+
Source/JavaScriptCore/runtime/FunctionExecutableDump.h \
583592
Source/JavaScriptCore/runtime/FunctionPrototype.cpp \
584593
Source/JavaScriptCore/runtime/FunctionPrototype.h \
585594
Source/JavaScriptCore/runtime/GCActivityCallback.cpp \

‎Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj‎

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,13 @@
264264
0FEB3ECF16237F6C00AB67AD /* MacroAssembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEB3ECE16237F6700AB67AD /* MacroAssembler.cpp */; };
265265
0FEFC9AA1681A3B300567F53 /* DFGOSRExitJumpPlaceholder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEFC9A71681A3B000567F53 /* DFGOSRExitJumpPlaceholder.cpp */; };
266266
0FEFC9AB1681A3B600567F53 /* DFGOSRExitJumpPlaceholder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEFC9A81681A3B000567F53 /* DFGOSRExitJumpPlaceholder.h */; settings = {ATTRIBUTES = (Private, ); }; };
267+
0FF0F19916B729F6005DF95B /* DFGLongLivedState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB4B51C16B62772003F696B /* DFGLongLivedState.cpp */; };
268+
0FF0F19B16B729FA005DF95B /* DFGLongLivedState.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB4B51D16B62772003F696B /* DFGLongLivedState.h */; settings = {ATTRIBUTES = (Private, ); }; };
269+
0FF0F19C16B72A03005DF95B /* DFGNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB4B51E16B62772003F696B /* DFGNode.cpp */; };
270+
0FF0F19D16B72A08005DF95B /* DFGCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB4B51A16B62772003F696B /* DFGCommon.cpp */; };
271+
0FF0F19E16B72A0B005DF95B /* DFGEdge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB4B51B16B62772003F696B /* DFGEdge.cpp */; };
272+
0FF0F19F16B72A17005DF95B /* FunctionExecutableDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FB4B52116B6278D003F696B /* FunctionExecutableDump.cpp */; };
273+
0FF0F1A016B72A1A005DF95B /* FunctionExecutableDump.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FB4B52216B6278D003F696B /* FunctionExecutableDump.h */; settings = {ATTRIBUTES = (Private, ); }; };
267274
0FF42731158EBD54004CB9FF /* Disassembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FF4272F158EBD44004CB9FF /* Disassembler.h */; settings = {ATTRIBUTES = (Private, ); }; };
268275
0FF42732158EBD58004CB9FF /* UDis86Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FF42730158EBD44004CB9FF /* UDis86Disassembler.cpp */; };
269276
0FF42740158EBE8B004CB9FF /* udis86_decode.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FF42734158EBD94004CB9FF /* udis86_decode.c */; };
@@ -1080,6 +1087,15 @@
10801087
0FB105891675482E00F8AB6E /* ProfilerOSRExitSite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProfilerOSRExitSite.cpp; path = profiler/ProfilerOSRExitSite.cpp; sourceTree = "<group>"; };
10811088
0FB1058A1675482E00F8AB6E /* ProfilerOSRExitSite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProfilerOSRExitSite.h; path = profiler/ProfilerOSRExitSite.h; sourceTree = "<group>"; };
10821089
0FB4B51016B3A964003F696B /* DFGMinifiedID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGMinifiedID.h; path = dfg/DFGMinifiedID.h; sourceTree = "<group>"; };
1090+
0FB4B51916B62772003F696B /* DFGAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAllocator.h; path = dfg/DFGAllocator.h; sourceTree = "<group>"; };
1091+
0FB4B51A16B62772003F696B /* DFGCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGCommon.cpp; path = dfg/DFGCommon.cpp; sourceTree = "<group>"; };
1092+
0FB4B51B16B62772003F696B /* DFGEdge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGEdge.cpp; path = dfg/DFGEdge.cpp; sourceTree = "<group>"; };
1093+
0FB4B51C16B62772003F696B /* DFGLongLivedState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGLongLivedState.cpp; path = dfg/DFGLongLivedState.cpp; sourceTree = "<group>"; };
1094+
0FB4B51D16B62772003F696B /* DFGLongLivedState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGLongLivedState.h; path = dfg/DFGLongLivedState.h; sourceTree = "<group>"; };
1095+
0FB4B51E16B62772003F696B /* DFGNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGNode.cpp; path = dfg/DFGNode.cpp; sourceTree = "<group>"; };
1096+
0FB4B51F16B62772003F696B /* DFGNodeAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGNodeAllocator.h; path = dfg/DFGNodeAllocator.h; sourceTree = "<group>"; };
1097+
0FB4B52116B6278D003F696B /* FunctionExecutableDump.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FunctionExecutableDump.cpp; sourceTree = "<group>"; };
1098+
0FB4B52216B6278D003F696B /* FunctionExecutableDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionExecutableDump.h; sourceTree = "<group>"; };
10831099
0FB5467614F59AD1002C2989 /* LazyOperandValueProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LazyOperandValueProfile.h; sourceTree = "<group>"; };
10841100
0FB5467814F5C468002C2989 /* LazyOperandValueProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LazyOperandValueProfile.cpp; sourceTree = "<group>"; };
10851101
0FB5467A14F5C7D4002C2989 /* MethodOfGettingAValueProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MethodOfGettingAValueProfile.h; sourceTree = "<group>"; };
@@ -2333,6 +2349,8 @@
23332349
0F21C27A14BE727300ADC64B /* ExecutionHarness.h */,
23342350
BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */,
23352351
BC2680C10E16D4E900A06E92 /* FunctionConstructor.h */,
2352+
0FB4B52116B6278D003F696B /* FunctionExecutableDump.cpp */,
2353+
0FB4B52216B6278D003F696B /* FunctionExecutableDump.h */,
23362354
F692A85C0255597D01FF60F7 /* FunctionPrototype.cpp */,
23372355
F692A85D0255597D01FF60F7 /* FunctionPrototype.h */,
23382356
C2D58C3315912FEE0021A844 /* GCActivityCallback.cpp */,
@@ -2359,6 +2377,9 @@
23592377
BC7F8FBA0E19D1EF008632C0 /* JSCell.cpp */,
23602378
BC1167D80E19BCC9008066DD /* JSCell.h */,
23612379
0F97496F1687ADE200A4FF6A /* JSCellInlines.h */,
2380+
F692A8870255597D01FF60F7 /* JSCJSValue.cpp */,
2381+
14ABB36E099C076400E2A24F /* JSCJSValue.h */,
2382+
865A30F0135007E100CDB49E /* JSCJSValueInlines.h */,
23622383
9788FC221471AD0C0068CE2D /* JSDateMath.cpp */,
23632384
9788FC231471AD0C0068CE2D /* JSDateMath.h */,
23642385
C2A7F687160432D400F76B98 /* JSDestructibleObject.h */,
@@ -2398,9 +2419,6 @@
23982419
0F919D0A157EE09D004A4E7D /* JSSymbolTableObject.h */,
23992420
14ABB454099C2A0F00E2A24F /* JSType.h */,
24002421
6507D2970E871E4A00D7D896 /* JSTypeInfo.h */,
2401-
F692A8870255597D01FF60F7 /* JSCJSValue.cpp */,
2402-
14ABB36E099C076400E2A24F /* JSCJSValue.h */,
2403-
865A30F0135007E100CDB49E /* JSCJSValueInlines.h */,
24042422
BC22A39A0E16E14800AF21C8 /* JSVariableObject.cpp */,
24052423
14F252560D08DD8D004ECFFF /* JSVariableObject.h */,
24062424
1442565F15EDE98D0066A49B /* JSWithScope.cpp */,
@@ -2551,6 +2569,7 @@
25512569
0F62016E143FCD2F0068B77C /* DFGAbstractState.h */,
25522570
0F62016F143FCD2F0068B77C /* DFGAbstractValue.h */,
25532571
0F66E16814DF3F1300B7B2E4 /* DFGAdjacencyList.h */,
2572+
0FB4B51916B62772003F696B /* DFGAllocator.h */,
25542573
0F1E3A431534CBAD000F9456 /* DFGArgumentPosition.h */,
25552574
0F16015A156198BF00C2587C /* DFGArgumentsSimplificationPhase.cpp */,
25562575
0F16015B156198BF00C2587C /* DFGArgumentsSimplificationPhase.h */,
@@ -2572,6 +2591,7 @@
25722591
0FFFC94C14EF909500C72532 /* DFGCFAPhase.h */,
25732592
0F3B3A241544C991003ED0FF /* DFGCFGSimplificationPhase.cpp */,
25742593
0F3B3A251544C991003ED0FF /* DFGCFGSimplificationPhase.h */,
2594+
0FB4B51A16B62772003F696B /* DFGCommon.cpp */,
25752595
0FC0977E1469EBC400CF2442 /* DFGCommon.h */,
25762596
0F3B3A17153E68EF003ED0FF /* DFGConstantFoldingPhase.cpp */,
25772597
0F3B3A18153E68EF003ED0FF /* DFGConstantFoldingPhase.h */,
@@ -2584,6 +2604,7 @@
25842604
0F1E3A441534CBAD000F9456 /* DFGDoubleFormatState.h */,
25852605
0FD3C82014115CF800FD81CB /* DFGDriver.cpp */,
25862606
0FD3C82214115D0E00FD81CB /* DFGDriver.h */,
2607+
0FB4B51B16B62772003F696B /* DFGEdge.cpp */,
25872608
0F66E16914DF3F1300B7B2E4 /* DFGEdge.h */,
25882609
0F2BDC12151C5D4A00CD8910 /* DFGFixupPhase.cpp */,
25892610
0F2BDC13151C5D4A00CD8910 /* DFGFixupPhase.h */,
@@ -2595,11 +2616,15 @@
25952616
0F2BDC1F151E803800CD8910 /* DFGInsertionSet.h */,
25962617
86EC9DBB1328DF82002B2AD7 /* DFGJITCompiler.cpp */,
25972618
86EC9DBC1328DF82002B2AD7 /* DFGJITCompiler.h */,
2619+
0FB4B51C16B62772003F696B /* DFGLongLivedState.cpp */,
2620+
0FB4B51D16B62772003F696B /* DFGLongLivedState.h */,
25982621
0F2BDC3D1522801700CD8910 /* DFGMinifiedGraph.h */,
25992622
0FB4B51016B3A964003F696B /* DFGMinifiedID.h */,
26002623
0F2BDC4C1522818300CD8910 /* DFGMinifiedNode.cpp */,
26012624
0F2BDC3E1522801700CD8910 /* DFGMinifiedNode.h */,
2625+
0FB4B51E16B62772003F696B /* DFGNode.cpp */,
26022626
86ECA3E9132DEF1C002B2AD7 /* DFGNode.h */,
2627+
0FB4B51F16B62772003F696B /* DFGNodeAllocator.h */,
26032628
0FA581B7150E952A00B9A2D9 /* DFGNodeFlags.cpp */,
26042629
0FA581B8150E952A00B9A2D9 /* DFGNodeFlags.h */,
26052630
0FA581B9150E952A00B9A2D9 /* DFGNodeType.h */,
@@ -3292,6 +3317,8 @@
32923317
86704B4312DB8A8100A9FE7B /* YarrSyntaxChecker.h in Headers */,
32933318
0F9749711687ADE400A4FF6A /* JSCellInlines.h in Headers */,
32943319
1474C33B16AA2D950062F01D /* PrototypeMap.h in Headers */,
3320+
0FF0F19B16B729FA005DF95B /* DFGLongLivedState.h in Headers */,
3321+
0FF0F1A016B72A1A005DF95B /* FunctionExecutableDump.h in Headers */,
32953322
14CA958B16AB50DE00938A06 /* StaticPropertyAnalyzer.h in Headers */,
32963323
14CA958D16AB50FA00938A06 /* ObjectAllocationProfile.h in Headers */,
32973324
14DF04DA16B3996D0016A513 /* StaticPropertyAnalysis.h in Headers */,
@@ -3923,6 +3950,11 @@
39233950
86704B8912DBA33700A9FE7B /* YarrPattern.cpp in Sources */,
39243951
86704B4212DB8A8100A9FE7B /* YarrSyntaxChecker.cpp in Sources */,
39253952
1474C33C16AA2D9B0062F01D /* PrototypeMap.cpp in Sources */,
3953+
0FF0F19916B729F6005DF95B /* DFGLongLivedState.cpp in Sources */,
3954+
0FF0F19C16B72A03005DF95B /* DFGNode.cpp in Sources */,
3955+
0FF0F19D16B72A08005DF95B /* DFGCommon.cpp in Sources */,
3956+
0FF0F19E16B72A0B005DF95B /* DFGEdge.cpp in Sources */,
3957+
0FF0F19F16B72A17005DF95B /* FunctionExecutableDump.cpp in Sources */,
39263958
);
39273959
runOnlyForDeploymentPostprocessing = 0;
39283960
};

‎Source/JavaScriptCore/Target.pri‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,17 +114,21 @@ SOURCES += \
114114
dfg/DFGAssemblyHelpers.cpp \
115115
dfg/DFGByteCodeParser.cpp \
116116
dfg/DFGCapabilities.cpp \
117+
dfg/DFGCommon.cpp \
117118
dfg/DFGCFAPhase.cpp \
118119
dfg/DFGCFGSimplificationPhase.cpp \
119120
dfg/DFGConstantFoldingPhase.cpp \
120121
dfg/DFGCSEPhase.cpp \
121122
dfg/DFGDisassembler.cpp \
122123
dfg/DFGDominators.cpp \
123124
dfg/DFGDriver.cpp \
125+
dfg/DFGEdge.cpp \
124126
dfg/DFGFixupPhase.cpp \
125127
dfg/DFGGraph.cpp \
126128
dfg/DFGJITCompiler.cpp \
129+
dfg/DFGLongLivedState.cpp \
127130
dfg/DFGMinifiedNode.cpp \
131+
dfg/DFGNode.cpp \
128132
dfg/DFGNodeFlags.cpp \
129133
dfg/DFGOperations.cpp \
130134
dfg/DFGOSREntry.cpp \
@@ -235,6 +239,7 @@ SOURCES += \
235239
runtime/ExceptionHelpers.cpp \
236240
runtime/Executable.cpp \
237241
runtime/FunctionConstructor.cpp \
242+
runtime/FunctionExecutableDump.cpp \
238243
runtime/FunctionPrototype.cpp \
239244
runtime/GCActivityCallback.cpp \
240245
runtime/GetterSetter.cpp \

‎Source/JavaScriptCore/bytecode/DataFormat.h‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,12 @@ inline const char* dataFormatToString(DataFormat dataFormat)
8282
return "JSCell";
8383
case DataFormatJSBoolean:
8484
return "JSBoolean";
85+
case DataFormatDead:
86+
return "Dead";
87+
case DataFormatArguments:
88+
return "Arguments";
8589
default:
90+
RELEASE_ASSERT_NOT_REACHED();
8691
return "Unknown";
8792
}
8893
}

0 commit comments

Comments
 (0)