haikuwebkit/Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.h

120 lines
3.5 KiB
C
Raw Permalink Normal View History

Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
/*
Implement a GC verifier. https://bugs.webkit.org/show_bug.cgi?id=217274 rdar://56255683 Reviewed by Filip Pizlo and Saam Barati. Source/JavaScriptCore: The idea behind the GC verifier is that in the GC End phase before we finalize and sweep, we'll do a simple stop the world synchronous full GC with the VerifierSlotVisitor. The VerifierSlotVisitor will collect it's own information on whether a JS cell should be marked or not. After this verifier GC pass, we'll compare the mark results. If the verifier GC says a cell should be marked, then the real GC should have marked the cell. The reverse is not true: if the verifier does not mark a cell, it is still OK for the real GC to mark it. For example, in an eden GC, all old generation cells would be considered mark by the real GC though the verifier would know better if they are already dead. Implementation details: 1. SlotVisitor (only used by the real GC) now inherits from a new abstract class, AbstractSlotVisitor. VerifierSlotVisitor (only used by the verifier GC) also inherits from AbstractSlotVisitor. 2. AbstractSlotVisitor declares many virtual methods. SlotVisitor implements some of these virtual methods as inline and final. If the client is invoking one these methods and knows that it will be operating on a SlotVisitor, the method being final allows it to be inlined into the client instead of going through the virtual dispatch. For the VerifierSlotVisitor, these methods will always be invoked by virtual dispatch via the AbstractSlotVisitor abstraction. 3. Almost all methods that takes a SlotVisitor previously (with a few exceptions) will now be templatized, and specialized to either take a SlotVisitor or an AbstractSlotVisitor. The cell MethodTable will now have 2 versions of visitChildren and visitOutputConstraints: one for SlotVisitor, and one for AbstractSlotVisitor. The reason we don't wire the 2nd version to VerifierSlotVisitor (instead of AbstractSlotVisitor) is because we don't need the GC verifier to run at top speed (though we don't want it to be too slow). Also, having hooks for using an AbstractSlotVisitor gives us more utility for implementing other types of GC checkers / analyzers in the future as subclasses of AbstractSlotVisitor. 4. Some minority of methods that used to take a SlotVisitor but are not critical to performance, will now just take an AbstractSlotVisitor instead. For example, see TypeProfilerLog::visit(). 5. isReachableFromOpaqueRoots() methods will also only take an AbstractSlotVisitor. The reason this is OK is because isReachableFromOpaqueRoots() only uses the visitor's addOpaqueRoot() and containsOpaqueRoot() methods, which are implemented in the AbstractSlotVisitor itself. For SlotVisitor, the m_opaqueRoot field will reference Heap::m_opaqueRoots. For VerifierSlotVisitor, the m_opaqueRoot field will reference its own opaque roots storage. This implementation of addOpaqueRoot() is perf neutral for SlotVisitor because where it would previously invoke m_heap.m_opaqueRoots.add(), it will now invoke m_opaqueRoot.add() instead where m_opaqueRoot points to m_heap.m_opaqueRoots. Ditto for AbstractSlotVisitor::containsOpaqueRoot(). 6. When reifying a templatized visit method, we do it in 2 ways: a. Implement the template method as an ALWAYS_INLINE Impl method, and have 2 visit methods (taking a SlotVisitor and an AbstractSlotVisitor respectively) inline the Impl method. For example, see JSObject::visitChildrenImpl(). b. Just templatize the visit method, and explicitly instantiate it with a SlotVisitor and an AbstractSlotVisitor. For example, see DesiredTransition::visitChildren(). The reason we need form (a) is if: i. we need to export the visit methods. For example, see JSObject:visitChildren(). Note: A Clang engineer told me that "there's no way to export an explicit instantiation that will make it a strong symbol." This is because "C++ does not provide any standard way to guarantee that an explicit instantiation is unique, and Clang hasn't added any extension to do so." ii. the visit method is an override of a virtual method. For example, see DFG::Scannable::visitChildren() and DFG::Graph::visitChildren(). Otherwise, we'll prefer form (b) as it is natural C++. 7. Because templatizing all the visit methods requires a lot of boiler plate code, we introduce some macros in SlotVisitorMacros.h to reduce some of the boiler plate burden. We especially try to do this for methods of form (a) (see (6) above) which require more boiler plate. 8. The driver of the real GC is MarkingConstraintSet::executeConvergence() which runs with the MarkingConstraintSolver. The driver of the verifier GC is Heap::verifyGC(), which has a loop to drain marked objects and execute contraints. 9. The GC verifier is built in by default but disabled. The relevant options are: JSC_verifyGC and JSC_verboseVerifyGC. JSC_verifyGC will enable the GC verifier. If JSC_verifyGC is true and the verifier finds a cell that is erroneously not marked by the real GC, it will dump an error message and then crash with a RELEASE_ASSERT. JSC_verboseVerifyGC will enable the GC verifier along with some more heavy weight record keeping (i.e. tracking the parent / owner cell that marked a cell, and capturing the call stack when the marked cell is appended to the mark stack). If JSC_verboseVerifyGC is true and the verifier finds a cell that is erroneously not marked by the real GC, it will dump the parent cell and captured stack along with an error message before crashing. This extra information provides the starting point for debugging GC bugs found by the verifier. Enabling JSC_verboseVerifyGC will automatically enable JSC_verifyGC. 10. Non-determinism in the real GC. The GC verifier's algorithm relies on the real GC being deterministic. However, there are a few places where this is not true: a. Marking conservative roots on the mutator stacks. By the time the verifier GC runs (in the GC End phase), the mutator stacks will look completely different than what the real GC saw. To work around this, if the verifier is enabled, then every conservative root captured by the real GC will also be added to the verifier's mark stack. When running verifyGC() in the End phase, the conservative root scans will be treated as no-ops. b. CodeBlock::shouldJettisonDueToOldAge() may return a different value. This is possible because the codeBlock may be in mid compilation while the real GC is in progress. CodeBlock::shouldVisitStrongly() calls shouldJettisonDueToOldAge(), and may see an old LLInt codeBlock whose timeToLive has expired. As a result, shouldJettisonDueToOldAge() returns true and shouldVisitStrongly() will return false for the real GC, leading to it not marking the codeBlock. However, before the verifier GC gets to run, baseline compilation on the codeBlock may finish. As a baseline codeBlock now, it gets a longer time to live. As a result, when the verifier GC runs, shouldJettisonDueToOldAge() will return false, and shouldVisitStrongly() in turn returns true. This results in the verifier GC marking the codeBlock (and its children) when the real GC did not, which leads to a false error. This is not a real error because if the real GC did not mark the code block, it will simply get jettisoned, and can be reinstantiated when needed later. There's no GC bug here. However, we do need to work around this to prevent the false error for the GC verifier. The work around is to introduce a CodeBlock::m_visitChildrenSkippedDueToOldAge flag that records what the real GC decided in shouldJettisonDueToOldAge(). This allows the verifier GC to replay the same decision and get a consistent result. c. CodeBlock::propagateTransitions() will only do a best effort at visiting cells in ICs, etc. If a cell is not already strongly marked by the time CodeBlock::propagateTransitions() checks it, propagateTransitions() will not mark other cells that are reachable from it. Since the real GC does marking on concurrent threads, marking order is not deterministic. CodeBlock::propagateTransitions() may or may not see a cell as already marked by the time it runs. The verifier GC may mark some of these cells in a different order than the real GC. As a result, in the verifier GC, CodeBlock::propagateTransitions() may see a cell as marked (and therefore, visit its children) when it did not for the real GC. To work around this, we currently add a SuppressGCVerifierScope to CodeBlock::propagateTransitions() to pessimize the verifier, and assume that propagateTransitions() will mark nothing. SuppressGCVerifierScope is a blunt hammer that stops the verifier GC from analyzing all cells potentially reachable via CodeBlock::propagateTransitions(). In the future, it may be possible to refine this and track which cells were actually skipped over (like we did for shouldJettisonDueToOldAge()). However, this decision tracking needs to be done in the real GC, and can be very expensive in terms of performance. The shouldJettisonDueToOldAge() case is rare, and as such lends itself to this more fine grain tracking without hurting performance. The decisions made in CodeBlock::propagateTransitions() are not as rare, and hence, it would hurt performance if we did fine grain decision tracking there (at least or now). 11. Marking in the verifier GC. The real GC tracks cell marks using a Bitmap in the MarkedBlocks. The verifier GC keeps tracks of MarkedBlock cell marks using a Bitmap on the side, stashed away in a HashMap. To improve the verifier marking performance, we reserve a void* m_verifierMemo pointer in the MarkedBlock, which the verifier will employ to cache its MarkedBlockData for that MarkedBlock. This allows the verifier to get to its side Bitmap without having to do a HashMap look up for every cell. Size-wise, in the current 16K MarkBlocks, there is previously room for 1005.5 atoms after reserving space for the MarkedBlock::Footer. Since we can never allocate half an atom anyway, that .5 atom gives us the 8 bytes we need for the m_verifierMemo pointer, which we'll put in the MarkedBlock::Footer. With this patch, each MarkedBlock will now have exactly 1005 atoms available for allocation. I ran JetStream2 and Speedometer2 locally on a MacBookAir10,1, MacBookPro16,1, and a 12.9” 4th Gen iPad Pro. The benchmark results for these were all neutral. The design of the GC verifier is such that it incurs almost no additional runtime memory overhead if not in use. Code size does increase significantly because there are now 2 variants of most of the methods that take a SlotVisitor. When in use, the additional runtime memory is encapsulated in the VerifierSlotVisitor, which is instantiated and destructed every GC cycle. Hence, it can affect peak memory usage during GCs, but the cost is transient. It does not persist past the GC End phase. * API/JSAPIWrapperObject.h: * API/JSAPIWrapperObject.mm: (JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots): (JSC::JSAPIWrapperObject::visitChildrenImpl): (JSC::JSAPIWrapperObject::visitChildren): Deleted. * API/JSCallbackObject.cpp: * API/JSCallbackObject.h: (JSC::JSCallbackObjectData::visitChildren): (JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren): (JSC::JSCallbackObject<Parent>::visitChildrenImpl): * API/JSManagedValue.mm: (JSManagedValueHandleOwner::isReachableFromOpaqueRoots): * API/JSMarkingConstraintPrivate.cpp: (JSC::isMarked): (JSContextGroupAddMarkingConstraint): * API/JSVirtualMachine.mm: (scanExternalObjectGraph): (scanExternalRememberedSet): * API/JSVirtualMachineInternal.h: * API/MarkedJSValueRefArray.cpp: (JSC::MarkedJSValueRefArray::visitAggregate): * API/MarkedJSValueRefArray.h: * API/glib/JSAPIWrapperGlobalObject.cpp: (JSC::JSAPIWrapperGlobalObject::visitChildren): Deleted. * API/glib/JSAPIWrapperGlobalObject.h: * API/glib/JSAPIWrapperObjectGLib.cpp: (JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots): (JSC::JSAPIWrapperObject::visitChildrenImpl): (JSC::JSAPIWrapperObject::visitChildren): Deleted. * CMakeLists.txt: * JavaScriptCore.xcodeproj/project.pbxproj: * Scripts/wkbuiltins/builtins_generate_internals_wrapper_header.py: (BuiltinsInternalsWrapperHeaderGenerator): * Scripts/wkbuiltins/builtins_generate_internals_wrapper_implementation.py: (BuiltinsInternalsWrapperImplementationGenerator.generate_visit_method): * Scripts/wkbuiltins/builtins_templates.py: * Sources.txt: * bytecode/AccessCase.cpp: (JSC::AccessCase::propagateTransitions const): (JSC::AccessCase::visitAggregateImpl const): (JSC::AccessCase::visitAggregate const): Deleted. * bytecode/AccessCase.h: * bytecode/ByValInfo.cpp: (JSC::ByValInfo::visitAggregateImpl): (JSC::ByValInfo::visitAggregate): Deleted. * bytecode/ByValInfo.h: * bytecode/CheckPrivateBrandStatus.cpp: (JSC::CheckPrivateBrandStatus::visitAggregateImpl): (JSC::CheckPrivateBrandStatus::markIfCheap): (JSC::CheckPrivateBrandStatus::visitAggregate): Deleted. * bytecode/CheckPrivateBrandStatus.h: * bytecode/CheckPrivateBrandVariant.cpp: (JSC::CheckPrivateBrandVariant::markIfCheap): (JSC::CheckPrivateBrandVariant::visitAggregateImpl): (JSC::CheckPrivateBrandVariant::visitAggregate): Deleted. * bytecode/CheckPrivateBrandVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::visitChildrenImpl): (JSC::CodeBlock::visitChildren): (JSC::CodeBlock::shouldVisitStrongly): (JSC::CodeBlock::shouldJettisonDueToOldAge): (JSC::shouldMarkTransition): (JSC::CodeBlock::propagateTransitions): (JSC::CodeBlock::determineLiveness): (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::visitOSRExitTargets): (JSC::CodeBlock::stronglyVisitStrongReferences): (JSC::CodeBlock::stronglyVisitWeakReferences): * bytecode/CodeBlock.h: * bytecode/DeleteByIdVariant.cpp: (JSC::DeleteByIdVariant::visitAggregateImpl): (JSC::DeleteByIdVariant::markIfCheap): (JSC::DeleteByIdVariant::visitAggregate): Deleted. * bytecode/DeleteByIdVariant.h: * bytecode/DeleteByStatus.cpp: (JSC::DeleteByStatus::visitAggregateImpl): (JSC::DeleteByStatus::markIfCheap): (JSC::DeleteByStatus::visitAggregate): Deleted. * bytecode/DeleteByStatus.h: * bytecode/DirectEvalCodeCache.cpp: (JSC::DirectEvalCodeCache::visitAggregateImpl): (JSC::DirectEvalCodeCache::visitAggregate): Deleted. * bytecode/DirectEvalCodeCache.h: * bytecode/ExecutableToCodeBlockEdge.cpp: (JSC::ExecutableToCodeBlockEdge::visitChildrenImpl): (JSC::ExecutableToCodeBlockEdge::visitOutputConstraintsImpl): (JSC::ExecutableToCodeBlockEdge::runConstraint): (JSC::ExecutableToCodeBlockEdge::visitChildren): Deleted. (JSC::ExecutableToCodeBlockEdge::visitOutputConstraints): Deleted. * bytecode/ExecutableToCodeBlockEdge.h: * bytecode/GetByIdVariant.cpp: (JSC::GetByIdVariant::visitAggregateImpl): (JSC::GetByIdVariant::markIfCheap): (JSC::GetByIdVariant::visitAggregate): Deleted. * bytecode/GetByIdVariant.h: * bytecode/GetByStatus.cpp: (JSC::GetByStatus::visitAggregateImpl): (JSC::GetByStatus::markIfCheap): (JSC::GetByStatus::visitAggregate): Deleted. * bytecode/GetByStatus.h: * bytecode/InByIdStatus.cpp: (JSC::InByIdStatus::markIfCheap): * bytecode/InByIdStatus.h: * bytecode/InByIdVariant.cpp: (JSC::InByIdVariant::markIfCheap): * bytecode/InByIdVariant.h: * bytecode/InternalFunctionAllocationProfile.h: (JSC::InternalFunctionAllocationProfile::visitAggregate): * bytecode/ObjectAllocationProfile.h: (JSC::ObjectAllocationProfileBase::visitAggregate): (JSC::ObjectAllocationProfileWithPrototype::visitAggregate): * bytecode/PolymorphicAccess.cpp: (JSC::PolymorphicAccess::propagateTransitions const): (JSC::PolymorphicAccess::visitAggregateImpl): (JSC::PolymorphicAccess::visitAggregate): Deleted. * bytecode/PolymorphicAccess.h: * bytecode/PutByIdStatus.cpp: (JSC::PutByIdStatus::markIfCheap): * bytecode/PutByIdStatus.h: * bytecode/PutByIdVariant.cpp: (JSC::PutByIdVariant::markIfCheap): * bytecode/PutByIdVariant.h: * bytecode/RecordedStatuses.cpp: (JSC::RecordedStatuses::visitAggregateImpl): (JSC::RecordedStatuses::markIfCheap): (JSC::RecordedStatuses::visitAggregate): Deleted. * bytecode/RecordedStatuses.h: * bytecode/SetPrivateBrandStatus.cpp: (JSC::SetPrivateBrandStatus::visitAggregateImpl): (JSC::SetPrivateBrandStatus::markIfCheap): (JSC::SetPrivateBrandStatus::visitAggregate): Deleted. * bytecode/SetPrivateBrandStatus.h: * bytecode/SetPrivateBrandVariant.cpp: (JSC::SetPrivateBrandVariant::markIfCheap): (JSC::SetPrivateBrandVariant::visitAggregateImpl): (JSC::SetPrivateBrandVariant::visitAggregate): Deleted. * bytecode/SetPrivateBrandVariant.h: * bytecode/StructureSet.cpp: (JSC::StructureSet::markIfCheap const): * bytecode/StructureSet.h: * bytecode/StructureStubInfo.cpp: (JSC::StructureStubInfo::visitAggregateImpl): (JSC::StructureStubInfo::propagateTransitions): (JSC::StructureStubInfo::visitAggregate): Deleted. * bytecode/StructureStubInfo.h: * bytecode/UnlinkedCodeBlock.cpp: (JSC::UnlinkedCodeBlock::visitChildrenImpl): (JSC::UnlinkedCodeBlock::visitChildren): Deleted. * bytecode/UnlinkedCodeBlock.h: * bytecode/UnlinkedFunctionExecutable.cpp: (JSC::UnlinkedFunctionExecutable::visitChildrenImpl): (JSC::UnlinkedFunctionExecutable::visitChildren): Deleted. * bytecode/UnlinkedFunctionExecutable.h: * debugger/DebuggerScope.cpp: (JSC::DebuggerScope::visitChildrenImpl): (JSC::DebuggerScope::visitChildren): Deleted. * debugger/DebuggerScope.h: * dfg/DFGDesiredTransitions.cpp: (JSC::DFG::DesiredTransition::visitChildren): (JSC::DFG::DesiredTransitions::visitChildren): * dfg/DFGDesiredTransitions.h: * dfg/DFGDesiredWeakReferences.cpp: (JSC::DFG::DesiredWeakReferences::visitChildren): * dfg/DFGDesiredWeakReferences.h: * dfg/DFGGraph.cpp: (JSC::DFG::Graph::visitChildrenImpl): (JSC::DFG::Graph::visitChildren): * dfg/DFGGraph.h: * dfg/DFGPlan.cpp: (JSC::DFG::Plan::checkLivenessAndVisitChildren): (JSC::DFG::Plan::isKnownToBeLiveDuringGC): (JSC::DFG::Plan::isKnownToBeLiveAfterGC): * dfg/DFGPlan.h: * dfg/DFGPlanInlines.h: (JSC::DFG::Plan::iterateCodeBlocksForGC): * dfg/DFGSafepoint.cpp: (JSC::DFG::Safepoint::checkLivenessAndVisitChildren): (JSC::DFG::Safepoint::isKnownToBeLiveDuringGC): (JSC::DFG::Safepoint::isKnownToBeLiveAfterGC): * dfg/DFGSafepoint.h: * dfg/DFGScannable.h: * dfg/DFGWorklist.cpp: (JSC::DFG::Worklist::visitWeakReferences): (JSC::DFG::Worklist::removeDeadPlans): * dfg/DFGWorklist.h: * dfg/DFGWorklistInlines.h: (JSC::DFG::iterateCodeBlocksForGC): (JSC::DFG::Worklist::iterateCodeBlocksForGC): * heap/AbstractSlotVisitor.h: Added. (JSC::AbstractSlotVisitor::Context::cell const): (JSC::AbstractSlotVisitor::SuppressGCVerifierScope::SuppressGCVerifierScope): (JSC::AbstractSlotVisitor::SuppressGCVerifierScope::~SuppressGCVerifierScope): (JSC::AbstractSlotVisitor::DefaultMarkingViolationAssertionScope::DefaultMarkingViolationAssertionScope): (JSC::AbstractSlotVisitor::collectorMarkStack): (JSC::AbstractSlotVisitor::mutatorMarkStack): (JSC::AbstractSlotVisitor::collectorMarkStack const): (JSC::AbstractSlotVisitor::mutatorMarkStack const): (JSC::AbstractSlotVisitor::isEmpty): (JSC::AbstractSlotVisitor::setIgnoreNewOpaqueRoots): (JSC::AbstractSlotVisitor::visitCount const): (JSC::AbstractSlotVisitor::addToVisitCount): (JSC::AbstractSlotVisitor::rootMarkReason const): (JSC::AbstractSlotVisitor::setRootMarkReason): (JSC::AbstractSlotVisitor::didRace): (JSC::AbstractSlotVisitor::codeName const): (JSC::SetRootMarkReasonScope::SetRootMarkReasonScope): (JSC::SetRootMarkReasonScope::~SetRootMarkReasonScope): * heap/AbstractSlotVisitorInlines.h: Added. (JSC::AbstractSlotVisitor::Context::Context): (JSC::AbstractSlotVisitor::Context::~Context): (JSC::AbstractSlotVisitor::AbstractSlotVisitor): (JSC::AbstractSlotVisitor::heap const): (JSC::AbstractSlotVisitor::vm): (JSC::AbstractSlotVisitor::vm const): (JSC::AbstractSlotVisitor::addOpaqueRoot): (JSC::AbstractSlotVisitor::containsOpaqueRoot const): (JSC::AbstractSlotVisitor::append): (JSC::AbstractSlotVisitor::appendHidden): (JSC::AbstractSlotVisitor::appendHiddenUnbarriered): (JSC::AbstractSlotVisitor::appendValues): (JSC::AbstractSlotVisitor::appendValuesHidden): (JSC::AbstractSlotVisitor::appendUnbarriered): (JSC::AbstractSlotVisitor::parentCell const): (JSC::AbstractSlotVisitor::reset): * heap/HandleSet.cpp: (JSC::HandleSet::visitStrongHandles): * heap/HandleSet.h: * heap/Heap.cpp: (JSC::Heap::iterateExecutingAndCompilingCodeBlocks): (JSC::Heap::iterateExecutingAndCompilingCodeBlocksWithoutHoldingLocks): (JSC::Heap::runEndPhase): (JSC::Heap::willStartCollection): (JSC::scanExternalRememberedSet): (JSC::serviceSamplingProfiler): (JSC::Heap::addCoreConstraints): (JSC::Heap::verifyGC): (JSC::Heap::isAnalyzingHeap const): Deleted. * heap/Heap.h: (JSC::Heap::isMarkingForGCVerifier const): (JSC::Heap::numOpaqueRoots const): Deleted. * heap/HeapInlines.h: (JSC::Heap::isMarked): * heap/HeapProfiler.cpp: (JSC::HeapProfiler::setActiveHeapAnalyzer): * heap/IsoCellSet.h: * heap/IsoCellSetInlines.h: (JSC::IsoCellSet::forEachMarkedCellInParallel): * heap/JITStubRoutineSet.cpp: (JSC::JITStubRoutineSet::traceMarkedStubRoutines): * heap/JITStubRoutineSet.h: (JSC::JITStubRoutineSet::traceMarkedStubRoutines): * heap/MarkStackMergingConstraint.cpp: (JSC::MarkStackMergingConstraint::prepareToExecuteImpl): (JSC::MarkStackMergingConstraint::executeImplImpl): (JSC::MarkStackMergingConstraint::executeImpl): * heap/MarkStackMergingConstraint.h: * heap/MarkedBlock.h: (JSC::MarkedBlock::Handle::atomAt const): (JSC::MarkedBlock::setVerifierMemo): (JSC::MarkedBlock::verifierMemo const): * heap/MarkedSpace.cpp: (JSC::MarkedSpace::visitWeakSets): * heap/MarkedSpace.h: * heap/MarkingConstraint.cpp: (JSC::MarkingConstraint::execute): (JSC::MarkingConstraint::executeSynchronously): (JSC::MarkingConstraint::prepareToExecute): (JSC::MarkingConstraint::doParallelWork): (JSC::MarkingConstraint::prepareToExecuteImpl): * heap/MarkingConstraint.h: * heap/MarkingConstraintExecutorPair.h: Added. (JSC::MarkingConstraintExecutorPair::MarkingConstraintExecutorPair): (JSC::MarkingConstraintExecutorPair::execute): * heap/MarkingConstraintSet.cpp: (JSC::MarkingConstraintSet::add): (JSC::MarkingConstraintSet::executeAllSynchronously): (JSC::MarkingConstraintSet::executeAll): Deleted. * heap/MarkingConstraintSet.h: (JSC::MarkingConstraintSet::add): * heap/MarkingConstraintSolver.cpp: * heap/MarkingConstraintSolver.h: * heap/SimpleMarkingConstraint.cpp: (JSC::SimpleMarkingConstraint::SimpleMarkingConstraint): (JSC::SimpleMarkingConstraint::executeImplImpl): (JSC::SimpleMarkingConstraint::executeImpl): * heap/SimpleMarkingConstraint.h: * heap/SlotVisitor.cpp: (JSC::SlotVisitor::SlotVisitor): (JSC::SlotVisitor::reset): (JSC::SlotVisitor::appendSlow): (JSC::SlotVisitor::addParallelConstraintTask): * heap/SlotVisitor.h: (JSC::SlotVisitor::collectorMarkStack): Deleted. (JSC::SlotVisitor::mutatorMarkStack): Deleted. (JSC::SlotVisitor::collectorMarkStack const): Deleted. (JSC::SlotVisitor::mutatorMarkStack const): Deleted. (JSC::SlotVisitor::isEmpty): Deleted. (JSC::SlotVisitor::isFirstVisit const): Deleted. (JSC::SlotVisitor::bytesVisited const): Deleted. (JSC::SlotVisitor::visitCount const): Deleted. (JSC::SlotVisitor::addToVisitCount): Deleted. (JSC::SlotVisitor::isAnalyzingHeap const): Deleted. (JSC::SlotVisitor::heapAnalyzer const): Deleted. (JSC::SlotVisitor::rootMarkReason const): Deleted. (JSC::SlotVisitor::setRootMarkReason): Deleted. (JSC::SlotVisitor::markingVersion const): Deleted. (JSC::SlotVisitor::mutatorIsStopped const): Deleted. (JSC::SlotVisitor::rightToRun): Deleted. (JSC::SlotVisitor::didRace): Deleted. (JSC::SlotVisitor::setIgnoreNewOpaqueRoots): Deleted. (JSC::SlotVisitor::codeName const): Deleted. (JSC::SetRootMarkReasonScope::SetRootMarkReasonScope): Deleted. (JSC::SetRootMarkReasonScope::~SetRootMarkReasonScope): Deleted. * heap/SlotVisitorInlines.h: (JSC::SlotVisitor::isMarked const): (JSC::SlotVisitor::addOpaqueRoot): Deleted. (JSC::SlotVisitor::containsOpaqueRoot const): Deleted. (JSC::SlotVisitor::heap const): Deleted. (JSC::SlotVisitor::vm): Deleted. (JSC::SlotVisitor::vm const): Deleted. * heap/SlotVisitorMacros.h: Added. * heap/Subspace.h: * heap/SubspaceInlines.h: (JSC::Subspace::forEachMarkedCellInParallel): * heap/VerifierSlotVisitor.cpp: Added. (JSC::MarkerData::MarkerData): (JSC::VerifierSlotVisitor::MarkedBlockData::MarkedBlockData): (JSC::VerifierSlotVisitor::MarkedBlockData::addMarkerData): (JSC::VerifierSlotVisitor::MarkedBlockData::markerData const): (JSC::VerifierSlotVisitor::PreciseAllocationData::PreciseAllocationData): (JSC::VerifierSlotVisitor::PreciseAllocationData::markerData const): (JSC::VerifierSlotVisitor::PreciseAllocationData::addMarkerData): (JSC::VerifierSlotVisitor::VerifierSlotVisitor): (JSC::VerifierSlotVisitor::~VerifierSlotVisitor): (JSC::VerifierSlotVisitor::addParallelConstraintTask): (JSC::VerifierSlotVisitor::executeConstraintTasks): (JSC::VerifierSlotVisitor::append): (JSC::VerifierSlotVisitor::appendToMarkStack): (JSC::VerifierSlotVisitor::appendUnbarriered): (JSC::VerifierSlotVisitor::appendHiddenUnbarriered): (JSC::VerifierSlotVisitor::drain): (JSC::VerifierSlotVisitor::dumpMarkerData): (JSC::VerifierSlotVisitor::isFirstVisit const): (JSC::VerifierSlotVisitor::isMarked const): (JSC::VerifierSlotVisitor::markAuxiliary): (JSC::VerifierSlotVisitor::mutatorIsStopped const): (JSC::VerifierSlotVisitor::testAndSetMarked): (JSC::VerifierSlotVisitor::setMarkedAndAppendToMarkStack): (JSC::VerifierSlotVisitor::visitAsConstraint): (JSC::VerifierSlotVisitor::visitChildren): * heap/VerifierSlotVisitor.h: Added. (JSC::VerifierSlotVisitor::MarkedBlockData::block const): (JSC::VerifierSlotVisitor::MarkedBlockData::atoms const): (JSC::VerifierSlotVisitor::MarkedBlockData::isMarked): (JSC::VerifierSlotVisitor::MarkedBlockData::testAndSetMarked): (JSC::VerifierSlotVisitor::PreciseAllocationData::allocation const): (JSC::VerifierSlotVisitor::appendSlow): * heap/VerifierSlotVisitorInlines.h: Added. (JSC::VerifierSlotVisitor::forEachLiveCell): (JSC::VerifierSlotVisitor::forEachLivePreciseAllocation): (JSC::VerifierSlotVisitor::forEachLiveMarkedBlockCell): * heap/VisitCounter.h: (JSC::VisitCounter::VisitCounter): (JSC::VisitCounter::visitor const): * heap/WeakBlock.cpp: (JSC::WeakBlock::specializedVisit): (JSC::WeakBlock::visitImpl): (JSC::WeakBlock::visit): * heap/WeakBlock.h: * heap/WeakHandleOwner.cpp: (JSC::WeakHandleOwner::isReachableFromOpaqueRoots): * heap/WeakHandleOwner.h: * heap/WeakSet.cpp: * heap/WeakSet.h: (JSC::WeakSet::visit): * interpreter/ShadowChicken.cpp: (JSC::ShadowChicken::visitChildren): * interpreter/ShadowChicken.h: * jit/GCAwareJITStubRoutine.cpp: (JSC::MarkingGCAwareJITStubRoutine::markRequiredObjectsInternalImpl): (JSC::MarkingGCAwareJITStubRoutine::markRequiredObjectsInternal): (JSC::GCAwareJITStubRoutine::markRequiredObjectsInternal): Deleted. * jit/GCAwareJITStubRoutine.h: (JSC::GCAwareJITStubRoutine::markRequiredObjects): (JSC::GCAwareJITStubRoutine::markRequiredObjectsInternal): * jit/JITWorklist.cpp: * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternalImpl): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: * runtime/AbstractModuleRecord.cpp: (JSC::AbstractModuleRecord::visitChildrenImpl): (JSC::AbstractModuleRecord::visitChildren): Deleted. * runtime/AbstractModuleRecord.h: * runtime/ArgList.cpp: (JSC::MarkedArgumentBuffer::markLists): * runtime/ArgList.h: * runtime/CacheableIdentifier.h: * runtime/CacheableIdentifierInlines.h: (JSC::CacheableIdentifier::visitAggregate const): * runtime/ClassInfo.h: (JSC::MethodTable::visitChildren const): (JSC::MethodTable::visitOutputConstraints const): * runtime/ClonedArguments.cpp: (JSC::ClonedArguments::visitChildrenImpl): (JSC::ClonedArguments::visitChildren): Deleted. * runtime/ClonedArguments.h: * runtime/DirectArguments.cpp: (JSC::DirectArguments::visitChildrenImpl): (JSC::DirectArguments::visitChildren): Deleted. * runtime/DirectArguments.h: * runtime/EvalExecutable.cpp: (JSC::EvalExecutable::visitChildrenImpl): (JSC::EvalExecutable::visitChildren): Deleted. * runtime/EvalExecutable.h: * runtime/Exception.cpp: (JSC::Exception::visitChildrenImpl): (JSC::Exception::visitChildren): Deleted. * runtime/Exception.h: * runtime/FunctionExecutable.cpp: (JSC::FunctionExecutable::visitChildrenImpl): (JSC::FunctionExecutable::visitChildren): Deleted. * runtime/FunctionExecutable.h: * runtime/FunctionRareData.cpp: (JSC::FunctionRareData::visitChildrenImpl): (JSC::FunctionRareData::visitChildren): Deleted. * runtime/FunctionRareData.h: * runtime/GenericArguments.h: * runtime/GenericArgumentsInlines.h: (JSC::GenericArguments<Type>::visitChildrenImpl): (JSC::GenericArguments<Type>::visitChildren): Deleted. * runtime/GetterSetter.cpp: (JSC::GetterSetter::visitChildrenImpl): (JSC::GetterSetter::visitChildren): Deleted. * runtime/GetterSetter.h: * runtime/HashMapImpl.cpp: (JSC::HashMapBucket<Data>::visitChildrenImpl): (JSC::HashMapImpl<HashMapBucket>::visitChildrenImpl): (JSC::HashMapBucket<Data>::visitChildren): Deleted. (JSC::HashMapImpl<HashMapBucket>::visitChildren): Deleted. * runtime/HashMapImpl.h: * runtime/InternalFunction.cpp: (JSC::InternalFunction::visitChildrenImpl): (JSC::InternalFunction::visitChildren): Deleted. * runtime/InternalFunction.h: * runtime/IntlCollator.cpp: (JSC::IntlCollator::visitChildrenImpl): (JSC::IntlCollator::visitChildren): Deleted. * runtime/IntlCollator.h: * runtime/IntlDateTimeFormat.cpp: (JSC::IntlDateTimeFormat::visitChildrenImpl): (JSC::IntlDateTimeFormat::visitChildren): Deleted. * runtime/IntlDateTimeFormat.h: * runtime/IntlLocale.cpp: (JSC::IntlLocale::visitChildrenImpl): (JSC::IntlLocale::visitChildren): Deleted. * runtime/IntlLocale.h: * runtime/IntlNumberFormat.cpp: (JSC::IntlNumberFormat::visitChildrenImpl): (JSC::IntlNumberFormat::visitChildren): Deleted. * runtime/IntlNumberFormat.h: * runtime/IntlPluralRules.cpp: (JSC::IntlPluralRules::visitChildrenImpl): (JSC::IntlPluralRules::visitChildren): Deleted. * runtime/IntlPluralRules.h: * runtime/IntlRelativeTimeFormat.cpp: (JSC::IntlRelativeTimeFormat::visitChildrenImpl): (JSC::IntlRelativeTimeFormat::visitChildren): Deleted. * runtime/IntlRelativeTimeFormat.h: * runtime/IntlSegmentIterator.cpp: (JSC::IntlSegmentIterator::visitChildrenImpl): (JSC::IntlSegmentIterator::visitChildren): Deleted. * runtime/IntlSegmentIterator.h: * runtime/IntlSegments.cpp: (JSC::IntlSegments::visitChildrenImpl): (JSC::IntlSegments::visitChildren): Deleted. * runtime/IntlSegments.h: * runtime/JSArrayBufferView.cpp: (JSC::JSArrayBufferView::visitChildrenImpl): (JSC::JSArrayBufferView::visitChildren): Deleted. * runtime/JSArrayBufferView.h: * runtime/JSArrayIterator.cpp: (JSC::JSArrayIterator::visitChildrenImpl): (JSC::JSArrayIterator::visitChildren): Deleted. * runtime/JSArrayIterator.h: * runtime/JSAsyncGenerator.cpp: (JSC::JSAsyncGenerator::visitChildrenImpl): (JSC::JSAsyncGenerator::visitChildren): Deleted. * runtime/JSAsyncGenerator.h: * runtime/JSBigInt.cpp: (JSC::JSBigInt::visitChildrenImpl): (JSC::JSBigInt::visitChildren): Deleted. * runtime/JSBigInt.h: * runtime/JSBoundFunction.cpp: (JSC::JSBoundFunction::visitChildrenImpl): (JSC::JSBoundFunction::visitChildren): Deleted. * runtime/JSBoundFunction.h: * runtime/JSCallee.cpp: (JSC::JSCallee::visitChildrenImpl): (JSC::JSCallee::visitChildren): Deleted. * runtime/JSCallee.h: * runtime/JSCell.h: * runtime/JSCellInlines.h: (JSC::JSCell::visitChildrenImpl): (JSC::JSCell::visitOutputConstraintsImpl): (JSC::JSCell::visitChildren): Deleted. (JSC::JSCell::visitOutputConstraints): Deleted. * runtime/JSFinalizationRegistry.cpp: (JSC::JSFinalizationRegistry::visitChildrenImpl): (JSC::JSFinalizationRegistry::visitChildren): Deleted. * runtime/JSFinalizationRegistry.h: * runtime/JSFunction.cpp: (JSC::JSFunction::visitChildrenImpl): (JSC::JSFunction::visitChildren): Deleted. * runtime/JSFunction.h: * runtime/JSGenerator.cpp: (JSC::JSGenerator::visitChildrenImpl): (JSC::JSGenerator::visitChildren): Deleted. * runtime/JSGenerator.h: * runtime/JSGenericTypedArrayView.h: * runtime/JSGenericTypedArrayViewInlines.h: (JSC::JSGenericTypedArrayView<Adaptor>::visitChildrenImpl): (JSC::JSGenericTypedArrayView<Adaptor>::visitChildren): Deleted. * runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::visitChildrenImpl): (JSC::JSGlobalObject::visitChildren): Deleted. * runtime/JSGlobalObject.h: * runtime/JSImmutableButterfly.cpp: (JSC::JSImmutableButterfly::visitChildrenImpl): (JSC::JSImmutableButterfly::visitChildren): Deleted. * runtime/JSImmutableButterfly.h: * runtime/JSInternalFieldObjectImpl.h: * runtime/JSInternalFieldObjectImplInlines.h: (JSC::JSInternalFieldObjectImpl<passedNumberOfInternalFields>::visitChildrenImpl): (JSC::JSInternalFieldObjectImpl<passedNumberOfInternalFields>::visitChildren): Deleted. * runtime/JSLexicalEnvironment.cpp: (JSC::JSLexicalEnvironment::visitChildrenImpl): (JSC::JSLexicalEnvironment::visitChildren): Deleted. * runtime/JSLexicalEnvironment.h: * runtime/JSMapIterator.cpp: (JSC::JSMapIterator::visitChildrenImpl): (JSC::JSMapIterator::visitChildren): Deleted. * runtime/JSMapIterator.h: * runtime/JSModuleEnvironment.cpp: (JSC::JSModuleEnvironment::visitChildrenImpl): (JSC::JSModuleEnvironment::visitChildren): Deleted. * runtime/JSModuleEnvironment.h: * runtime/JSModuleNamespaceObject.cpp: (JSC::JSModuleNamespaceObject::visitChildrenImpl): (JSC::JSModuleNamespaceObject::visitChildren): Deleted. * runtime/JSModuleNamespaceObject.h: * runtime/JSModuleRecord.cpp: (JSC::JSModuleRecord::visitChildrenImpl): (JSC::JSModuleRecord::visitChildren): Deleted. * runtime/JSModuleRecord.h: * runtime/JSNativeStdFunction.cpp: (JSC::JSNativeStdFunction::visitChildrenImpl): (JSC::JSNativeStdFunction::visitChildren): Deleted. * runtime/JSNativeStdFunction.h: * runtime/JSObject.cpp: (JSC::JSObject::markAuxiliaryAndVisitOutOfLineProperties): (JSC::JSObject::visitButterfly): (JSC::JSObject::visitButterflyImpl): (JSC::JSObject::visitChildrenImpl): (JSC::JSFinalObject::visitChildrenImpl): (JSC::JSObject::visitChildren): Deleted. (JSC::JSFinalObject::visitChildren): Deleted. * runtime/JSObject.h: * runtime/JSPromise.cpp: (JSC::JSPromise::visitChildrenImpl): (JSC::JSPromise::visitChildren): Deleted. * runtime/JSPromise.h: * runtime/JSPropertyNameEnumerator.cpp: (JSC::JSPropertyNameEnumerator::visitChildrenImpl): (JSC::JSPropertyNameEnumerator::visitChildren): Deleted. * runtime/JSPropertyNameEnumerator.h: * runtime/JSProxy.cpp: (JSC::JSProxy::visitChildrenImpl): (JSC::JSProxy::visitChildren): Deleted. * runtime/JSProxy.h: * runtime/JSScope.cpp: (JSC::JSScope::visitChildrenImpl): (JSC::JSScope::visitChildren): Deleted. * runtime/JSScope.h: * runtime/JSSegmentedVariableObject.cpp: (JSC::JSSegmentedVariableObject::visitChildrenImpl): (JSC::JSSegmentedVariableObject::visitChildren): Deleted. * runtime/JSSegmentedVariableObject.h: * runtime/JSSetIterator.cpp: (JSC::JSSetIterator::visitChildrenImpl): (JSC::JSSetIterator::visitChildren): Deleted. * runtime/JSSetIterator.h: * runtime/JSString.cpp: (JSC::JSString::visitChildrenImpl): (JSC::JSString::visitChildren): Deleted. * runtime/JSString.h: * runtime/JSStringIterator.cpp: (JSC::JSStringIterator::visitChildrenImpl): (JSC::JSStringIterator::visitChildren): Deleted. * runtime/JSStringIterator.h: * runtime/JSSymbolTableObject.cpp: (JSC::JSSymbolTableObject::visitChildrenImpl): (JSC::JSSymbolTableObject::visitChildren): Deleted. * runtime/JSSymbolTableObject.h: * runtime/JSWeakObjectRef.cpp: (JSC::JSWeakObjectRef::visitChildrenImpl): (JSC::JSWeakObjectRef::visitChildren): Deleted. * runtime/JSWeakObjectRef.h: * runtime/JSWithScope.cpp: (JSC::JSWithScope::visitChildrenImpl): (JSC::JSWithScope::visitChildren): Deleted. * runtime/JSWithScope.h: * runtime/JSWrapperObject.cpp: (JSC::JSWrapperObject::visitChildrenImpl): (JSC::JSWrapperObject::visitChildren): Deleted. * runtime/JSWrapperObject.h: * runtime/LazyClassStructure.cpp: (JSC::LazyClassStructure::visit): * runtime/LazyClassStructure.h: * runtime/LazyProperty.h: * runtime/LazyPropertyInlines.h: (JSC::ElementType>::visit): * runtime/ModuleProgramExecutable.cpp: (JSC::ModuleProgramExecutable::visitChildrenImpl): (JSC::ModuleProgramExecutable::visitChildren): Deleted. * runtime/ModuleProgramExecutable.h: * runtime/Options.cpp: (JSC::Options::recomputeDependentOptions): * runtime/OptionsList.h: * runtime/ProgramExecutable.cpp: (JSC::ProgramExecutable::visitChildrenImpl): (JSC::ProgramExecutable::visitChildren): Deleted. * runtime/ProgramExecutable.h: * runtime/PropertyMapHashTable.h: * runtime/PropertyTable.cpp: (JSC::PropertyTable::visitChildrenImpl): (JSC::PropertyTable::visitChildren): Deleted. * runtime/ProxyObject.cpp: (JSC::ProxyObject::visitChildrenImpl): (JSC::ProxyObject::visitChildren): Deleted. * runtime/ProxyObject.h: * runtime/ProxyRevoke.cpp: (JSC::ProxyRevoke::visitChildrenImpl): (JSC::ProxyRevoke::visitChildren): Deleted. * runtime/ProxyRevoke.h: * runtime/RegExpCachedResult.cpp: (JSC::RegExpCachedResult::visitAggregateImpl): (JSC::RegExpCachedResult::visitAggregate): Deleted. * runtime/RegExpCachedResult.h: * runtime/RegExpGlobalData.cpp: (JSC::RegExpGlobalData::visitAggregateImpl): (JSC::RegExpGlobalData::visitAggregate): Deleted. * runtime/RegExpGlobalData.h: * runtime/RegExpObject.cpp: (JSC::RegExpObject::visitChildrenImpl): (JSC::RegExpObject::visitChildren): Deleted. * runtime/RegExpObject.h: * runtime/SamplingProfiler.cpp: (JSC::SamplingProfiler::visit): * runtime/SamplingProfiler.h: * runtime/ScopedArguments.cpp: (JSC::ScopedArguments::visitChildrenImpl): (JSC::ScopedArguments::visitChildren): Deleted. * runtime/ScopedArguments.h: * runtime/SimpleTypedArrayController.cpp: (JSC::SimpleTypedArrayController::JSArrayBufferOwner::isReachableFromOpaqueRoots): * runtime/SimpleTypedArrayController.h: * runtime/SmallStrings.cpp: (JSC::SmallStrings::visitStrongReferences): * runtime/SmallStrings.h: * runtime/SparseArrayValueMap.cpp: (JSC::SparseArrayValueMap::visitChildrenImpl): (JSC::SparseArrayValueMap::visitChildren): Deleted. * runtime/SparseArrayValueMap.h: * runtime/StackFrame.cpp: (JSC::StackFrame::visitChildren): Deleted. * runtime/StackFrame.h: (JSC::StackFrame::visitChildren): * runtime/Structure.cpp: (JSC::Structure::visitChildrenImpl): (JSC::Structure::isCheapDuringGC): (JSC::Structure::markIfCheap): (JSC::Structure::visitChildren): Deleted. * runtime/Structure.h: * runtime/StructureChain.cpp: (JSC::StructureChain::visitChildrenImpl): (JSC::StructureChain::visitChildren): Deleted. * runtime/StructureChain.h: * runtime/StructureRareData.cpp: (JSC::StructureRareData::visitChildrenImpl): (JSC::StructureRareData::visitChildren): Deleted. * runtime/StructureRareData.h: * runtime/SymbolTable.cpp: (JSC::SymbolTable::visitChildrenImpl): (JSC::SymbolTable::visitChildren): Deleted. * runtime/SymbolTable.h: * runtime/TypeProfilerLog.cpp: (JSC::TypeProfilerLog::visit): * runtime/TypeProfilerLog.h: * runtime/VM.h: (JSC::VM::isAnalyzingHeap const): (JSC::VM::activeHeapAnalyzer const): (JSC::VM::setActiveHeapAnalyzer): * runtime/WeakMapImpl.cpp: (JSC::WeakMapImpl<WeakMapBucket>::visitChildrenImpl): (JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKey>>::visitOutputConstraints): (JSC::WeakMapImpl<BucketType>::visitOutputConstraints): (JSC::WeakMapImpl<WeakMapBucket>::visitChildren): Deleted. (JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKeyValue>>::visitOutputConstraints): Deleted. * runtime/WeakMapImpl.h: (JSC::WeakMapBucket::visitAggregate): * tools/JSDollarVM.cpp: (JSC::JSDollarVM::visitChildrenImpl): (JSC::JSDollarVM::visitChildren): Deleted. * tools/JSDollarVM.h: * wasm/WasmGlobal.cpp: (JSC::Wasm::Global::visitAggregateImpl): (JSC::Wasm::Global::visitAggregate): Deleted. * wasm/WasmGlobal.h: * wasm/WasmTable.cpp: (JSC::Wasm::Table::visitAggregateImpl): (JSC::Wasm::Table::visitAggregate): Deleted. * wasm/WasmTable.h: * wasm/js/JSToWasmICCallee.cpp: (JSC::JSToWasmICCallee::visitChildrenImpl): (JSC::JSToWasmICCallee::visitChildren): Deleted. * wasm/js/JSToWasmICCallee.h: * wasm/js/JSWebAssemblyCodeBlock.cpp: (JSC::JSWebAssemblyCodeBlock::visitChildrenImpl): (JSC::JSWebAssemblyCodeBlock::visitChildren): Deleted. * wasm/js/JSWebAssemblyCodeBlock.h: * wasm/js/JSWebAssemblyGlobal.cpp: (JSC::JSWebAssemblyGlobal::visitChildrenImpl): (JSC::JSWebAssemblyGlobal::visitChildren): Deleted. * wasm/js/JSWebAssemblyGlobal.h: * wasm/js/JSWebAssemblyInstance.cpp: (JSC::JSWebAssemblyInstance::visitChildrenImpl): (JSC::JSWebAssemblyInstance::visitChildren): Deleted. * wasm/js/JSWebAssemblyInstance.h: * wasm/js/JSWebAssemblyMemory.cpp: (JSC::JSWebAssemblyMemory::visitChildrenImpl): (JSC::JSWebAssemblyMemory::visitChildren): Deleted. * wasm/js/JSWebAssemblyMemory.h: * wasm/js/JSWebAssemblyModule.cpp: (JSC::JSWebAssemblyModule::visitChildrenImpl): (JSC::JSWebAssemblyModule::visitChildren): Deleted. * wasm/js/JSWebAssemblyModule.h: * wasm/js/JSWebAssemblyTable.cpp: (JSC::JSWebAssemblyTable::visitChildrenImpl): (JSC::JSWebAssemblyTable::visitChildren): Deleted. * wasm/js/JSWebAssemblyTable.h: * wasm/js/WebAssemblyFunction.cpp: (JSC::WebAssemblyFunction::visitChildrenImpl): (JSC::WebAssemblyFunction::visitChildren): Deleted. * wasm/js/WebAssemblyFunction.h: * wasm/js/WebAssemblyFunctionBase.cpp: (JSC::WebAssemblyFunctionBase::visitChildrenImpl): (JSC::WebAssemblyFunctionBase::visitChildren): Deleted. * wasm/js/WebAssemblyFunctionBase.h: * wasm/js/WebAssemblyModuleRecord.cpp: (JSC::WebAssemblyModuleRecord::visitChildrenImpl): (JSC::WebAssemblyModuleRecord::visitChildren): Deleted. * wasm/js/WebAssemblyModuleRecord.h: * wasm/js/WebAssemblyWrapperFunction.cpp: (JSC::WebAssemblyWrapperFunction::visitChildrenImpl): (JSC::WebAssemblyWrapperFunction::visitChildren): Deleted. * wasm/js/WebAssemblyWrapperFunction.h: Source/WebCore: 1. Added support for the GC verifier. 2. Also removed NodeFilterCondition::visitAggregate() because it is not used. 3. Rebased bindings test results. * Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::visitReferencedIndexes const): * Modules/indexeddb/IDBObjectStore.h: * Modules/indexeddb/IDBTransaction.cpp: (WebCore::IDBTransaction::visitReferencedObjectStores const): * Modules/indexeddb/IDBTransaction.h: * Modules/webaudio/AudioBuffer.cpp: (WebCore::AudioBuffer::visitChannelWrappers): * Modules/webaudio/AudioBuffer.h: * bindings/js/DOMGCOutputConstraint.cpp: (WebCore::DOMGCOutputConstraint::executeImplImpl): (WebCore::DOMGCOutputConstraint::executeImpl): * bindings/js/DOMGCOutputConstraint.h: * bindings/js/JSAbortControllerCustom.cpp: (WebCore::JSAbortController::visitAdditionalChildren): * bindings/js/JSAbortSignalCustom.cpp: (WebCore::JSAbortSignalOwner::isReachableFromOpaqueRoots): * bindings/js/JSAttrCustom.cpp: (WebCore::JSAttr::visitAdditionalChildren): * bindings/js/JSAudioBufferCustom.cpp: (WebCore::JSAudioBuffer::visitAdditionalChildren): * bindings/js/JSAudioTrackCustom.cpp: (WebCore::JSAudioTrack::visitAdditionalChildren): * bindings/js/JSAudioTrackListCustom.cpp: (WebCore::JSAudioTrackList::visitAdditionalChildren): * bindings/js/JSAudioWorkletProcessorCustom.cpp: (WebCore::JSAudioWorkletProcessor::visitAdditionalChildren): * bindings/js/JSCSSRuleCustom.cpp: (WebCore::JSCSSRule::visitAdditionalChildren): * bindings/js/JSCSSRuleListCustom.cpp: (WebCore::JSCSSRuleListOwner::isReachableFromOpaqueRoots): * bindings/js/JSCSSStyleDeclarationCustom.cpp: (WebCore::JSCSSStyleDeclaration::visitAdditionalChildren): * bindings/js/JSCallbackData.cpp: (WebCore::JSCallbackDataWeak::visitJSFunction): (WebCore::JSCallbackDataWeak::WeakOwner::isReachableFromOpaqueRoots): * bindings/js/JSCallbackData.h: * bindings/js/JSCanvasRenderingContext2DCustom.cpp: (WebCore::JSCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots): (WebCore::JSCanvasRenderingContext2D::visitAdditionalChildren): * bindings/js/JSCustomEventCustom.cpp: (WebCore::JSCustomEvent::visitAdditionalChildren): * bindings/js/JSDOMBuiltinConstructorBase.cpp: (WebCore::JSDOMBuiltinConstructorBase::visitChildrenImpl): (WebCore::JSDOMBuiltinConstructorBase::visitChildren): Deleted. * bindings/js/JSDOMBuiltinConstructorBase.h: * bindings/js/JSDOMGlobalObject.cpp: (WebCore::JSDOMGlobalObject::visitChildrenImpl): (WebCore::JSDOMGlobalObject::visitChildren): Deleted. * bindings/js/JSDOMGlobalObject.h: * bindings/js/JSDOMGuardedObject.h: * bindings/js/JSDOMQuadCustom.cpp: (WebCore::JSDOMQuad::visitAdditionalChildren): * bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::visitAdditionalChildren): * bindings/js/JSDeprecatedCSSOMValueCustom.cpp: (WebCore::JSDeprecatedCSSOMValueOwner::isReachableFromOpaqueRoots): * bindings/js/JSDocumentCustom.cpp: (WebCore::JSDocument::visitAdditionalChildren): * bindings/js/JSErrorEventCustom.cpp: (WebCore::JSErrorEvent::visitAdditionalChildren): * bindings/js/JSEventListener.cpp: (WebCore::JSEventListener::visitJSFunctionImpl): (WebCore::JSEventListener::visitJSFunction): * bindings/js/JSEventListener.h: * bindings/js/JSEventTargetCustom.cpp: (WebCore::JSEventTarget::visitAdditionalChildren): * bindings/js/JSFetchEventCustom.cpp: (WebCore::JSFetchEvent::visitAdditionalChildren): * bindings/js/JSHTMLCanvasElementCustom.cpp: (WebCore::JSHTMLCanvasElement::visitAdditionalChildren): * bindings/js/JSHTMLTemplateElementCustom.cpp: (WebCore::JSHTMLTemplateElement::visitAdditionalChildren): * bindings/js/JSHistoryCustom.cpp: (WebCore::JSHistory::visitAdditionalChildren): * bindings/js/JSIDBCursorCustom.cpp: (WebCore::JSIDBCursor::visitAdditionalChildren): * bindings/js/JSIDBCursorWithValueCustom.cpp: (WebCore::JSIDBCursorWithValue::visitAdditionalChildren): * bindings/js/JSIDBIndexCustom.cpp: (WebCore::JSIDBIndex::visitAdditionalChildren): * bindings/js/JSIDBObjectStoreCustom.cpp: (WebCore::JSIDBObjectStore::visitAdditionalChildren): * bindings/js/JSIDBRequestCustom.cpp: (WebCore::JSIDBRequest::visitAdditionalChildren): * bindings/js/JSIDBTransactionCustom.cpp: (WebCore::JSIDBTransaction::visitAdditionalChildren): * bindings/js/JSIntersectionObserverCustom.cpp: (WebCore::JSIntersectionObserver::visitAdditionalChildren): * bindings/js/JSIntersectionObserverEntryCustom.cpp: (WebCore::JSIntersectionObserverEntry::visitAdditionalChildren): * bindings/js/JSMessageChannelCustom.cpp: (WebCore::JSMessageChannel::visitAdditionalChildren): * bindings/js/JSMessageEventCustom.cpp: (WebCore::JSMessageEvent::visitAdditionalChildren): * bindings/js/JSMessagePortCustom.cpp: (WebCore::JSMessagePort::visitAdditionalChildren): * bindings/js/JSMutationObserverCustom.cpp: (WebCore::JSMutationObserver::visitAdditionalChildren): (WebCore::JSMutationObserverOwner::isReachableFromOpaqueRoots): * bindings/js/JSMutationRecordCustom.cpp: (WebCore::JSMutationRecord::visitAdditionalChildren): * bindings/js/JSNavigatorCustom.cpp: (WebCore::JSNavigator::visitAdditionalChildren): * bindings/js/JSNodeCustom.cpp: (WebCore::isReachableFromDOM): (WebCore::JSNodeOwner::isReachableFromOpaqueRoots): (WebCore::JSNode::visitAdditionalChildren): * bindings/js/JSNodeIteratorCustom.cpp: (WebCore::JSNodeIterator::visitAdditionalChildren): * bindings/js/JSNodeListCustom.cpp: (WebCore::JSNodeListOwner::isReachableFromOpaqueRoots): * bindings/js/JSOffscreenCanvasRenderingContext2DCustom.cpp: (WebCore::JSOffscreenCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots): (WebCore::JSOffscreenCanvasRenderingContext2D::visitAdditionalChildren): * bindings/js/JSPaintRenderingContext2DCustom.cpp: (WebCore::JSPaintRenderingContext2DOwner::isReachableFromOpaqueRoots): (WebCore::JSPaintRenderingContext2D::visitAdditionalChildren): * bindings/js/JSPaintWorkletGlobalScopeCustom.cpp: (WebCore::JSPaintWorkletGlobalScope::visitAdditionalChildren): * bindings/js/JSPaymentMethodChangeEventCustom.cpp: (WebCore::JSPaymentMethodChangeEvent::visitAdditionalChildren): * bindings/js/JSPaymentResponseCustom.cpp: (WebCore::JSPaymentResponse::visitAdditionalChildren): * bindings/js/JSPerformanceObserverCustom.cpp: (WebCore::JSPerformanceObserver::visitAdditionalChildren): (WebCore::JSPerformanceObserverOwner::isReachableFromOpaqueRoots): * bindings/js/JSPopStateEventCustom.cpp: (WebCore::JSPopStateEvent::visitAdditionalChildren): * bindings/js/JSPromiseRejectionEventCustom.cpp: (WebCore::JSPromiseRejectionEvent::visitAdditionalChildren): * bindings/js/JSResizeObserverCustom.cpp: (WebCore::JSResizeObserver::visitAdditionalChildren): * bindings/js/JSResizeObserverEntryCustom.cpp: (WebCore::JSResizeObserverEntry::visitAdditionalChildren): * bindings/js/JSSVGViewSpecCustom.cpp: (WebCore::JSSVGViewSpec::visitAdditionalChildren): * bindings/js/JSServiceWorkerGlobalScopeCustom.cpp: (WebCore::JSServiceWorkerGlobalScope::visitAdditionalChildren): * bindings/js/JSStaticRangeCustom.cpp: (WebCore::JSStaticRange::visitAdditionalChildren): * bindings/js/JSStyleSheetCustom.cpp: (WebCore::JSStyleSheet::visitAdditionalChildren): * bindings/js/JSTextTrackCueCustom.cpp: (WebCore::JSTextTrackCueOwner::isReachableFromOpaqueRoots): (WebCore::JSTextTrackCue::visitAdditionalChildren): * bindings/js/JSTextTrackCustom.cpp: (WebCore::JSTextTrack::visitAdditionalChildren): * bindings/js/JSTextTrackListCustom.cpp: (WebCore::JSTextTrackList::visitAdditionalChildren): * bindings/js/JSTreeWalkerCustom.cpp: (WebCore::JSTreeWalker::visitAdditionalChildren): * bindings/js/JSUndoItemCustom.cpp: (WebCore::JSUndoItem::visitAdditionalChildren): (WebCore::JSUndoItemOwner::isReachableFromOpaqueRoots): * bindings/js/JSValueInWrappedObject.h: (WebCore::JSValueInWrappedObject::visit const): * bindings/js/JSVideoTrackCustom.cpp: (WebCore::JSVideoTrack::visitAdditionalChildren): * bindings/js/JSVideoTrackListCustom.cpp: (WebCore::JSVideoTrackList::visitAdditionalChildren): * bindings/js/JSWebGL2RenderingContextCustom.cpp: (WebCore::JSWebGL2RenderingContext::visitAdditionalChildren): * bindings/js/JSWebGLRenderingContextCustom.cpp: (WebCore::JSWebGLRenderingContext::visitAdditionalChildren): * bindings/js/JSWorkerGlobalScopeBase.cpp: (WebCore::JSWorkerGlobalScopeBase::visitChildrenImpl): (WebCore::JSWorkerGlobalScopeBase::visitChildren): Deleted. * bindings/js/JSWorkerGlobalScopeBase.h: * bindings/js/JSWorkerGlobalScopeCustom.cpp: (WebCore::JSWorkerGlobalScope::visitAdditionalChildren): * bindings/js/JSWorkerNavigatorCustom.cpp: (WebCore::JSWorkerNavigator::visitAdditionalChildren): * bindings/js/JSWorkletGlobalScopeBase.cpp: (WebCore::JSWorkletGlobalScopeBase::visitChildrenImpl): (WebCore::JSWorkletGlobalScopeBase::visitChildren): Deleted. * bindings/js/JSWorkletGlobalScopeBase.h: * bindings/js/JSXMLHttpRequestCustom.cpp: (WebCore::JSXMLHttpRequest::visitAdditionalChildren): * bindings/js/JSXPathResultCustom.cpp: (WebCore::JSXPathResult::visitAdditionalChildren): * bindings/js/WebCoreTypedArrayController.cpp: (WebCore::WebCoreTypedArrayController::JSArrayBufferOwner::isReachableFromOpaqueRoots): * bindings/js/WebCoreTypedArrayController.h: * bindings/scripts/CodeGeneratorJS.pm: (GenerateHeader): (GenerateImplementation): (GenerateCallbackHeaderContent): (GenerateCallbackImplementationContent): (GenerateIterableDefinition): * bindings/scripts/test/JS/JSDOMWindow.cpp: (WebCore::JSDOMWindow::subspaceForImpl): * bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp: (WebCore::JSDedicatedWorkerGlobalScope::subspaceForImpl): * bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp: (WebCore::JSExposedToWorkerAndWindow::subspaceForImpl): (WebCore::JSExposedToWorkerAndWindowOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSExposedToWorkerAndWindow.h: * bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp: (WebCore::JSPaintWorkletGlobalScope::subspaceForImpl): * bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp: (WebCore::JSServiceWorkerGlobalScope::subspaceForImpl): * bindings/scripts/test/JS/JSTestCEReactions.cpp: (WebCore::JSTestCEReactions::subspaceForImpl): (WebCore::JSTestCEReactionsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestCEReactions.h: * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: (WebCore::JSTestCEReactionsStringifier::subspaceForImpl): (WebCore::JSTestCEReactionsStringifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestCEReactionsStringifier.h: * bindings/scripts/test/JS/JSTestCallTracer.cpp: (WebCore::JSTestCallTracer::subspaceForImpl): (WebCore::JSTestCallTracerOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestCallTracer.h: * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: (WebCore::JSTestClassWithJSBuiltinConstructor::subspaceForImpl): (WebCore::JSTestClassWithJSBuiltinConstructorOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h: * bindings/scripts/test/JS/JSTestConditionalIncludes.cpp: (WebCore::JSTestConditionalIncludes::subspaceForImpl): (WebCore::JSTestConditionalIncludesOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestConditionalIncludes.h: * bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp: (WebCore::JSTestConditionallyReadWrite::subspaceForImpl): (WebCore::JSTestConditionallyReadWriteOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestConditionallyReadWrite.h: * bindings/scripts/test/JS/JSTestDOMJIT.cpp: (WebCore::JSTestDOMJIT::subspaceForImpl): * bindings/scripts/test/JS/JSTestDefaultToJSON.cpp: (WebCore::JSTestDefaultToJSON::subspaceForImpl): (WebCore::JSTestDefaultToJSONOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestDefaultToJSON.h: * bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp: (WebCore::JSTestDefaultToJSONFilteredByExposed::subspaceForImpl): (WebCore::JSTestDefaultToJSONFilteredByExposedOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.h: * bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.cpp: (WebCore::JSTestDefaultToJSONIndirectInheritance::subspaceForImpl): * bindings/scripts/test/JS/JSTestDefaultToJSONInherit.cpp: (WebCore::JSTestDefaultToJSONInherit::subspaceForImpl): * bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.cpp: (WebCore::JSTestDefaultToJSONInheritFinal::subspaceForImpl): * bindings/scripts/test/JS/JSTestDomainSecurity.cpp: (WebCore::JSTestDomainSecurity::subspaceForImpl): (WebCore::JSTestDomainSecurityOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestDomainSecurity.h: * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: (WebCore::JSTestEnabledBySetting::subspaceForImpl): (WebCore::JSTestEnabledBySettingOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestEnabledBySetting.h: * bindings/scripts/test/JS/JSTestEnabledForContext.cpp: (WebCore::JSTestEnabledForContext::subspaceForImpl): (WebCore::JSTestEnabledForContextOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestEnabledForContext.h: * bindings/scripts/test/JS/JSTestEventConstructor.cpp: (WebCore::JSTestEventConstructor::subspaceForImpl): * bindings/scripts/test/JS/JSTestEventTarget.cpp: (WebCore::JSTestEventTarget::subspaceForImpl): * bindings/scripts/test/JS/JSTestException.cpp: (WebCore::JSTestException::subspaceForImpl): (WebCore::JSTestExceptionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestException.h: * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: (WebCore::JSTestGenerateIsReachable::subspaceForImpl): (WebCore::JSTestGenerateIsReachableOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestGenerateIsReachable.h: * bindings/scripts/test/JS/JSTestGlobalObject.cpp: (WebCore::JSTestGlobalObject::subspaceForImpl): (WebCore::JSTestGlobalObjectOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestGlobalObject.h: * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: (WebCore::JSTestIndexedSetterNoIdentifier::subspaceForImpl): (WebCore::JSTestIndexedSetterNoIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h: * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: (WebCore::JSTestIndexedSetterThrowingException::subspaceForImpl): (WebCore::JSTestIndexedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h: * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: (WebCore::JSTestIndexedSetterWithIdentifier::subspaceForImpl): (WebCore::JSTestIndexedSetterWithIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h: * bindings/scripts/test/JS/JSTestInterface.cpp: (WebCore::jsTestInterfacePrototypeFunction_entriesCaller): (WebCore::JSTestInterface::subspaceForImpl): (WebCore::JSTestInterfaceOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestInterface.h: * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp: (WebCore::JSTestInterfaceLeadingUnderscore::subspaceForImpl): (WebCore::JSTestInterfaceLeadingUnderscoreOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h: * bindings/scripts/test/JS/JSTestIterable.cpp: (WebCore::jsTestIterablePrototypeFunction_entriesCaller): (WebCore::JSTestIterable::subspaceForImpl): (WebCore::JSTestIterableOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestIterable.h: * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp: (WebCore::JSTestJSBuiltinConstructor::subspaceForImpl): * bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp: (WebCore::JSTestLegacyFactoryFunction::subspaceForImpl): (WebCore::JSTestLegacyFactoryFunctionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestLegacyFactoryFunction.h: * bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp: (WebCore::JSTestLegacyNoInterfaceObject::subspaceForImpl): (WebCore::JSTestLegacyNoInterfaceObjectOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.h: * bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp: (WebCore::JSTestLegacyOverrideBuiltIns::subspaceForImpl): (WebCore::JSTestLegacyOverrideBuiltInsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.h: * bindings/scripts/test/JS/JSTestMapLike.cpp: (WebCore::JSTestMapLike::subspaceForImpl): (WebCore::JSTestMapLikeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestMapLike.h: * bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp: (WebCore::JSTestMapLikeWithOverriddenOperations::subspaceForImpl): (WebCore::JSTestMapLikeWithOverriddenOperationsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.h: * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl): (WebCore::JSTestNamedAndIndexedSetterNoIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h: * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: (WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl): (WebCore::JSTestNamedAndIndexedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h: * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl): (WebCore::JSTestNamedAndIndexedSetterWithIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h: * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp: (WebCore::JSTestNamedDeleterNoIdentifier::subspaceForImpl): (WebCore::JSTestNamedDeleterNoIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h: * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp: (WebCore::JSTestNamedDeleterThrowingException::subspaceForImpl): (WebCore::JSTestNamedDeleterThrowingExceptionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h: * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: (WebCore::JSTestNamedDeleterWithIdentifier::subspaceForImpl): (WebCore::JSTestNamedDeleterWithIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h: * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp: (WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceForImpl): (WebCore::JSTestNamedDeleterWithIndexedGetterOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h: * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: (WebCore::JSTestNamedGetterCallWith::subspaceForImpl): (WebCore::JSTestNamedGetterCallWithOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedGetterCallWith.h: * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp: (WebCore::JSTestNamedGetterNoIdentifier::subspaceForImpl): (WebCore::JSTestNamedGetterNoIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h: * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: (WebCore::JSTestNamedGetterWithIdentifier::subspaceForImpl): (WebCore::JSTestNamedGetterWithIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h: * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: (WebCore::JSTestNamedSetterNoIdentifier::subspaceForImpl): (WebCore::JSTestNamedSetterNoIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h: * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: (WebCore::JSTestNamedSetterThrowingException::subspaceForImpl): (WebCore::JSTestNamedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h: * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: (WebCore::JSTestNamedSetterWithIdentifier::subspaceForImpl): (WebCore::JSTestNamedSetterWithIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h: * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: (WebCore::JSTestNamedSetterWithIndexedGetter::subspaceForImpl): (WebCore::JSTestNamedSetterWithIndexedGetterOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h: * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl): (WebCore::JSTestNamedSetterWithIndexedGetterAndSetterOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h: * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp: (WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceForImpl): (WebCore::JSTestNamedSetterWithLegacyOverrideBuiltInsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.h: * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp: (WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceForImpl): (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.h: * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp: (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceForImpl): (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltInsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.h: * bindings/scripts/test/JS/JSTestNode.cpp: (WebCore::jsTestNodePrototypeFunction_entriesCaller): (WebCore::JSTestNode::subspaceForImpl): * bindings/scripts/test/JS/JSTestObj.cpp: (WebCore::JSTestObj::subspaceForImpl): (WebCore::JSTestObj::visitChildrenImpl): (WebCore::JSTestObjOwner::isReachableFromOpaqueRoots): (WebCore::JSTestObj::visitChildren): Deleted. * bindings/scripts/test/JS/JSTestObj.h: * bindings/scripts/test/JS/JSTestOperationConditional.cpp: (WebCore::JSTestOperationConditional::subspaceForImpl): (WebCore::JSTestOperationConditionalOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestOperationConditional.h: * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: (WebCore::JSTestOverloadedConstructors::subspaceForImpl): (WebCore::JSTestOverloadedConstructorsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestOverloadedConstructors.h: * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: (WebCore::JSTestOverloadedConstructorsWithSequence::subspaceForImpl): (WebCore::JSTestOverloadedConstructorsWithSequenceOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h: * bindings/scripts/test/JS/JSTestPluginInterface.cpp: (WebCore::JSTestPluginInterface::subspaceForImpl): (WebCore::JSTestPluginInterfaceOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestPluginInterface.h: * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: (WebCore::JSTestPromiseRejectionEvent::subspaceForImpl): * bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp: (WebCore::JSTestReadOnlyMapLike::subspaceForImpl): (WebCore::JSTestReadOnlyMapLikeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestReadOnlyMapLike.h: * bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp: (WebCore::JSTestReadOnlySetLike::subspaceForImpl): (WebCore::JSTestReadOnlySetLikeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestReadOnlySetLike.h: * bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp: (WebCore::JSTestReportExtraMemoryCost::subspaceForImpl): (WebCore::JSTestReportExtraMemoryCost::visitChildrenImpl): (WebCore::JSTestReportExtraMemoryCostOwner::isReachableFromOpaqueRoots): (WebCore::JSTestReportExtraMemoryCost::visitChildren): Deleted. * bindings/scripts/test/JS/JSTestReportExtraMemoryCost.h: * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: (WebCore::JSTestSerializedScriptValueInterface::subspaceForImpl): (WebCore::JSTestSerializedScriptValueInterface::visitChildrenImpl): (WebCore::JSTestSerializedScriptValueInterfaceOwner::isReachableFromOpaqueRoots): (WebCore::JSTestSerializedScriptValueInterface::visitChildren): Deleted. * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h: * bindings/scripts/test/JS/JSTestSetLike.cpp: (WebCore::JSTestSetLike::subspaceForImpl): (WebCore::JSTestSetLikeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestSetLike.h: * bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp: (WebCore::JSTestSetLikeWithOverriddenOperations::subspaceForImpl): (WebCore::JSTestSetLikeWithOverriddenOperationsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.h: * bindings/scripts/test/JS/JSTestStringifier.cpp: (WebCore::JSTestStringifier::subspaceForImpl): (WebCore::JSTestStringifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifier.h: * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: (WebCore::JSTestStringifierAnonymousOperation::subspaceForImpl): (WebCore::JSTestStringifierAnonymousOperationOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h: * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: (WebCore::JSTestStringifierNamedOperation::subspaceForImpl): (WebCore::JSTestStringifierNamedOperationOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierNamedOperation.h: * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: (WebCore::JSTestStringifierOperationImplementedAs::subspaceForImpl): (WebCore::JSTestStringifierOperationImplementedAsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h: * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: (WebCore::JSTestStringifierOperationNamedToString::subspaceForImpl): (WebCore::JSTestStringifierOperationNamedToStringOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h: * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: (WebCore::JSTestStringifierReadOnlyAttribute::subspaceForImpl): (WebCore::JSTestStringifierReadOnlyAttributeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h: * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: (WebCore::JSTestStringifierReadWriteAttribute::subspaceForImpl): (WebCore::JSTestStringifierReadWriteAttributeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h: * bindings/scripts/test/JS/JSTestTypedefs.cpp: (WebCore::JSTestTypedefs::subspaceForImpl): (WebCore::JSTestTypedefsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestTypedefs.h: * bindings/scripts/test/JS/JSWorkerGlobalScope.cpp: (WebCore::JSWorkerGlobalScope::subspaceForImpl): * bindings/scripts/test/JS/JSWorkletGlobalScope.cpp: (WebCore::JSWorkletGlobalScope::subspaceForImpl): * dom/ActiveDOMCallback.h: (WebCore::ActiveDOMCallback::visitJSFunction): * dom/EventListener.h: (WebCore::EventListener::visitJSFunction): * dom/EventTarget.cpp: (WebCore::EventTarget::visitJSEventListeners): * dom/EventTarget.h: * dom/MutationRecord.cpp: * dom/MutationRecord.h: * dom/NodeFilterCondition.h: (WebCore::NodeFilterCondition::visitAggregate): Deleted. * dom/StaticRange.cpp: (WebCore::StaticRange::visitNodesConcurrently const): * dom/StaticRange.h: * html/canvas/WebGL2RenderingContext.cpp: (WebCore::WebGL2RenderingContext::addMembersToOpaqueRoots): * html/canvas/WebGL2RenderingContext.h: * html/canvas/WebGLFramebuffer.cpp: (WebCore::WebGLFramebuffer::addMembersToOpaqueRoots): * html/canvas/WebGLFramebuffer.h: * html/canvas/WebGLProgram.cpp: (WebCore::WebGLProgram::addMembersToOpaqueRoots): * html/canvas/WebGLProgram.h: * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::addMembersToOpaqueRoots): * html/canvas/WebGLRenderingContextBase.h: * html/canvas/WebGLTransformFeedback.cpp: (WebCore::WebGLTransformFeedback::addMembersToOpaqueRoots): * html/canvas/WebGLTransformFeedback.h: * html/canvas/WebGLVertexArrayObjectBase.cpp: (WebCore::WebGLVertexArrayObjectBase::addMembersToOpaqueRoots): * html/canvas/WebGLVertexArrayObjectBase.h: Canonical link: https://commits.webkit.org/234335@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273138 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-02-19 15:51:15 +00:00
* Copyright (C) 2015-2021 Apple Inc. All rights reserved.
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
#if ENABLE(JIT)
#include "CallEdge.h"
#include "CallVariant.h"
#include "GCAwareJITStubRoutine.h"
#include <wtf/Noncopyable.h>
Fix std::make_unique / new[] using system malloc https://bugs.webkit.org/show_bug.cgi?id=182975 Reviewed by JF Bastien. Source/JavaScriptCore: Use Vector, FAST_ALLOCATED, or UniqueArray instead. * API/JSStringRefCF.cpp: (JSStringCreateWithCFString): * bytecode/BytecodeKills.h: * bytecode/BytecodeLivenessAnalysis.cpp: (JSC::BytecodeLivenessAnalysis::computeKills): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::dumpDisassembly): * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): * jit/PolymorphicCallStubRoutine.h: * jit/Repatch.cpp: (JSC::linkPolymorphicCall): * jsc.cpp: (currentWorkingDirectory): * llint/LLIntData.cpp: (JSC::LLInt::initialize): * llint/LLIntData.h: * runtime/ArgList.h: * runtime/StructureChain.h: * runtime/StructureIDTable.cpp: (JSC::StructureIDTable::StructureIDTable): (JSC::StructureIDTable::resize): * runtime/StructureIDTable.h: * runtime/TypeProfilerLog.cpp: (JSC::TypeProfilerLog::TypeProfilerLog): (JSC::TypeProfilerLog::initializeLog): Deleted. * runtime/TypeProfilerLog.h: (JSC::TypeProfilerLog::TypeProfilerLog): Deleted. * runtime/VM.cpp: (JSC::VM::~VM): (JSC::VM::acquireRegExpPatternContexBuffer): * runtime/VM.h: * testRegExp.cpp: (runFromFiles): * tools/HeapVerifier.cpp: (JSC::HeapVerifier::HeapVerifier): * tools/HeapVerifier.h: Source/WebCore: Use Vector, FAST_ALLOCATED, or UniqueArray instead. * Modules/webaudio/AudioBufferSourceNode.cpp: (WebCore::AudioBufferSourceNode::setBuffer): * Modules/webaudio/AudioBufferSourceNode.h: * css/StyleRule.h: * cssjit/CompiledSelector.h: * html/HTMLFrameSetElement.h: * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::copyTexSubImage2D): (WebCore::WebGLRenderingContextBase::simulateVertexAttrib0): (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::LRUImageBufferCache): (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer): (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::bubbleToFront): * html/canvas/WebGLRenderingContextBase.h: * platform/Length.cpp: (WebCore::newCoordsArray): (WebCore::newLengthArray): (): Deleted. * platform/Length.h: * platform/audio/DynamicsCompressor.cpp: (WebCore::DynamicsCompressor::setNumberOfChannels): * platform/audio/DynamicsCompressor.h: * platform/audio/FFTFrame.h: * platform/audio/gstreamer/FFTFrameGStreamer.cpp: (WebCore::FFTFrame::FFTFrame): * platform/graphics/FormatConverter.h: (WebCore::FormatConverter::FormatConverter): * platform/graphics/GraphicsContext3D.cpp: (WebCore::GraphicsContext3D::texImage2DResourceSafe): * platform/graphics/GraphicsContext3D.h: * platform/graphics/ca/win/CACFLayerTreeHost.cpp: (WebCore::getDirtyRects): * platform/graphics/cairo/CairoUtilities.cpp: (WebCore::flipImageSurfaceVertically): * platform/graphics/cg/GraphicsContext3DCG.cpp: (WebCore::GraphicsContext3D::ImageExtractor::extractImage): * platform/graphics/gpu/Texture.cpp: (WebCore::Texture::updateSubRect): * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: (WebCore::GraphicsContext3D::paintRenderingResultsToCanvas): (WebCore::GraphicsContext3D::compileShader): (WebCore::GraphicsContext3D::getActiveAttribImpl): (WebCore::GraphicsContext3D::getActiveUniformImpl): (WebCore::GraphicsContext3D::getProgramInfoLog): (WebCore::GraphicsContext3D::getShaderInfoLog): * platform/graphics/texmap/TextureMapperShaderProgram.cpp: (WebCore::getShaderLog): (WebCore::getProgramLog): * platform/graphics/win/ImageBufferDataDirect2D.cpp: (WebCore::ImageBufferData::putData): * platform/image-decoders/png/PNGImageDecoder.cpp: (WebCore::PNGImageReader::PNGImageReader): (WebCore::PNGImageReader::close): (WebCore::PNGImageReader::interlaceBuffer const): (WebCore::PNGImageReader::createInterlaceBuffer): * platform/image-decoders/webp/WEBPImageDecoder.cpp: (WebCore::WEBPImageDecoder::decodeFrame): * platform/network/curl/SocketStreamHandleImpl.h: (WebCore::SocketStreamHandleImpl::SocketData::SocketData): * platform/network/curl/SocketStreamHandleImplCurl.cpp: (WebCore::createCopy): (WebCore::SocketStreamHandleImpl::readData): (): Deleted. * platform/network/soup/SocketStreamHandleImpl.h: * platform/network/soup/SocketStreamHandleImplSoup.cpp: (WebCore::SocketStreamHandleImpl::connected): * platform/win/LoggingWin.cpp: (WebCore::logLevelString): Source/WebCore/PAL: Use Vector instead. * pal/win/LoggingWin.cpp: (PAL::logLevelString): Source/WebKit: Use Vector instead. * NetworkProcess/win/SystemProxyWin.cpp: (WindowsSystemProxy::getSystemHttpProxy): * Platform/IPC/unix/ConnectionUnix.cpp: (IPC::Connection::processMessage): (IPC::Connection::sendOutputMessage): * Platform/win/LoggingWin.cpp: (WebKit::logLevelString): * Shared/SandboxExtension.h: * Shared/mac/SandboxExtensionMac.mm: (WebKit::SandboxExtension::HandleArray::allocate): (WebKit::SandboxExtension::HandleArray::operator[]): (WebKit::SandboxExtension::HandleArray::operator[] const): (WebKit::SandboxExtension::HandleArray::size const): (WebKit::SandboxExtension::HandleArray::encode const): Source/WebKitLegacy/win: Use Vector instead. * MarshallingHelpers.cpp: (MarshallingHelpers::safeArrayToStringArray): (MarshallingHelpers::safeArrayToIntArray): * Plugins/PluginPackageWin.cpp: (WebCore::PluginPackage::fetchInfo): * WebPreferences.cpp: (WebPreferences::copyWebKitPreferencesToCFPreferences): * WebView.cpp: (WebView::onMenuCommand): Source/WTF: If we use `make_unique<char[]>(num)` or `new char[num]`, allocation is done by the system malloc instead of bmalloc. This patch fixes this issue by following three changes. 1. Introduce UniqueArray<T>. It allocates memory from FastMalloc. While C++ array with `new` need to hold the size to call destructor correctly, our UniqueArray only supports type T which does not have a non trivial destructor. It reduces the allocation size since we do not need to track the size of the array compared to standard `new T[]`. This is basically usable if we want to have raw array which pointer won't be changed even if the container is moved. In addition, we also extend UniqueArray<T> for types which have non trivial destructors. 2. Use Vector<T> instead. 3. Annotate allocated types with MAKE_FAST_ALLOCATED. Since it introduces new[] and delete[] operators, make_unique<T[]>(num) will allocate memory from FastMalloc. * WTF.xcodeproj/project.pbxproj: * wtf/Assertions.cpp: * wtf/CMakeLists.txt: * wtf/FastMalloc.h: (WTF::FastFree::operator() const): (WTF::FastFree<T::operator() const): * wtf/MallocPtr.h: (WTF::MallocPtr::operator bool const): * wtf/StackShot.h: (WTF::StackShot::StackShot): (WTF::StackShot::operator=): * wtf/SystemFree.h: (WTF::SystemFree<T::operator() const): * wtf/UniqueArray.h: Copied from Source/WebKit/Platform/win/LoggingWin.cpp. (WTF::makeUniqueArray): * wtf/Vector.h: (WTF::VectorTypeOperations::forceInitialize): Tools: * TestWebKitAPI/CMakeLists.txt: * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WTF/UniqueArray.cpp: Copied from Source/WebKit/Platform/win/LoggingWin.cpp. (TestWebKitAPI::NonTrivialDestructor::NonTrivialDestructor): (TestWebKitAPI::NonTrivialDestructor::~NonTrivialDestructor): (TestWebKitAPI::NonTrivialDestructor::setLog): (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/199024@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@229309 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-03-06 07:25:14 +00:00
#include <wtf/UniqueArray.h>
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
#include <wtf/Vector.h>
namespace JSC {
Refactor CallLinkInfo from a struct to a class https://bugs.webkit.org/show_bug.cgi?id=146292 Rubber stamped by Filip Pizlo. Refactored CallLinkInfo from a struct to a class with proper accessors and made all the data elements private. Done in preparation for fixing https://bugs.webkit.org/show_bug.cgi?id=146285. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::clearStub): (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: (JSC::CallLinkInfo::callTypeFor): (JSC::CallLinkInfo::CallLinkInfo): (JSC::CallLinkInfo::~CallLinkInfo): (JSC::CallLinkInfo::specializationKindFor): (JSC::CallLinkInfo::specializationKind): (JSC::CallLinkInfo::isLinked): (JSC::CallLinkInfo::setUpCall): (JSC::CallLinkInfo::setCallLocations): (JSC::CallLinkInfo::setUpCallFromFTL): (JSC::CallLinkInfo::callReturnLocation): (JSC::CallLinkInfo::hotPathBegin): (JSC::CallLinkInfo::hotPathOther): (JSC::CallLinkInfo::setCallee): (JSC::CallLinkInfo::clearCallee): (JSC::CallLinkInfo::callee): (JSC::CallLinkInfo::setLastSeenCallee): (JSC::CallLinkInfo::clearLastSeenCallee): (JSC::CallLinkInfo::lastSeenCallee): (JSC::CallLinkInfo::haveLastSeenCallee): (JSC::CallLinkInfo::setStub): (JSC::CallLinkInfo::stub): (JSC::CallLinkInfo::seenOnce): (JSC::CallLinkInfo::clearSeen): (JSC::CallLinkInfo::setSeen): (JSC::CallLinkInfo::hasSeenClosure): (JSC::CallLinkInfo::setHasSeenClosure): (JSC::CallLinkInfo::clearedByGC): (JSC::CallLinkInfo::setCallType): (JSC::CallLinkInfo::callType): (JSC::CallLinkInfo::addressOfMaxNumArguments): (JSC::CallLinkInfo::maxNumArguments): (JSC::CallLinkInfo::offsetOfSlowPathCount): (JSC::CallLinkInfo::setCalleeGPR): (JSC::CallLinkInfo::calleeGPR): (JSC::CallLinkInfo::slowPathCount): (JSC::CallLinkInfo::setCodeOrigin): (JSC::CallLinkInfo::codeOrigin): (JSC::getCallLinkInfoCodeOrigin): * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::computeDFGStatuses): * bytecode/CallLinkStatus.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::printCallOp): (JSC::CodeBlock::getCallLinkInfoForBytecodeIndex): * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::link): * dfg/DFGOSRExitCompilerCommon.cpp: (JSC::DFG::reifyInlinedCallFrames): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): * ftl/FTLJSCallBase.cpp: (JSC::FTL::JSCallBase::link): * jit/AccessorCallJITStubRoutine.h: * jit/JIT.cpp: (JSC::JIT::privateCompile): * jit/JIT.h: * jit/JITCall.cpp: (JSC::JIT::compileSetupVarargsFrame): (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileSetupVarargsFrame): (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallNode::clearCallLinkInfo): * jit/PolymorphicCallStubRoutine.h: * jit/Repatch.cpp: (JSC::generateByIdStub): (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkPolymorphicCall): * jit/ThunkGenerators.cpp: (JSC::virtualForThunkGenerator): Canonical link: https://commits.webkit.org/164369@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@185930 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-06-24 22:37:30 +00:00
class CallLinkInfo;
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
[JSC] Compress miscelaneous JIT related data structures with Packed<> https://bugs.webkit.org/show_bug.cgi?id=197830 Reviewed by Saam Barati. Source/JavaScriptCore: This patch leverages Packed<> to compress miscelaneous data structures related to JIT. 1. JIT IC data structures 2. ValueRecovery We use Packed<> for EncodedJSValue in ValueRecovery. This means that conservative GC cannot find these values. But this is OK anyway since ValueRecovery's constant should be already registered in DFG graph. From 16 (alignment 8) to 9 (alignment 1). 3. FTL::ExitValue We use Packed<> for EncodedJSValue in FTL::ExitValue. This is also OK since this constant should be already registered by DFG/FTL graph. From 16 (alignment 8) to 9 (alignment 1). * assembler/CodeLocation.h: * bytecode/ByValInfo.h: * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::CallLinkInfo): (JSC::CallLinkInfo::callReturnLocation): * bytecode/CallLinkInfo.h: (JSC::CallLinkInfo::nearCallMode const): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::addJITAddIC): (JSC::CodeBlock::addJITMulIC): (JSC::CodeBlock::addJITSubIC): (JSC::CodeBlock::addJITNegIC): * bytecode/CodeBlock.h: (JSC::CodeBlock::addMathIC): * bytecode/InlineCallFrame.h: (JSC::InlineCallFrame::InlineCallFrame): * bytecode/ValueRecovery.h: (JSC::ValueRecovery::inGPR): (JSC::ValueRecovery::inPair): (JSC::ValueRecovery::inFPR): (JSC::ValueRecovery::displacedInJSStack): (JSC::ValueRecovery::constant): (JSC::ValueRecovery::directArgumentsThatWereNotCreated): (JSC::ValueRecovery::clonedArgumentsThatWereNotCreated): (JSC::ValueRecovery::gpr const): (JSC::ValueRecovery::tagGPR const): (JSC::ValueRecovery::payloadGPR const): (JSC::ValueRecovery::fpr const): (JSC::ValueRecovery::virtualRegister const): (JSC::ValueRecovery::withLocalsOffset const): (JSC::ValueRecovery::constant const): (JSC::ValueRecovery::nodeID const): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileValueAdd): (JSC::DFG::SpeculativeJIT::compileValueSub): (JSC::DFG::SpeculativeJIT::compileValueNegate): (JSC::DFG::SpeculativeJIT::compileValueMul): * ftl/FTLExitValue.cpp: (JSC::FTL::ExitValue::materializeNewObject): * ftl/FTLExitValue.h: (JSC::FTL::ExitValue::inJSStack): (JSC::FTL::ExitValue::inJSStackAsInt32): (JSC::FTL::ExitValue::inJSStackAsInt52): (JSC::FTL::ExitValue::inJSStackAsDouble): (JSC::FTL::ExitValue::constant): (JSC::FTL::ExitValue::exitArgument): (JSC::FTL::ExitValue::exitArgument const): (JSC::FTL::ExitValue::adjustStackmapLocationsIndexByOffset): (JSC::FTL::ExitValue::constant const): (JSC::FTL::ExitValue::virtualRegister const): (JSC::FTL::ExitValue::objectMaterialization const): (JSC::FTL::ExitValue::withVirtualRegister const): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileValueAdd): (JSC::FTL::DFG::LowerDFGToB3::compileValueSub): (JSC::FTL::DFG::LowerDFGToB3::compileValueMul): (JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC): (JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC): (JSC::FTL::DFG::LowerDFGToB3::compileArithAddOrSub): (JSC::FTL::DFG::LowerDFGToB3::compileValueNegate): * jit/CachedRecovery.h: * jit/CallFrameShuffleData.h: * jit/JITArithmetic.cpp: (JSC::JIT::emit_op_negate): (JSC::JIT::emit_op_add): (JSC::JIT::emit_op_mul): (JSC::JIT::emit_op_sub): * jit/JITMathIC.h: (JSC::isProfileEmpty): (JSC::JITBinaryMathIC::JITBinaryMathIC): (JSC::JITUnaryMathIC::JITUnaryMathIC): * jit/PolymorphicCallStubRoutine.h: (JSC::PolymorphicCallNode::hasCallLinkInfo): * jit/SnippetOperand.h: (JSC::SnippetOperand::asRawBits const): (JSC::SnippetOperand::asConstInt32 const): (JSC::SnippetOperand::asConstDouble const): (JSC::SnippetOperand::setConstInt32): (JSC::SnippetOperand::setConstDouble): Source/WTF: * wtf/Packed.h: (WTF::alignof): Canonical link: https://commits.webkit.org/211966@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245239 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-13 17:32:31 +00:00
class PolymorphicCallNode : public PackedRawSentinelNode<PolymorphicCallNode> {
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
WTF_MAKE_NONCOPYABLE(PolymorphicCallNode);
public:
PolymorphicCallNode(CallLinkInfo* info)
: m_callLinkInfo(info)
{
}
~PolymorphicCallNode();
Get rid of RepatchBuffer and replace it with static functions https://bugs.webkit.org/show_bug.cgi?id=148742 Reviewed by Geoffrey Garen and Mark Lam. RepatchBuffer is an object that doesn't have any state. All of its instance methods are just wrappers for methods on MacroAssembler. So, we should make those MacroAssembler methods public and call them directly. * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: * JavaScriptCore.xcodeproj/project.pbxproj: * assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssembler::linkJump): (JSC::AbstractMacroAssembler::linkPointer): (JSC::AbstractMacroAssembler::getLinkerAddress): (JSC::AbstractMacroAssembler::getLinkerCallReturnOffset): (JSC::AbstractMacroAssembler::repatchJump): (JSC::AbstractMacroAssembler::repatchNearCall): (JSC::AbstractMacroAssembler::repatchCompact): (JSC::AbstractMacroAssembler::repatchInt32): (JSC::AbstractMacroAssembler::repatchPointer): (JSC::AbstractMacroAssembler::readPointer): (JSC::AbstractMacroAssembler::replaceWithLoad): (JSC::AbstractMacroAssembler::replaceWithAddressComputation): (JSC::AbstractMacroAssembler::AbstractMacroAssembler): * assembler/MacroAssemblerARM64.h: (JSC::MacroAssemblerARM64::revertJumpReplacementToPatchableBranch32WithPatch): (JSC::MacroAssemblerARM64::repatchCall): (JSC::MacroAssemblerARM64::makeBranch): (JSC::MacroAssemblerARM64::linkCall): * assembler/MacroAssemblerARMv7.h: (JSC::MacroAssemblerARMv7::revertJumpReplacementToPatchableBranch32WithPatch): (JSC::MacroAssemblerARMv7::repatchCall): (JSC::MacroAssemblerARMv7::linkCall): (JSC::MacroAssemblerARMv7::trustedImm32FromPtr): * assembler/MacroAssemblerX86.h: (JSC::MacroAssemblerX86::revertJumpReplacementToPatchableBranch32WithPatch): (JSC::MacroAssemblerX86::repatchCall): (JSC::MacroAssemblerX86::linkCall): * assembler/MacroAssemblerX86_64.h: (JSC::MacroAssemblerX86_64::revertJumpReplacementToBranchPtrWithPatch): (JSC::MacroAssemblerX86_64::repatchCall): (JSC::MacroAssemblerX86_64::linkCall): * assembler/RepatchBuffer.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::clearStub): (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: (JSC::CallLinkInfo::registerPreservationMode): (JSC::CallLinkInfo::isLinked): (JSC::CallLinkInfo::setUpCall): (JSC::CallLinkInfo::codeOrigin): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::resetStub): (JSC::CodeBlock::resetStubInternal): (JSC::CodeBlock::resetStubDuringGCInternal): (JSC::CodeBlock::unlinkIncomingCalls): * bytecode/CodeBlock.h: * bytecode/PolymorphicGetByIdList.cpp: (JSC::GetByIdAccess::fromStructureStubInfo): (JSC::GetByIdAccess::visitWeak): (JSC::PolymorphicGetByIdList::didSelfPatching): (JSC::PolymorphicGetByIdList::visitWeak): * bytecode/PolymorphicGetByIdList.h: (JSC::GetByIdAccess::doesCalls): * bytecode/PolymorphicPutByIdList.cpp: (JSC::PutByIdAccess::fromStructureStubInfo): (JSC::PutByIdAccess::visitWeak): (JSC::PolymorphicPutByIdList::addAccess): (JSC::PolymorphicPutByIdList::visitWeak): * bytecode/PolymorphicPutByIdList.h: (JSC::PutByIdAccess::customSetter): (JSC::PolymorphicPutByIdList::kind): * bytecode/StructureStubInfo.cpp: (JSC::StructureStubInfo::deref): (JSC::StructureStubInfo::visitWeakReferences): * bytecode/StructureStubInfo.h: (JSC::StructureStubInfo::seenOnce): * dfg/DFGOSRExitCompiler.cpp: * ftl/FTLCompile.cpp: (JSC::FTL::mmAllocateDataSection): * ftl/FTLOSRExitCompiler.cpp: (JSC::FTL::compileFTLOSRExit): * jit/AccessorCallJITStubRoutine.cpp: (JSC::AccessorCallJITStubRoutine::~AccessorCallJITStubRoutine): (JSC::AccessorCallJITStubRoutine::visitWeak): * jit/AccessorCallJITStubRoutine.h: * jit/JIT.cpp: (JSC::ctiPatchCallByReturnAddress): (JSC::JIT::JIT): (JSC::ctiPatchNearCallByReturnAddress): Deleted. * jit/JIT.h: * jit/JITCall.cpp: * jit/JITOpcodes.cpp: (JSC::JIT::privateCompileHasIndexedProperty): (JSC::JIT::emit_op_has_indexed_property): * jit/JITOperations.cpp: (JSC::getByVal): * jit/JITPropertyAccess.cpp: (JSC::JIT::privateCompileGetByVal): (JSC::JIT::privateCompileGetByValWithCachedId): (JSC::JIT::privateCompilePutByVal): (JSC::JIT::privateCompilePutByValWithCachedId): * jit/JITPropertyAccess32_64.cpp: * jit/JITStubRoutine.cpp: (JSC::JITStubRoutine::~JITStubRoutine): (JSC::JITStubRoutine::visitWeak): * jit/JITStubRoutine.h: * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallStubRoutine::clearCallNodesFor): (JSC::PolymorphicCallStubRoutine::visitWeak): * jit/PolymorphicCallStubRoutine.h: (JSC::PolymorphicCallNode::hasCallLinkInfo): * jit/Repatch.cpp: (JSC::readCallTarget): (JSC::repatchCall): (JSC::repatchByIdSelfAccess): (JSC::checkObjectPropertyConditions): (JSC::replaceWithJump): (JSC::tryCacheGetByID): (JSC::repatchGetByID): (JSC::patchJumpToGetByIdStub): (JSC::tryBuildGetByIDList): (JSC::tryCachePutByID): (JSC::tryBuildPutByIdList): (JSC::tryRepatchIn): (JSC::repatchIn): (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::resetGetByID): (JSC::resetPutByID): (JSC::resetIn): * jit/Repatch.h: Canonical link: https://commits.webkit.org/166861@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@189288 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-09-03 21:11:59 +00:00
void unlink(VM&);
[JSC] Compress miscelaneous JIT related data structures with Packed<> https://bugs.webkit.org/show_bug.cgi?id=197830 Reviewed by Saam Barati. Source/JavaScriptCore: This patch leverages Packed<> to compress miscelaneous data structures related to JIT. 1. JIT IC data structures 2. ValueRecovery We use Packed<> for EncodedJSValue in ValueRecovery. This means that conservative GC cannot find these values. But this is OK anyway since ValueRecovery's constant should be already registered in DFG graph. From 16 (alignment 8) to 9 (alignment 1). 3. FTL::ExitValue We use Packed<> for EncodedJSValue in FTL::ExitValue. This is also OK since this constant should be already registered by DFG/FTL graph. From 16 (alignment 8) to 9 (alignment 1). * assembler/CodeLocation.h: * bytecode/ByValInfo.h: * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::CallLinkInfo): (JSC::CallLinkInfo::callReturnLocation): * bytecode/CallLinkInfo.h: (JSC::CallLinkInfo::nearCallMode const): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::addJITAddIC): (JSC::CodeBlock::addJITMulIC): (JSC::CodeBlock::addJITSubIC): (JSC::CodeBlock::addJITNegIC): * bytecode/CodeBlock.h: (JSC::CodeBlock::addMathIC): * bytecode/InlineCallFrame.h: (JSC::InlineCallFrame::InlineCallFrame): * bytecode/ValueRecovery.h: (JSC::ValueRecovery::inGPR): (JSC::ValueRecovery::inPair): (JSC::ValueRecovery::inFPR): (JSC::ValueRecovery::displacedInJSStack): (JSC::ValueRecovery::constant): (JSC::ValueRecovery::directArgumentsThatWereNotCreated): (JSC::ValueRecovery::clonedArgumentsThatWereNotCreated): (JSC::ValueRecovery::gpr const): (JSC::ValueRecovery::tagGPR const): (JSC::ValueRecovery::payloadGPR const): (JSC::ValueRecovery::fpr const): (JSC::ValueRecovery::virtualRegister const): (JSC::ValueRecovery::withLocalsOffset const): (JSC::ValueRecovery::constant const): (JSC::ValueRecovery::nodeID const): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileValueAdd): (JSC::DFG::SpeculativeJIT::compileValueSub): (JSC::DFG::SpeculativeJIT::compileValueNegate): (JSC::DFG::SpeculativeJIT::compileValueMul): * ftl/FTLExitValue.cpp: (JSC::FTL::ExitValue::materializeNewObject): * ftl/FTLExitValue.h: (JSC::FTL::ExitValue::inJSStack): (JSC::FTL::ExitValue::inJSStackAsInt32): (JSC::FTL::ExitValue::inJSStackAsInt52): (JSC::FTL::ExitValue::inJSStackAsDouble): (JSC::FTL::ExitValue::constant): (JSC::FTL::ExitValue::exitArgument): (JSC::FTL::ExitValue::exitArgument const): (JSC::FTL::ExitValue::adjustStackmapLocationsIndexByOffset): (JSC::FTL::ExitValue::constant const): (JSC::FTL::ExitValue::virtualRegister const): (JSC::FTL::ExitValue::objectMaterialization const): (JSC::FTL::ExitValue::withVirtualRegister const): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileValueAdd): (JSC::FTL::DFG::LowerDFGToB3::compileValueSub): (JSC::FTL::DFG::LowerDFGToB3::compileValueMul): (JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC): (JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC): (JSC::FTL::DFG::LowerDFGToB3::compileArithAddOrSub): (JSC::FTL::DFG::LowerDFGToB3::compileValueNegate): * jit/CachedRecovery.h: * jit/CallFrameShuffleData.h: * jit/JITArithmetic.cpp: (JSC::JIT::emit_op_negate): (JSC::JIT::emit_op_add): (JSC::JIT::emit_op_mul): (JSC::JIT::emit_op_sub): * jit/JITMathIC.h: (JSC::isProfileEmpty): (JSC::JITBinaryMathIC::JITBinaryMathIC): (JSC::JITUnaryMathIC::JITUnaryMathIC): * jit/PolymorphicCallStubRoutine.h: (JSC::PolymorphicCallNode::hasCallLinkInfo): * jit/SnippetOperand.h: (JSC::SnippetOperand::asRawBits const): (JSC::SnippetOperand::asConstInt32 const): (JSC::SnippetOperand::asConstDouble const): (JSC::SnippetOperand::setConstInt32): (JSC::SnippetOperand::setConstDouble): Source/WTF: * wtf/Packed.h: (WTF::alignof): Canonical link: https://commits.webkit.org/211966@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245239 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-13 17:32:31 +00:00
bool hasCallLinkInfo(CallLinkInfo* info) { return m_callLinkInfo.get() == info; }
void clearCallLinkInfo();
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
private:
[JSC] Compress miscelaneous JIT related data structures with Packed<> https://bugs.webkit.org/show_bug.cgi?id=197830 Reviewed by Saam Barati. Source/JavaScriptCore: This patch leverages Packed<> to compress miscelaneous data structures related to JIT. 1. JIT IC data structures 2. ValueRecovery We use Packed<> for EncodedJSValue in ValueRecovery. This means that conservative GC cannot find these values. But this is OK anyway since ValueRecovery's constant should be already registered in DFG graph. From 16 (alignment 8) to 9 (alignment 1). 3. FTL::ExitValue We use Packed<> for EncodedJSValue in FTL::ExitValue. This is also OK since this constant should be already registered by DFG/FTL graph. From 16 (alignment 8) to 9 (alignment 1). * assembler/CodeLocation.h: * bytecode/ByValInfo.h: * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::CallLinkInfo): (JSC::CallLinkInfo::callReturnLocation): * bytecode/CallLinkInfo.h: (JSC::CallLinkInfo::nearCallMode const): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::addJITAddIC): (JSC::CodeBlock::addJITMulIC): (JSC::CodeBlock::addJITSubIC): (JSC::CodeBlock::addJITNegIC): * bytecode/CodeBlock.h: (JSC::CodeBlock::addMathIC): * bytecode/InlineCallFrame.h: (JSC::InlineCallFrame::InlineCallFrame): * bytecode/ValueRecovery.h: (JSC::ValueRecovery::inGPR): (JSC::ValueRecovery::inPair): (JSC::ValueRecovery::inFPR): (JSC::ValueRecovery::displacedInJSStack): (JSC::ValueRecovery::constant): (JSC::ValueRecovery::directArgumentsThatWereNotCreated): (JSC::ValueRecovery::clonedArgumentsThatWereNotCreated): (JSC::ValueRecovery::gpr const): (JSC::ValueRecovery::tagGPR const): (JSC::ValueRecovery::payloadGPR const): (JSC::ValueRecovery::fpr const): (JSC::ValueRecovery::virtualRegister const): (JSC::ValueRecovery::withLocalsOffset const): (JSC::ValueRecovery::constant const): (JSC::ValueRecovery::nodeID const): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileValueAdd): (JSC::DFG::SpeculativeJIT::compileValueSub): (JSC::DFG::SpeculativeJIT::compileValueNegate): (JSC::DFG::SpeculativeJIT::compileValueMul): * ftl/FTLExitValue.cpp: (JSC::FTL::ExitValue::materializeNewObject): * ftl/FTLExitValue.h: (JSC::FTL::ExitValue::inJSStack): (JSC::FTL::ExitValue::inJSStackAsInt32): (JSC::FTL::ExitValue::inJSStackAsInt52): (JSC::FTL::ExitValue::inJSStackAsDouble): (JSC::FTL::ExitValue::constant): (JSC::FTL::ExitValue::exitArgument): (JSC::FTL::ExitValue::exitArgument const): (JSC::FTL::ExitValue::adjustStackmapLocationsIndexByOffset): (JSC::FTL::ExitValue::constant const): (JSC::FTL::ExitValue::virtualRegister const): (JSC::FTL::ExitValue::objectMaterialization const): (JSC::FTL::ExitValue::withVirtualRegister const): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileValueAdd): (JSC::FTL::DFG::LowerDFGToB3::compileValueSub): (JSC::FTL::DFG::LowerDFGToB3::compileValueMul): (JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC): (JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC): (JSC::FTL::DFG::LowerDFGToB3::compileArithAddOrSub): (JSC::FTL::DFG::LowerDFGToB3::compileValueNegate): * jit/CachedRecovery.h: * jit/CallFrameShuffleData.h: * jit/JITArithmetic.cpp: (JSC::JIT::emit_op_negate): (JSC::JIT::emit_op_add): (JSC::JIT::emit_op_mul): (JSC::JIT::emit_op_sub): * jit/JITMathIC.h: (JSC::isProfileEmpty): (JSC::JITBinaryMathIC::JITBinaryMathIC): (JSC::JITUnaryMathIC::JITUnaryMathIC): * jit/PolymorphicCallStubRoutine.h: (JSC::PolymorphicCallNode::hasCallLinkInfo): * jit/SnippetOperand.h: (JSC::SnippetOperand::asRawBits const): (JSC::SnippetOperand::asConstInt32 const): (JSC::SnippetOperand::asConstDouble const): (JSC::SnippetOperand::setConstInt32): (JSC::SnippetOperand::setConstDouble): Source/WTF: * wtf/Packed.h: (WTF::alignof): Canonical link: https://commits.webkit.org/211966@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245239 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-13 17:32:31 +00:00
PackedPtr<CallLinkInfo> m_callLinkInfo;
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
};
class PolymorphicCallCase {
public:
PolymorphicCallCase()
: m_codeBlock(nullptr)
{
}
PolymorphicCallCase(CallVariant variant, CodeBlock* codeBlock)
: m_variant(variant)
, m_codeBlock(codeBlock)
{
}
CallVariant variant() const { return m_variant; }
CodeBlock* codeBlock() const { return m_codeBlock; }
void dump(PrintStream&) const;
private:
CallVariant m_variant;
CodeBlock* m_codeBlock;
};
[clang-tidy] Run modernize-use-override over JSC, then ensure as much as possible is final https://bugs.webkit.org/show_bug.cgi?id=211743 Reviewed by Saam Barati. * API/JSScriptRef.cpp: * b3/B3ArgumentRegValue.h: * b3/B3AtomicValue.h: * b3/B3CCallValue.h: * b3/B3CheckSpecial.h: * b3/B3CheckValue.h: * b3/B3Const32Value.h: * b3/B3Const64Value.h: * b3/B3ConstDoubleValue.h: * b3/B3ConstFloatValue.h: * b3/B3DataSection.h: * b3/B3ExtractValue.h: * b3/B3FenceValue.h: * b3/B3MemoryValue.h: * b3/B3PatchpointSpecial.h: * b3/B3PatchpointValue.h: * b3/B3SlotBaseValue.h: * b3/B3StackmapSpecial.h: * b3/B3StackmapValue.h: * b3/B3SwitchValue.h: * b3/B3UpsilonValue.h: * b3/B3VariableValue.h: * b3/B3WasmAddressValue.h: * b3/B3WasmBoundsCheckValue.h: * b3/air/AirCCallSpecial.h: * b3/air/AirPrintSpecial.h: * bytecode/BytecodeDumper.h: * bytecode/GetterSetterAccessCase.h: * bytecode/InstanceOfAccessCase.h: * bytecode/IntrinsicGetterAccessCase.h: * bytecode/ModuleNamespaceAccessCase.h: * bytecode/ProxyableAccessCase.h: * bytecode/Watchpoint.h: * dfg/DFGFailedFinalizer.h: * dfg/DFGGraph.h: * dfg/DFGJITCode.h: * dfg/DFGJITFinalizer.h: * dfg/DFGToFTLDeferredCompilationCallback.h: * dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h: * ftl/FTLForOSREntryJITCode.h: * ftl/FTLJITCode.h: * ftl/FTLJITFinalizer.h: * heap/CompleteSubspace.h: * heap/FastMallocAlignedMemoryAllocator.h: * heap/GigacageAlignedMemoryAllocator.h: * heap/HeapSnapshotBuilder.h: * heap/IsoAlignedMemoryAllocator.h: * heap/IsoSubspace.h: * heap/IsoSubspacePerVM.cpp: * heap/IsoSubspacePerVM.h: * heap/MarkStackMergingConstraint.h: * heap/SimpleMarkingConstraint.h: * heap/SpaceTimeMutatorScheduler.h: * heap/StochasticSpaceTimeMutatorScheduler.h: * heap/SynchronousStopTheWorldMutatorScheduler.h: * jit/GCAwareJITStubRoutine.h: * jit/JITCode.h: * jit/JITThunks.h: * jit/JITToDFGDeferredCompilationCallback.h: * jit/PolymorphicCallStubRoutine.h: * jsc.cpp: * parser/Lexer.cpp: Address warning. * runtime/JSDestructibleObjectHeapCellType.h: * runtime/SimpleTypedArrayController.h: * runtime/Structure.h: * runtime/WeakGCMap.h: * wasm/WasmEntryPlan.h: Canonical link: https://commits.webkit.org/224681@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@261567 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-05-12 18:48:02 +00:00
class PolymorphicCallStubRoutine final : public GCAwareJITStubRoutine {
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
public:
PolymorphicCallStubRoutine(
Templatize CodePtr/Refs/FunctionPtrs with PtrTags. https://bugs.webkit.org/show_bug.cgi?id=184702 <rdar://problem/35391681> Reviewed by Filip Pizlo and Saam Barati. Source/JavaScriptCore: 1. Templatized MacroAssemblerCodePtr/Ref, FunctionPtr, and CodeLocation variants to take a PtrTag template argument. 2. Replaced some uses of raw pointers with the equivalent CodePtr / FunctionPtr. * assembler/AbstractMacroAssembler.h: (JSC::AbstractMacroAssembler::differenceBetweenCodePtr): (JSC::AbstractMacroAssembler::linkJump): (JSC::AbstractMacroAssembler::linkPointer): (JSC::AbstractMacroAssembler::getLinkerAddress): (JSC::AbstractMacroAssembler::repatchJump): (JSC::AbstractMacroAssembler::repatchJumpToNop): (JSC::AbstractMacroAssembler::repatchNearCall): (JSC::AbstractMacroAssembler::repatchCompact): (JSC::AbstractMacroAssembler::repatchInt32): (JSC::AbstractMacroAssembler::repatchPointer): (JSC::AbstractMacroAssembler::readPointer): (JSC::AbstractMacroAssembler::replaceWithLoad): (JSC::AbstractMacroAssembler::replaceWithAddressComputation): * assembler/CodeLocation.h: (JSC::CodeLocationCommon:: const): (JSC::CodeLocationCommon::CodeLocationCommon): (JSC::CodeLocationInstruction::CodeLocationInstruction): (JSC::CodeLocationLabel::CodeLocationLabel): (JSC::CodeLocationLabel::retagged): (JSC::CodeLocationLabel:: const): (JSC::CodeLocationJump::CodeLocationJump): (JSC::CodeLocationJump::retagged): (JSC::CodeLocationCall::CodeLocationCall): (JSC::CodeLocationCall::retagged): (JSC::CodeLocationNearCall::CodeLocationNearCall): (JSC::CodeLocationDataLabel32::CodeLocationDataLabel32): (JSC::CodeLocationDataLabelCompact::CodeLocationDataLabelCompact): (JSC::CodeLocationDataLabelPtr::CodeLocationDataLabelPtr): (JSC::CodeLocationConvertibleLoad::CodeLocationConvertibleLoad): (JSC::CodeLocationCommon<tag>::instructionAtOffset): (JSC::CodeLocationCommon<tag>::labelAtOffset): (JSC::CodeLocationCommon<tag>::jumpAtOffset): (JSC::CodeLocationCommon<tag>::callAtOffset): (JSC::CodeLocationCommon<tag>::nearCallAtOffset): (JSC::CodeLocationCommon<tag>::dataLabelPtrAtOffset): (JSC::CodeLocationCommon<tag>::dataLabel32AtOffset): (JSC::CodeLocationCommon<tag>::dataLabelCompactAtOffset): (JSC::CodeLocationCommon<tag>::convertibleLoadAtOffset): (JSC::CodeLocationCommon::instructionAtOffset): Deleted. (JSC::CodeLocationCommon::labelAtOffset): Deleted. (JSC::CodeLocationCommon::jumpAtOffset): Deleted. (JSC::CodeLocationCommon::callAtOffset): Deleted. (JSC::CodeLocationCommon::nearCallAtOffset): Deleted. (JSC::CodeLocationCommon::dataLabelPtrAtOffset): Deleted. (JSC::CodeLocationCommon::dataLabel32AtOffset): Deleted. (JSC::CodeLocationCommon::dataLabelCompactAtOffset): Deleted. (JSC::CodeLocationCommon::convertibleLoadAtOffset): Deleted. * assembler/LinkBuffer.cpp: (JSC::LinkBuffer::finalizeCodeWithoutDisassemblyImpl): (JSC::LinkBuffer::finalizeCodeWithDisassemblyImpl): (JSC::LinkBuffer::finalizeCodeWithoutDisassembly): Deleted. (JSC::LinkBuffer::finalizeCodeWithDisassembly): Deleted. * assembler/LinkBuffer.h: (JSC::LinkBuffer::link): (JSC::LinkBuffer::patch): (JSC::LinkBuffer::entrypoint): (JSC::LinkBuffer::locationOf): (JSC::LinkBuffer::locationOfNearCall): (JSC::LinkBuffer::finalizeCodeWithoutDisassembly): (JSC::LinkBuffer::finalizeCodeWithDisassembly): (JSC::LinkBuffer::trampolineAt): * assembler/MacroAssemblerARM.h: (JSC::MacroAssemblerARM::readCallTarget): (JSC::MacroAssemblerARM::replaceWithJump): (JSC::MacroAssemblerARM::startOfPatchableBranch32WithPatchOnAddress): (JSC::MacroAssemblerARM::startOfPatchableBranchPtrWithPatchOnAddress): (JSC::MacroAssemblerARM::startOfBranchPtrWithPatchOnRegister): (JSC::MacroAssemblerARM::revertJumpReplacementToBranchPtrWithPatch): (JSC::MacroAssemblerARM::revertJumpReplacementToPatchableBranch32WithPatch): (JSC::MacroAssemblerARM::revertJumpReplacementToPatchableBranchPtrWithPatch): (JSC::MacroAssemblerARM::repatchCall): (JSC::MacroAssemblerARM::linkCall): * assembler/MacroAssemblerARM64.h: (JSC::MacroAssemblerARM64::readCallTarget): (JSC::MacroAssemblerARM64::replaceWithVMHalt): (JSC::MacroAssemblerARM64::replaceWithJump): (JSC::MacroAssemblerARM64::startOfBranchPtrWithPatchOnRegister): (JSC::MacroAssemblerARM64::startOfPatchableBranchPtrWithPatchOnAddress): (JSC::MacroAssemblerARM64::startOfPatchableBranch32WithPatchOnAddress): (JSC::MacroAssemblerARM64::revertJumpReplacementToBranchPtrWithPatch): (JSC::MacroAssemblerARM64::revertJumpReplacementToPatchableBranchPtrWithPatch): (JSC::MacroAssemblerARM64::revertJumpReplacementToPatchableBranch32WithPatch): (JSC::MacroAssemblerARM64::repatchCall): (JSC::MacroAssemblerARM64::linkCall): * assembler/MacroAssemblerARMv7.h: (JSC::MacroAssemblerARMv7::replaceWithJump): (JSC::MacroAssemblerARMv7::readCallTarget): (JSC::MacroAssemblerARMv7::startOfBranchPtrWithPatchOnRegister): (JSC::MacroAssemblerARMv7::revertJumpReplacementToBranchPtrWithPatch): (JSC::MacroAssemblerARMv7::startOfPatchableBranchPtrWithPatchOnAddress): (JSC::MacroAssemblerARMv7::startOfPatchableBranch32WithPatchOnAddress): (JSC::MacroAssemblerARMv7::revertJumpReplacementToPatchableBranchPtrWithPatch): (JSC::MacroAssemblerARMv7::revertJumpReplacementToPatchableBranch32WithPatch): (JSC::MacroAssemblerARMv7::repatchCall): (JSC::MacroAssemblerARMv7::linkCall): * assembler/MacroAssemblerCodeRef.cpp: (JSC::MacroAssemblerCodePtrBase::dumpWithName): (JSC::MacroAssemblerCodeRefBase::tryToDisassemble): (JSC::MacroAssemblerCodeRefBase::disassembly): (JSC::MacroAssemblerCodePtr::createLLIntCodePtr): Deleted. (JSC::MacroAssemblerCodePtr::dumpWithName const): Deleted. (JSC::MacroAssemblerCodePtr::dump const): Deleted. (JSC::MacroAssemblerCodeRef::createLLIntCodeRef): Deleted. (JSC::MacroAssemblerCodeRef::tryToDisassemble const): Deleted. (JSC::MacroAssemblerCodeRef::disassembly const): Deleted. (JSC::MacroAssemblerCodeRef::dump const): Deleted. * assembler/MacroAssemblerCodeRef.h: (JSC::FunctionPtr::FunctionPtr): (JSC::FunctionPtr::retagged const): (JSC::FunctionPtr::retaggedExecutableAddress const): (JSC::FunctionPtr::operator== const): (JSC::FunctionPtr::operator!= const): (JSC::ReturnAddressPtr::ReturnAddressPtr): (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): (JSC::MacroAssemblerCodePtr::createFromExecutableAddress): (JSC::MacroAssemblerCodePtr::retagged const): (JSC::MacroAssemblerCodePtr:: const): (JSC::MacroAssemblerCodePtr::dumpWithName const): (JSC::MacroAssemblerCodePtr::dump const): (JSC::MacroAssemblerCodePtrHash::hash): (JSC::MacroAssemblerCodePtrHash::equal): (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef): (JSC::MacroAssemblerCodeRef::createSelfManagedCodeRef): (JSC::MacroAssemblerCodeRef::code const): (JSC::MacroAssemblerCodeRef::retaggedCode const): (JSC::MacroAssemblerCodeRef::retagged const): (JSC::MacroAssemblerCodeRef::tryToDisassemble const): (JSC::MacroAssemblerCodeRef::disassembly const): (JSC::MacroAssemblerCodeRef::dump const): (JSC::FunctionPtr<tag>::FunctionPtr): * assembler/MacroAssemblerMIPS.h: (JSC::MacroAssemblerMIPS::readCallTarget): (JSC::MacroAssemblerMIPS::replaceWithJump): (JSC::MacroAssemblerMIPS::startOfPatchableBranch32WithPatchOnAddress): (JSC::MacroAssemblerMIPS::startOfBranchPtrWithPatchOnRegister): (JSC::MacroAssemblerMIPS::revertJumpReplacementToBranchPtrWithPatch): (JSC::MacroAssemblerMIPS::startOfPatchableBranchPtrWithPatchOnAddress): (JSC::MacroAssemblerMIPS::revertJumpReplacementToPatchableBranch32WithPatch): (JSC::MacroAssemblerMIPS::revertJumpReplacementToPatchableBranchPtrWithPatch): (JSC::MacroAssemblerMIPS::repatchCall): (JSC::MacroAssemblerMIPS::linkCall): * assembler/MacroAssemblerX86.h: (JSC::MacroAssemblerX86::readCallTarget): (JSC::MacroAssemblerX86::startOfBranchPtrWithPatchOnRegister): (JSC::MacroAssemblerX86::startOfPatchableBranchPtrWithPatchOnAddress): (JSC::MacroAssemblerX86::startOfPatchableBranch32WithPatchOnAddress): (JSC::MacroAssemblerX86::revertJumpReplacementToBranchPtrWithPatch): (JSC::MacroAssemblerX86::revertJumpReplacementToPatchableBranchPtrWithPatch): (JSC::MacroAssemblerX86::revertJumpReplacementToPatchableBranch32WithPatch): (JSC::MacroAssemblerX86::repatchCall): (JSC::MacroAssemblerX86::linkCall): * assembler/MacroAssemblerX86Common.h: (JSC::MacroAssemblerX86Common::repatchCompact): (JSC::MacroAssemblerX86Common::replaceWithVMHalt): (JSC::MacroAssemblerX86Common::replaceWithJump): * assembler/MacroAssemblerX86_64.h: (JSC::MacroAssemblerX86_64::readCallTarget): (JSC::MacroAssemblerX86_64::startOfBranchPtrWithPatchOnRegister): (JSC::MacroAssemblerX86_64::startOfBranch32WithPatchOnRegister): (JSC::MacroAssemblerX86_64::startOfPatchableBranchPtrWithPatchOnAddress): (JSC::MacroAssemblerX86_64::startOfPatchableBranch32WithPatchOnAddress): (JSC::MacroAssemblerX86_64::revertJumpReplacementToPatchableBranchPtrWithPatch): (JSC::MacroAssemblerX86_64::revertJumpReplacementToPatchableBranch32WithPatch): (JSC::MacroAssemblerX86_64::revertJumpReplacementToBranchPtrWithPatch): (JSC::MacroAssemblerX86_64::repatchCall): (JSC::MacroAssemblerX86_64::linkCall): * assembler/testmasm.cpp: (JSC::compile): (JSC::invoke): (JSC::testProbeModifiesProgramCounter): * b3/B3Compilation.cpp: (JSC::B3::Compilation::Compilation): * b3/B3Compilation.h: (JSC::B3::Compilation::code const): (JSC::B3::Compilation::codeRef const): * b3/B3Compile.cpp: (JSC::B3::compile): * b3/B3LowerMacros.cpp: * b3/air/AirDisassembler.cpp: (JSC::B3::Air::Disassembler::dump): * b3/air/testair.cpp: * b3/testb3.cpp: (JSC::B3::invoke): (JSC::B3::testInterpreter): (JSC::B3::testEntrySwitchSimple): (JSC::B3::testEntrySwitchNoEntrySwitch): (JSC::B3::testEntrySwitchWithCommonPaths): (JSC::B3::testEntrySwitchWithCommonPathsAndNonTrivialEntrypoint): (JSC::B3::testEntrySwitchLoop): * bytecode/AccessCase.cpp: (JSC::AccessCase::generateImpl): * bytecode/AccessCaseSnippetParams.cpp: (JSC::SlowPathCallGeneratorWithArguments::generateImpl): * bytecode/ByValInfo.h: (JSC::ByValInfo::ByValInfo): * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::callReturnLocation): (JSC::CallLinkInfo::patchableJump): (JSC::CallLinkInfo::hotPathBegin): (JSC::CallLinkInfo::slowPathStart): * bytecode/CallLinkInfo.h: (JSC::CallLinkInfo::setCallLocations): (JSC::CallLinkInfo::hotPathOther): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::finishCreation): * bytecode/GetByIdStatus.cpp: (JSC::GetByIdStatus::computeForStubInfoWithoutExitSiteFeedback): * bytecode/GetByIdVariant.cpp: (JSC::GetByIdVariant::GetByIdVariant): (JSC::GetByIdVariant::dumpInContext const): * bytecode/GetByIdVariant.h: (JSC::GetByIdVariant::customAccessorGetter const): * bytecode/GetterSetterAccessCase.cpp: (JSC::GetterSetterAccessCase::create): (JSC::GetterSetterAccessCase::GetterSetterAccessCase): (JSC::GetterSetterAccessCase::dumpImpl const): * bytecode/GetterSetterAccessCase.h: (JSC::GetterSetterAccessCase::customAccessor const): (): Deleted. * bytecode/HandlerInfo.h: (JSC::HandlerInfo::initialize): * bytecode/InlineAccess.cpp: (JSC::linkCodeInline): (JSC::InlineAccess::rewireStubAsJump): * bytecode/InlineAccess.h: * bytecode/JumpTable.h: (JSC::StringJumpTable::ctiForValue): (JSC::SimpleJumpTable::ctiForValue): * bytecode/LLIntCallLinkInfo.h: (JSC::LLIntCallLinkInfo::unlink): * bytecode/PolymorphicAccess.cpp: (JSC::AccessGenerationState::emitExplicitExceptionHandler): (JSC::PolymorphicAccess::regenerate): * bytecode/PolymorphicAccess.h: (JSC::AccessGenerationResult::AccessGenerationResult): (JSC::AccessGenerationResult::code const): * bytecode/StructureStubInfo.h: (JSC::StructureStubInfo::slowPathCallLocation): (JSC::StructureStubInfo::doneLocation): (JSC::StructureStubInfo::slowPathStartLocation): (JSC::StructureStubInfo::patchableJumpForIn): * dfg/DFGCommonData.h: (JSC::DFG::CommonData::appendCatchEntrypoint): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::dumpDisassembly): * dfg/DFGDriver.h: * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::linkOSRExits): (JSC::DFG::JITCompiler::compileExceptionHandlers): (JSC::DFG::JITCompiler::link): (JSC::DFG::JITCompiler::compileFunction): (JSC::DFG::JITCompiler::noticeCatchEntrypoint): * dfg/DFGJITCompiler.h: (JSC::DFG::CallLinkRecord::CallLinkRecord): (JSC::DFG::JITCompiler::appendCall): (JSC::DFG::JITCompiler::JSCallRecord::JSCallRecord): (JSC::DFG::JITCompiler::JSDirectCallRecord::JSDirectCallRecord): (JSC::DFG::JITCompiler::JSDirectTailCallRecord::JSDirectTailCallRecord): * dfg/DFGJITFinalizer.cpp: (JSC::DFG::JITFinalizer::JITFinalizer): (JSC::DFG::JITFinalizer::finalize): (JSC::DFG::JITFinalizer::finalizeFunction): * dfg/DFGJITFinalizer.h: * dfg/DFGJumpReplacement.h: (JSC::DFG::JumpReplacement::JumpReplacement): * dfg/DFGNode.h: * dfg/DFGOSREntry.cpp: (JSC::DFG::prepareOSREntry): (JSC::DFG::prepareCatchOSREntry): * dfg/DFGOSREntry.h: (JSC::DFG::prepareOSREntry): * dfg/DFGOSRExit.cpp: (JSC::DFG::OSRExit::executeOSRExit): (JSC::DFG::reifyInlinedCallFrames): (JSC::DFG::adjustAndJumpToTarget): (JSC::DFG::OSRExit::codeLocationForRepatch const): (JSC::DFG::OSRExit::emitRestoreArguments): (JSC::DFG::OSRExit::compileOSRExit): * dfg/DFGOSRExit.h: * dfg/DFGOSRExitCompilerCommon.cpp: (JSC::DFG::handleExitCounts): (JSC::DFG::reifyInlinedCallFrames): (JSC::DFG::osrWriteBarrier): (JSC::DFG::adjustAndJumpToTarget): * dfg/DFGOperations.cpp: * dfg/DFGSlowPathGenerator.h: (JSC::DFG::CallResultAndArgumentsSlowPathGenerator::CallResultAndArgumentsSlowPathGenerator): (JSC::DFG::CallResultAndArgumentsSlowPathGenerator::unpackAndGenerate): (JSC::DFG::slowPathCall): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileMathIC): (JSC::DFG::SpeculativeJIT::compileCallDOM): (JSC::DFG::SpeculativeJIT::compileCallDOMGetter): (JSC::DFG::SpeculativeJIT::emitSwitchIntJump): (JSC::DFG::SpeculativeJIT::emitSwitchImm): (JSC::DFG::SpeculativeJIT::emitSwitchStringOnString): (JSC::DFG::SpeculativeJIT::compileHasIndexedProperty): (JSC::DFG::SpeculativeJIT::compileGetDirectPname): (JSC::DFG::SpeculativeJIT::cachedPutById): * dfg/DFGSpeculativeJIT.h: (JSC::DFG::SpeculativeJIT::callOperation): (JSC::DFG::SpeculativeJIT::appendCall): (JSC::DFG::SpeculativeJIT::appendCallWithCallFrameRollbackOnException): (JSC::DFG::SpeculativeJIT::appendCallWithCallFrameRollbackOnExceptionSetResult): (JSC::DFG::SpeculativeJIT::appendCallSetResult): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::cachedGetById): (JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGThunks.cpp: (JSC::DFG::osrExitThunkGenerator): (JSC::DFG::osrExitGenerationThunkGenerator): (JSC::DFG::osrEntryThunkGenerator): * dfg/DFGThunks.h: * disassembler/ARM64Disassembler.cpp: (JSC::tryToDisassemble): * disassembler/ARMv7Disassembler.cpp: (JSC::tryToDisassemble): * disassembler/Disassembler.cpp: (JSC::disassemble): (JSC::disassembleAsynchronously): * disassembler/Disassembler.h: (JSC::tryToDisassemble): * disassembler/UDis86Disassembler.cpp: (JSC::tryToDisassembleWithUDis86): * disassembler/UDis86Disassembler.h: (JSC::tryToDisassembleWithUDis86): * disassembler/X86Disassembler.cpp: (JSC::tryToDisassemble): * ftl/FTLCompile.cpp: (JSC::FTL::compile): * ftl/FTLExceptionTarget.cpp: (JSC::FTL::ExceptionTarget::label): (JSC::FTL::ExceptionTarget::jumps): * ftl/FTLExceptionTarget.h: * ftl/FTLGeneratedFunction.h: * ftl/FTLJITCode.cpp: (JSC::FTL::JITCode::initializeB3Code): (JSC::FTL::JITCode::initializeAddressForCall): (JSC::FTL::JITCode::initializeArityCheckEntrypoint): (JSC::FTL::JITCode::addressForCall): (JSC::FTL::JITCode::executableAddressAtOffset): * ftl/FTLJITCode.h: (JSC::FTL::JITCode::b3Code const): * ftl/FTLJITFinalizer.cpp: (JSC::FTL::JITFinalizer::finalizeCommon): * ftl/FTLLazySlowPath.cpp: (JSC::FTL::LazySlowPath::initialize): (JSC::FTL::LazySlowPath::generate): * ftl/FTLLazySlowPath.h: (JSC::FTL::LazySlowPath::patchableJump const): (JSC::FTL::LazySlowPath::done const): (JSC::FTL::LazySlowPath::stub const): * ftl/FTLLazySlowPathCall.h: (JSC::FTL::createLazyCallGenerator): * ftl/FTLLink.cpp: (JSC::FTL::link): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::lower): (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct): (JSC::FTL::DFG::LowerDFGToB3::compileDirectCallOrConstruct): (JSC::FTL::DFG::LowerDFGToB3::compileTailCall): (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread): (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs): (JSC::FTL::DFG::LowerDFGToB3::compileCallEval): (JSC::FTL::DFG::LowerDFGToB3::compileInvalidationPoint): (JSC::FTL::DFG::LowerDFGToB3::compileIn): (JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass): (JSC::FTL::DFG::LowerDFGToB3::compileCallDOM): (JSC::FTL::DFG::LowerDFGToB3::compileCallDOMGetter): (JSC::FTL::DFG::LowerDFGToB3::lazySlowPath): * ftl/FTLOSRExit.cpp: (JSC::FTL::OSRExit::codeLocationForRepatch const): * ftl/FTLOSRExit.h: * ftl/FTLOSRExitCompiler.cpp: (JSC::FTL::compileStub): (JSC::FTL::compileFTLOSRExit): * ftl/FTLOSRExitHandle.cpp: (JSC::FTL::OSRExitHandle::emitExitThunk): * ftl/FTLOperations.cpp: (JSC::FTL::compileFTLLazySlowPath): * ftl/FTLPatchpointExceptionHandle.cpp: (JSC::FTL::PatchpointExceptionHandle::scheduleExitCreationForUnwind): * ftl/FTLSlowPathCall.cpp: (JSC::FTL::SlowPathCallContext::keyWithTarget const): (JSC::FTL::SlowPathCallContext::makeCall): * ftl/FTLSlowPathCall.h: (JSC::FTL::callOperation): * ftl/FTLSlowPathCallKey.cpp: (JSC::FTL::SlowPathCallKey::dump const): * ftl/FTLSlowPathCallKey.h: (JSC::FTL::SlowPathCallKey::SlowPathCallKey): (JSC::FTL::SlowPathCallKey::callTarget const): (JSC::FTL::SlowPathCallKey::withCallTarget): (JSC::FTL::SlowPathCallKey::hash const): (JSC::FTL::SlowPathCallKey::callPtrTag const): Deleted. * ftl/FTLState.cpp: (JSC::FTL::State::State): * ftl/FTLThunks.cpp: (JSC::FTL::genericGenerationThunkGenerator): (JSC::FTL::osrExitGenerationThunkGenerator): (JSC::FTL::lazySlowPathGenerationThunkGenerator): (JSC::FTL::slowPathCallThunkGenerator): * ftl/FTLThunks.h: (JSC::FTL::generateIfNecessary): (JSC::FTL::keyForThunk): (JSC::FTL::Thunks::getSlowPathCallThunk): (JSC::FTL::Thunks::keyForSlowPathCallThunk): * interpreter/InterpreterInlines.h: (JSC::Interpreter::getOpcodeID): * jit/AssemblyHelpers.cpp: (JSC::AssemblyHelpers::callExceptionFuzz): (JSC::AssemblyHelpers::emitDumbVirtualCall): (JSC::AssemblyHelpers::debugCall): * jit/CCallHelpers.cpp: (JSC::CCallHelpers::ensureShadowChickenPacket): * jit/ExecutableAllocator.cpp: (JSC::FixedVMPoolExecutableAllocator::initializeSeparatedWXHeaps): (JSC::FixedVMPoolExecutableAllocator::jitWriteThunkGenerator): * jit/ExecutableAllocator.h: (JSC::performJITMemcpy): * jit/GCAwareJITStubRoutine.cpp: (JSC::GCAwareJITStubRoutine::GCAwareJITStubRoutine): (JSC::MarkingGCAwareJITStubRoutine::MarkingGCAwareJITStubRoutine): (JSC::GCAwareJITStubRoutineWithExceptionHandler::GCAwareJITStubRoutineWithExceptionHandler): (JSC::createJITStubRoutine): * jit/GCAwareJITStubRoutine.h: (JSC::createJITStubRoutine): * jit/JIT.cpp: (JSC::ctiPatchCallByReturnAddress): (JSC::JIT::compileWithoutLinking): (JSC::JIT::link): (JSC::JIT::privateCompileExceptionHandlers): * jit/JIT.h: (JSC::CallRecord::CallRecord): * jit/JITArithmetic.cpp: (JSC::JIT::emitMathICFast): (JSC::JIT::emitMathICSlow): * jit/JITCall.cpp: (JSC::JIT::compileOpCallSlowCase): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCallSlowCase): * jit/JITCode.cpp: (JSC::JITCodeWithCodeRef::JITCodeWithCodeRef): (JSC::JITCodeWithCodeRef::executableAddressAtOffset): (JSC::DirectJITCode::DirectJITCode): (JSC::DirectJITCode::initializeCodeRef): (JSC::DirectJITCode::addressForCall): (JSC::NativeJITCode::NativeJITCode): (JSC::NativeJITCode::initializeCodeRef): (JSC::NativeJITCode::addressForCall): * jit/JITCode.h: * jit/JITCodeMap.h: (JSC::JITCodeMap::Entry::Entry): (JSC::JITCodeMap::Entry::codeLocation): (JSC::JITCodeMap::append): (JSC::JITCodeMap::find const): * jit/JITDisassembler.cpp: (JSC::JITDisassembler::dumpDisassembly): * jit/JITExceptions.cpp: (JSC::genericUnwind): * jit/JITInlineCacheGenerator.cpp: (JSC::JITByIdGenerator::finalize): * jit/JITInlines.h: (JSC::JIT::emitNakedCall): (JSC::JIT::emitNakedTailCall): (JSC::JIT::appendCallWithExceptionCheck): (JSC::JIT::appendCallWithExceptionCheckAndSlowPathReturnType): (JSC::JIT::appendCallWithCallFrameRollbackOnException): (JSC::JIT::appendCallWithExceptionCheckSetJSValueResult): (JSC::JIT::appendCallWithExceptionCheckSetJSValueResultWithProfile): * jit/JITMathIC.h: (JSC::isProfileEmpty): * jit/JITOpcodes.cpp: (JSC::JIT::emit_op_catch): (JSC::JIT::emit_op_switch_imm): (JSC::JIT::emit_op_switch_char): (JSC::JIT::emit_op_switch_string): (JSC::JIT::privateCompileHasIndexedProperty): (JSC::JIT::emitSlow_op_has_indexed_property): * jit/JITOpcodes32_64.cpp: (JSC::JIT::privateCompileHasIndexedProperty): * jit/JITOperations.cpp: (JSC::getByVal): * jit/JITPropertyAccess.cpp: (JSC::JIT::stringGetByValStubGenerator): (JSC::JIT::emitGetByValWithCachedId): (JSC::JIT::emitSlow_op_get_by_val): (JSC::JIT::emitPutByValWithCachedId): (JSC::JIT::emitSlow_op_put_by_val): (JSC::JIT::emitSlow_op_try_get_by_id): (JSC::JIT::emitSlow_op_get_by_id_direct): (JSC::JIT::emitSlow_op_get_by_id): (JSC::JIT::emitSlow_op_get_by_id_with_this): (JSC::JIT::emitSlow_op_put_by_id): (JSC::JIT::privateCompileGetByVal): (JSC::JIT::privateCompileGetByValWithCachedId): (JSC::JIT::privateCompilePutByVal): (JSC::JIT::privateCompilePutByValWithCachedId): * jit/JITPropertyAccess32_64.cpp: (JSC::JIT::stringGetByValStubGenerator): (JSC::JIT::emitSlow_op_get_by_val): (JSC::JIT::emitSlow_op_put_by_val): * jit/JITStubRoutine.h: (JSC::JITStubRoutine::JITStubRoutine): (JSC::JITStubRoutine::createSelfManagedRoutine): (JSC::JITStubRoutine::code const): (JSC::JITStubRoutine::asCodePtr): * jit/JITThunks.cpp: (JSC::JITThunks::ctiNativeCall): (JSC::JITThunks::ctiNativeConstruct): (JSC::JITThunks::ctiNativeTailCall): (JSC::JITThunks::ctiNativeTailCallWithoutSavedTags): (JSC::JITThunks::ctiInternalFunctionCall): (JSC::JITThunks::ctiInternalFunctionConstruct): (JSC::JITThunks::ctiStub): (JSC::JITThunks::existingCTIStub): (JSC::JITThunks::hostFunctionStub): * jit/JITThunks.h: * jit/PCToCodeOriginMap.cpp: (JSC::PCToCodeOriginMap::PCToCodeOriginMap): * jit/PCToCodeOriginMap.h: * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): * jit/PolymorphicCallStubRoutine.h: * jit/Repatch.cpp: (JSC::readPutICCallTarget): (JSC::ftlThunkAwareRepatchCall): (JSC::appropriateOptimizingGetByIdFunction): (JSC::appropriateGetByIdFunction): (JSC::tryCacheGetByID): (JSC::repatchGetByID): (JSC::tryCachePutByID): (JSC::repatchPutByID): (JSC::tryCacheIn): (JSC::repatchIn): (JSC::linkSlowFor): (JSC::linkFor): (JSC::linkDirectFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::resetGetByID): (JSC::resetPutByID): * jit/Repatch.h: * jit/SlowPathCall.h: (JSC::JITSlowPathCall::call): * jit/SpecializedThunkJIT.h: (JSC::SpecializedThunkJIT::finalize): (JSC::SpecializedThunkJIT::callDoubleToDouble): (JSC::SpecializedThunkJIT::callDoubleToDoublePreservingReturn): * jit/ThunkGenerator.h: * jit/ThunkGenerators.cpp: (JSC::throwExceptionFromCallSlowPathGenerator): (JSC::slowPathFor): (JSC::linkCallThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::virtualThunkFor): (JSC::nativeForGenerator): (JSC::nativeCallGenerator): (JSC::nativeTailCallGenerator): (JSC::nativeTailCallWithoutSavedTagsGenerator): (JSC::nativeConstructGenerator): (JSC::internalFunctionCallGenerator): (JSC::internalFunctionConstructGenerator): (JSC::arityFixupGenerator): (JSC::unreachableGenerator): (JSC::charCodeAtThunkGenerator): (JSC::charAtThunkGenerator): (JSC::fromCharCodeThunkGenerator): (JSC::clz32ThunkGenerator): (JSC::sqrtThunkGenerator): (JSC::floorThunkGenerator): (JSC::ceilThunkGenerator): (JSC::truncThunkGenerator): (JSC::roundThunkGenerator): (JSC::expThunkGenerator): (JSC::logThunkGenerator): (JSC::absThunkGenerator): (JSC::imulThunkGenerator): (JSC::randomThunkGenerator): (JSC::boundThisNoArgsFunctionCallGenerator): * jit/ThunkGenerators.h: * llint/LLIntData.cpp: (JSC::LLInt::initialize): * llint/LLIntData.h: (JSC::LLInt::getExecutableAddress): (JSC::LLInt::getCodePtr): (JSC::LLInt::getCodeRef): (JSC::LLInt::getCodeFunctionPtr): * llint/LLIntEntrypoint.cpp: (JSC::LLInt::setFunctionEntrypoint): (JSC::LLInt::setEvalEntrypoint): (JSC::LLInt::setProgramEntrypoint): (JSC::LLInt::setModuleProgramEntrypoint): * llint/LLIntExceptions.cpp: (JSC::LLInt::callToThrow): * llint/LLIntSlowPaths.cpp: (JSC::LLInt::LLINT_SLOW_PATH_DECL): (JSC::LLInt::setUpCall): * llint/LLIntThunks.cpp: (JSC::vmEntryToWasm): (JSC::LLInt::generateThunkWithJumpTo): (JSC::LLInt::functionForCallEntryThunkGenerator): (JSC::LLInt::functionForConstructEntryThunkGenerator): (JSC::LLInt::functionForCallArityCheckThunkGenerator): (JSC::LLInt::functionForConstructArityCheckThunkGenerator): (JSC::LLInt::evalEntryThunkGenerator): (JSC::LLInt::programEntryThunkGenerator): (JSC::LLInt::moduleProgramEntryThunkGenerator): * llint/LLIntThunks.h: * llint/LowLevelInterpreter.asm: * llint/LowLevelInterpreter32_64.asm: * llint/LowLevelInterpreter64.asm: * profiler/ProfilerCompilation.cpp: (JSC::Profiler::Compilation::addOSRExitSite): * profiler/ProfilerCompilation.h: * profiler/ProfilerOSRExitSite.cpp: (JSC::Profiler::OSRExitSite::toJS const): * profiler/ProfilerOSRExitSite.h: (JSC::Profiler::OSRExitSite::OSRExitSite): (JSC::Profiler::OSRExitSite::codeAddress const): (JSC::Profiler::OSRExitSite:: const): Deleted. * runtime/ExecutableBase.cpp: (JSC::ExecutableBase::clearCode): * runtime/ExecutableBase.h: (JSC::ExecutableBase::entrypointFor): * runtime/NativeExecutable.cpp: (JSC::NativeExecutable::finishCreation): * runtime/NativeFunction.h: (JSC::TaggedNativeFunction::TaggedNativeFunction): (JSC::TaggedNativeFunction::operator NativeFunction): * runtime/PtrTag.h: (JSC::tagCodePtr): (JSC::untagCodePtr): (JSC::retagCodePtr): (JSC::tagCFunctionPtr): (JSC::untagCFunctionPtr): (JSC::nextPtrTagID): Deleted. * runtime/PutPropertySlot.h: (JSC::PutPropertySlot::PutPropertySlot): (JSC::PutPropertySlot::setCustomValue): (JSC::PutPropertySlot::setCustomAccessor): (JSC::PutPropertySlot::customSetter const): * runtime/ScriptExecutable.cpp: (JSC::ScriptExecutable::installCode): * runtime/VM.cpp: (JSC::VM::getHostFunction): (JSC::VM::getCTIInternalFunctionTrampolineFor): * runtime/VM.h: (JSC::VM::getCTIStub): * wasm/WasmB3IRGenerator.cpp: (JSC::Wasm::B3IRGenerator::B3IRGenerator): (JSC::Wasm::B3IRGenerator::emitExceptionCheck): (JSC::Wasm::B3IRGenerator::emitTierUpCheck): (JSC::Wasm::B3IRGenerator::addCall): (JSC::Wasm::B3IRGenerator::addCallIndirect): * wasm/WasmBBQPlan.cpp: (JSC::Wasm::BBQPlan::prepare): (JSC::Wasm::BBQPlan::complete): * wasm/WasmBBQPlan.h: * wasm/WasmBinding.cpp: (JSC::Wasm::wasmToWasm): * wasm/WasmBinding.h: * wasm/WasmCallee.h: (JSC::Wasm::Callee::entrypoint const): * wasm/WasmCallingConvention.h: (JSC::Wasm::CallingConvention::setupFrameInPrologue const): * wasm/WasmCodeBlock.h: (JSC::Wasm::CodeBlock::entrypointLoadLocationFromFunctionIndexSpace): * wasm/WasmFaultSignalHandler.cpp: (JSC::Wasm::trapHandler): * wasm/WasmFormat.h: * wasm/WasmInstance.h: * wasm/WasmOMGPlan.cpp: (JSC::Wasm::OMGPlan::work): * wasm/WasmThunks.cpp: (JSC::Wasm::throwExceptionFromWasmThunkGenerator): (JSC::Wasm::throwStackOverflowFromWasmThunkGenerator): (JSC::Wasm::triggerOMGTierUpThunkGenerator): (JSC::Wasm::Thunks::stub): (JSC::Wasm::Thunks::existingStub): * wasm/WasmThunks.h: * wasm/js/JSToWasm.cpp: (JSC::Wasm::createJSToWasmWrapper): * wasm/js/JSWebAssemblyCodeBlock.h: * wasm/js/WasmToJS.cpp: (JSC::Wasm::handleBadI64Use): (JSC::Wasm::wasmToJS): * wasm/js/WasmToJS.h: * wasm/js/WebAssemblyFunction.h: * yarr/YarrJIT.cpp: (JSC::Yarr::YarrGenerator::loadFromFrameAndJump): (JSC::Yarr::YarrGenerator::BacktrackingState::linkDataLabels): (JSC::Yarr::YarrGenerator::compile): * yarr/YarrJIT.h: (JSC::Yarr::YarrCodeBlock::set8BitCode): (JSC::Yarr::YarrCodeBlock::set16BitCode): (JSC::Yarr::YarrCodeBlock::set8BitCodeMatchOnly): (JSC::Yarr::YarrCodeBlock::set16BitCodeMatchOnly): (JSC::Yarr::YarrCodeBlock::execute): (JSC::Yarr::YarrCodeBlock::clear): Source/WebCore: No new tests. This is covered by existing tests. * WebCore.xcodeproj/project.pbxproj: * css/ElementRuleCollector.cpp: (WebCore::ElementRuleCollector::ruleMatches): * cssjit/CSSPtrTag.h: Added. * cssjit/CompiledSelector.h: * cssjit/FunctionCall.h: (WebCore::FunctionCall::FunctionCall): (WebCore::FunctionCall::setFunctionAddress): (WebCore::FunctionCall::prepareAndCall): * cssjit/SelectorCompiler.cpp: (WebCore::SelectorCompiler::compileSelector): (WebCore::SelectorCompiler::SelectorFragment::appendUnoptimizedPseudoClassWithContext): (WebCore::SelectorCompiler::addPseudoClassType): (WebCore::SelectorCompiler::SelectorCodeGenerator::compile): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeFunctionCallValueMatching): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementFunctionCallTest): (WebCore::SelectorCompiler::SelectorCodeGenerator::generateContextFunctionCallTest): * cssjit/SelectorCompiler.h: (WebCore::SelectorCompiler::ruleCollectorSimpleSelectorCheckerFunction): (WebCore::SelectorCompiler::querySelectorSimpleSelectorCheckerFunction): (WebCore::SelectorCompiler::ruleCollectorSelectorCheckerFunctionWithCheckingContext): (WebCore::SelectorCompiler::querySelectorSelectorCheckerFunctionWithCheckingContext): * dom/SelectorQuery.cpp: (WebCore::SelectorDataList::executeCompiledSingleMultiSelectorData const): (WebCore::SelectorDataList::execute const): * dom/SelectorQuery.h: Canonical link: https://commits.webkit.org/200234@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230748 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-04-18 03:31:09 +00:00
const MacroAssemblerCodeRef<JITStubRoutinePtrTag>&, VM&, const JSCell* owner,
[JSC] Thread JSGlobalObject* instead of ExecState* https://bugs.webkit.org/show_bug.cgi?id=202392 Reviewed by Geoffrey Garen. LayoutTests/imported/w3c: * web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-other-document-expected.txt: Source/JavaScriptCore: This patch replaces JSC's convention entirely: instead of passing ExecState*, we pass lexical JSGlobalObject*. We have many issues historically. 1. We have a hack like global-exec, since many runtime functions take ExecState* while valid ExecState* is populated only after executing some JS function. 2. We pass ExecState* without considering whether this is correct one when inlining a function. If inlined function has different realm, `exec->lexicalGlobalObject()` just returns wrong JSGlobalObject*. This patch attempts to remove these issues entirely by passing JSGlobalObject* instead of ExecState*. 1. We change ExecState* to JSGlobalObject*. 2. JIT operations should take JSGlobalObject* instead of ExecState* to reflect the inlinee's JSGlobalObject* correctly. 3. We get CallFrame* by using `__builtin_frame_address(1)` in JIT operations. When it is not available, we put CallFrame* to `vm.topCallFrame` in the caller side and load it from VM. 4. We remove ExecState*. All the actual call-frame is called `CallFrame*`. CallFrame* is passed only when CallFrame* is actually needed: accessing arguments, OSR etc. 5. LLInt and Baseline slow paths are just getting CallFrame*. It gets CodeBlock from CallFrame* and getting VM& and JSGlobalObject* from it since they do not have inlining. 6. We basically removed `VM::vmEntryGlobalObject`. It returns JSGlobalObject* from VMEntryScope. APIs and Completion.cpp use this but they are wrong. And by using lexical JSGlobalObject*, we fixed WPT issues. 7. This patch does not fix complicated JSGlobalObject* issues. But we put FIXME if it seems wrong and it needs to be revisited. 8. FunctionConstructor, ArrayConstructor etc. are exposed from JSGlobalObject to use it for InternalFunction::createStructure() without using `CallFrame*`. * API/APICallbackFunction.h: (JSC::APICallbackFunction::call): (JSC::APICallbackFunction::construct): * API/APICast.h: (toJS): (toJSGlobalObject): (toJSForGC): (toRef): (toGlobalRef): * API/APIUtils.h: (handleExceptionIfNeeded): (setException): * API/JSAPIGlobalObject.h: * API/JSAPIGlobalObject.mm: (JSC::JSAPIGlobalObject::moduleLoaderResolve): (JSC::JSAPIGlobalObject::moduleLoaderImportModule): (JSC::JSAPIGlobalObject::moduleLoaderFetch): (JSC::JSAPIGlobalObject::moduleLoaderCreateImportMetaProperties): (JSC::JSAPIGlobalObject::moduleLoaderEvaluate): (JSC::JSAPIGlobalObject::loadAndEvaluateJSScriptModule): * API/JSAPIValueWrapper.h: * API/JSBase.cpp: (JSEvaluateScriptInternal): (JSEvaluateScript): (JSCheckScriptSyntax): (JSGarbageCollect): (JSReportExtraMemoryCost): (JSSynchronousGarbageCollectForDebugging): (JSSynchronousEdenCollectForDebugging): * API/JSBaseInternal.h: * API/JSCTestRunnerUtils.cpp: (JSC::failNextNewCodeBlock): (JSC::numberOfDFGCompiles): (JSC::setNeverInline): (JSC::setNeverOptimize): * API/JSCallbackConstructor.h: * API/JSCallbackObject.h: * API/JSCallbackObjectFunctions.h: (JSC::JSCallbackObject<Parent>::JSCallbackObject): (JSC::JSCallbackObject<Parent>::finishCreation): (JSC::JSCallbackObject<Parent>::init): (JSC::JSCallbackObject<Parent>::toStringName): (JSC::JSCallbackObject<Parent>::getOwnPropertySlot): (JSC::JSCallbackObject<Parent>::getOwnPropertySlotByIndex): (JSC::JSCallbackObject<Parent>::defaultValue): (JSC::JSCallbackObject<Parent>::put): (JSC::JSCallbackObject<Parent>::putByIndex): (JSC::JSCallbackObject<Parent>::deleteProperty): (JSC::JSCallbackObject<Parent>::deletePropertyByIndex): (JSC::JSCallbackObject<Parent>::construct): (JSC::JSCallbackObject<Parent>::customHasInstance): (JSC::JSCallbackObject<Parent>::call): (JSC::JSCallbackObject<Parent>::getOwnNonIndexPropertyNames): (JSC::JSCallbackObject<Parent>::getStaticValue): (JSC::JSCallbackObject<Parent>::staticFunctionGetter): (JSC::JSCallbackObject<Parent>::callbackGetter): * API/JSClassRef.cpp: (OpaqueJSClass::contextData): (OpaqueJSClass::staticValues): (OpaqueJSClass::staticFunctions): (OpaqueJSClass::prototype): * API/JSClassRef.h: * API/JSContext.mm: (-[JSContext ensureWrapperMap]): (-[JSContext evaluateJSScript:]): (-[JSContext dependencyIdentifiersForModuleJSScript:]): (-[JSContext setException:]): (-[JSContext initWithGlobalContextRef:]): (-[JSContext wrapperMap]): * API/JSContextRef.cpp: (internalScriptTimeoutCallback): (JSGlobalContextCreateInGroup): (JSGlobalContextRetain): (JSGlobalContextRelease): (JSContextGetGlobalObject): (JSContextGetGroup): (JSContextGetGlobalContext): (JSGlobalContextCopyName): (JSGlobalContextSetName): (JSGlobalContextSetUnhandledRejectionCallback): (JSContextCreateBacktrace): (JSGlobalContextGetRemoteInspectionEnabled): (JSGlobalContextSetRemoteInspectionEnabled): (JSGlobalContextGetIncludesNativeCallStackWhenReportingExceptions): (JSGlobalContextSetIncludesNativeCallStackWhenReportingExceptions): (JSGlobalContextGetDebuggerRunLoop): (JSGlobalContextSetDebuggerRunLoop): (JSGlobalContextGetAugmentableInspectorController): * API/JSManagedValue.mm: (-[JSManagedValue initWithValue:]): (-[JSManagedValue value]): * API/JSObjectRef.cpp: (JSObjectMake): (JSObjectMakeFunctionWithCallback): (JSObjectMakeConstructor): (JSObjectMakeFunction): (JSObjectMakeArray): (JSObjectMakeDate): (JSObjectMakeError): (JSObjectMakeRegExp): (JSObjectMakeDeferredPromise): (JSObjectGetPrototype): (JSObjectSetPrototype): (JSObjectHasProperty): (JSObjectGetProperty): (JSObjectSetProperty): (JSObjectHasPropertyForKey): (JSObjectGetPropertyForKey): (JSObjectSetPropertyForKey): (JSObjectDeletePropertyForKey): (JSObjectGetPropertyAtIndex): (JSObjectSetPropertyAtIndex): (JSObjectDeleteProperty): (JSObjectGetPrivateProperty): (JSObjectSetPrivateProperty): (JSObjectDeletePrivateProperty): (JSObjectIsFunction): (JSObjectCallAsFunction): (JSObjectIsConstructor): (JSObjectCallAsConstructor): (JSObjectCopyPropertyNames): (JSObjectGetGlobalContext): * API/JSScriptRef.cpp: * API/JSTypedArray.cpp: (createTypedArray): (JSValueGetTypedArrayType): (JSObjectMakeTypedArray): (JSObjectMakeTypedArrayWithBytesNoCopy): (JSObjectMakeTypedArrayWithArrayBuffer): (JSObjectMakeTypedArrayWithArrayBufferAndOffset): (JSObjectGetTypedArrayBytesPtr): (JSObjectGetTypedArrayLength): (JSObjectGetTypedArrayByteLength): (JSObjectGetTypedArrayByteOffset): (JSObjectGetTypedArrayBuffer): (JSObjectMakeArrayBufferWithBytesNoCopy): (JSObjectGetArrayBufferBytesPtr): (JSObjectGetArrayBufferByteLength): * API/JSValue.mm: (JSContainerConvertor::add): (reportExceptionToInspector): (valueToObjectWithoutCopy): (ObjcContainerConvertor::add): * API/JSValueRef.cpp: (JSValueGetType): (JSValueIsUndefined): (JSValueIsNull): (JSValueIsBoolean): (JSValueIsNumber): (JSValueIsString): (JSValueIsObject): (JSValueIsSymbol): (JSValueIsArray): (JSValueIsDate): (JSValueIsObjectOfClass): (JSValueIsEqual): (JSValueIsStrictEqual): (JSValueIsInstanceOfConstructor): (JSValueMakeUndefined): (JSValueMakeNull): (JSValueMakeBoolean): (JSValueMakeNumber): (JSValueMakeSymbol): (JSValueMakeString): (JSValueMakeFromJSONString): (JSValueCreateJSONString): (JSValueToBoolean): (JSValueToNumber): (JSValueToStringCopy): (JSValueToObject): (JSValueProtect): (JSValueUnprotect): * API/JSWeakObjectMapRefPrivate.cpp: * API/JSWrapperMap.mm: (constructorHasInstance): (makeWrapper): (putNonEnumerable): (copyMethodsToObject): (-[JSObjCClassInfo wrapperForObject:inContext:]): (-[JSObjCClassInfo structureInContext:]): * API/ObjCCallbackFunction.mm: (JSC::objCCallbackFunctionCallAsFunction): (JSC::objCCallbackFunctionCallAsConstructor): (objCCallbackFunctionForInvocation): * API/glib/JSCCallbackFunction.cpp: (JSC::JSCCallbackFunction::call): (JSC::JSCCallbackFunction::construct): * API/glib/JSCClass.cpp: (isWrappedObject): (jscContextForObject): (jscClassCreateConstructor): (jscClassAddMethod): * API/glib/JSCContext.cpp: (jsc_context_evaluate_in_object): (jsc_context_check_syntax): * API/glib/JSCException.cpp: (jscExceptionCreate): * API/glib/JSCValue.cpp: (jsc_value_object_define_property_data): (jsc_value_object_define_property_accessor): (jscValueFunctionCreate): * API/glib/JSCWeakValue.cpp: (jscWeakValueInitialize): (jsc_weak_value_get_value): * API/glib/JSCWrapperMap.cpp: (JSC::WrapperMap::createJSWrappper): (JSC::WrapperMap::createContextWithJSWrappper): * API/tests/JSONParseTest.cpp: (testJSONParse): * API/tests/JSObjectGetProxyTargetTest.cpp: (testJSObjectGetProxyTarget): * API/tests/JSWrapperMapTests.mm: (+[JSWrapperMapTests testStructureIdentity]): * API/tests/testapi.cpp: (APIContext::APIContext): (APIContext::operator JSC::JSGlobalObject*): (APIContext::operator JSC::ExecState*): Deleted. * CMakeLists.txt: * JavaScriptCore.xcodeproj/project.pbxproj: * bindings/ScriptFunctionCall.cpp: (Deprecated::ScriptCallArgumentHandler::appendArgument): (Deprecated::ScriptFunctionCall::ScriptFunctionCall): (Deprecated::ScriptFunctionCall::call): * bindings/ScriptFunctionCall.h: * bindings/ScriptObject.cpp: (Deprecated::ScriptObject::ScriptObject): * bindings/ScriptObject.h: (Deprecated::ScriptObject::globalObject const): (Deprecated::ScriptObject::scriptState const): Deleted. * bindings/ScriptValue.cpp: (Inspector::jsToInspectorValue): (Inspector::toInspectorValue): * bindings/ScriptValue.h: * bytecode/AccessCase.cpp: (JSC::AccessCase::generateImpl): * bytecode/AccessCaseSnippetParams.cpp: (JSC::SlowPathCallGeneratorWithArguments::generateImpl): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::finishCreation): (JSC::CodeBlock::setConstantIdentifierSetRegisters): (JSC::CodeBlock::setConstantRegisters): (JSC::CodeBlock::linkIncomingCall): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CallFrame::r): (JSC::CallFrame::uncheckedR): (JSC::ExecState::r): Deleted. (JSC::ExecState::uncheckedR): Deleted. * bytecode/DirectEvalCodeCache.cpp: (JSC::DirectEvalCodeCache::setSlow): * bytecode/DirectEvalCodeCache.h: (JSC::DirectEvalCodeCache::set): * bytecode/InlineCallFrame.cpp: (JSC::InlineCallFrame::calleeForCallFrame const): * bytecode/InlineCallFrame.h: * bytecode/InternalFunctionAllocationProfile.h: (JSC::InternalFunctionAllocationProfile::createAllocationStructureFromBase): * bytecode/ObjectPropertyConditionSet.cpp: (JSC::generateConditionsForPropertyMiss): (JSC::generateConditionsForPropertySetterMiss): (JSC::generateConditionsForPrototypePropertyHit): (JSC::generateConditionsForPrototypePropertyHitCustom): (JSC::generateConditionsForInstanceOf): * bytecode/ObjectPropertyConditionSet.h: * bytecode/PolymorphicAccess.cpp: (JSC::AccessGenerationState::emitExplicitExceptionHandler): * bytecode/StructureStubInfo.h: (JSC::appropriateGenericGetByIdFunction): * bytecode/UnlinkedFunctionExecutable.cpp: (JSC::UnlinkedFunctionExecutable::fromGlobalCode): * bytecode/UnlinkedFunctionExecutable.h: * bytecode/ValueRecovery.cpp: (JSC::ValueRecovery::recover const): * bytecode/ValueRecovery.h: * debugger/Debugger.cpp: (JSC::Debugger::attach): (JSC::Debugger::hasBreakpoint): (JSC::Debugger::breakProgram): (JSC::lexicalGlobalObjectForCallFrame): (JSC::Debugger::updateCallFrame): (JSC::Debugger::pauseIfNeeded): (JSC::Debugger::exception): (JSC::Debugger::atStatement): (JSC::Debugger::atExpression): (JSC::Debugger::callEvent): (JSC::Debugger::returnEvent): (JSC::Debugger::unwindEvent): (JSC::Debugger::willExecuteProgram): (JSC::Debugger::didExecuteProgram): (JSC::Debugger::didReachBreakpoint): * debugger/Debugger.h: * debugger/DebuggerCallFrame.cpp: (JSC::DebuggerCallFrame::create): (JSC::DebuggerCallFrame::globalObject): (JSC::DebuggerCallFrame::deprecatedVMEntryGlobalObject const): (JSC::DebuggerCallFrame::thisValue const): (JSC::DebuggerCallFrame::evaluateWithScopeExtension): (JSC::DebuggerCallFrame::sourceIDForCallFrame): (JSC::DebuggerCallFrame::globalExec): Deleted. (JSC::DebuggerCallFrame::vmEntryGlobalObject const): Deleted. * debugger/DebuggerCallFrame.h: * debugger/DebuggerEvalEnabler.h: (JSC::DebuggerEvalEnabler::DebuggerEvalEnabler): (JSC::DebuggerEvalEnabler::~DebuggerEvalEnabler): * debugger/DebuggerScope.cpp: (JSC::DebuggerScope::toStringName): (JSC::DebuggerScope::getOwnPropertySlot): (JSC::DebuggerScope::put): (JSC::DebuggerScope::deleteProperty): (JSC::DebuggerScope::getOwnPropertyNames): (JSC::DebuggerScope::defineOwnProperty): (JSC::DebuggerScope::caughtValue const): * debugger/DebuggerScope.h: * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::booleanResult): (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGArithMode.h: * dfg/DFGArrayifySlowPathGenerator.h: * dfg/DFGCallArrayAllocatorSlowPathGenerator.h: (JSC::DFG::CallArrayAllocatorSlowPathGenerator::CallArrayAllocatorSlowPathGenerator): (JSC::DFG::CallArrayAllocatorWithVariableSizeSlowPathGenerator::CallArrayAllocatorWithVariableSizeSlowPathGenerator): (JSC::DFG::CallArrayAllocatorWithVariableStructureVariableSizeSlowPathGenerator::CallArrayAllocatorWithVariableStructureVariableSizeSlowPathGenerator): * dfg/DFGCallCreateDirectArgumentsSlowPathGenerator.h: * dfg/DFGGraph.h: (JSC::DFG::Graph::globalThisObjectFor): * dfg/DFGJITCode.cpp: (JSC::DFG::JITCode::reconstruct): * dfg/DFGJITCode.h: * dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::compileExceptionHandlers): (JSC::DFG::JITCompiler::compileFunction): * dfg/DFGOSREntry.cpp: (JSC::DFG::prepareOSREntry): (JSC::DFG::prepareCatchOSREntry): * dfg/DFGOSREntry.h: (JSC::DFG::prepareOSREntry): * dfg/DFGOSRExit.cpp: (JSC::DFG::createClonedArgumentsDuringExit): (JSC::DFG::OSRExit::executeOSRExit): (JSC::DFG::adjustAndJumpToTarget): (JSC::DFG::printOSRExit): (JSC::DFG::OSRExit::emitRestoreArguments): (JSC::DFG::OSRExit::compileOSRExit): (JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure): * dfg/DFGOSRExit.h: * dfg/DFGOSRExitCompilerCommon.cpp: (JSC::DFG::osrWriteBarrier): (JSC::DFG::adjustAndJumpToTarget): * dfg/DFGOperations.cpp: (JSC::DFG::putByVal): (JSC::DFG::putByValInternal): (JSC::DFG::putByValCellInternal): (JSC::DFG::putByValCellStringInternal): (JSC::DFG::newTypedArrayWithSize): (JSC::DFG::putWithThis): (JSC::DFG::binaryOp): (JSC::DFG::bitwiseBinaryOp): (JSC::DFG::getByValObject): * dfg/DFGOperations.h: * dfg/DFGSaneStringGetByValSlowPathGenerator.h: (JSC::DFG::SaneStringGetByValSlowPathGenerator::SaneStringGetByValSlowPathGenerator): * dfg/DFGSpeculativeJIT.cpp: (JSC::DFG::SpeculativeJIT::compileInById): (JSC::DFG::SpeculativeJIT::compileInByVal): (JSC::DFG::SpeculativeJIT::compileDeleteById): (JSC::DFG::SpeculativeJIT::compileDeleteByVal): (JSC::DFG::SpeculativeJIT::compilePushWithScope): (JSC::DFG::SpeculativeJIT::compileStringSlice): (JSC::DFG::SpeculativeJIT::compileToLowerCase): (JSC::DFG::SpeculativeJIT::compileCheckTraps): (JSC::DFG::SpeculativeJIT::compileDoublePutByVal): (JSC::DFG::SpeculativeJIT::compileGetByValOnString): (JSC::DFG::SpeculativeJIT::compileFromCharCode): (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray): (JSC::DFG::SpeculativeJIT::compileGetByValForObjectWithString): (JSC::DFG::SpeculativeJIT::compileGetByValForObjectWithSymbol): (JSC::DFG::SpeculativeJIT::compilePutByValForCellWithString): (JSC::DFG::SpeculativeJIT::compilePutByValForCellWithSymbol): (JSC::DFG::SpeculativeJIT::compileGetByValWithThis): (JSC::DFG::SpeculativeJIT::compileParseInt): (JSC::DFG::SpeculativeJIT::compileInstanceOfForCells): (JSC::DFG::SpeculativeJIT::compileValueBitNot): (JSC::DFG::SpeculativeJIT::emitUntypedBitOp): (JSC::DFG::SpeculativeJIT::compileValueBitwiseOp): (JSC::DFG::SpeculativeJIT::emitUntypedRightShiftBitOp): (JSC::DFG::SpeculativeJIT::compileValueLShiftOp): (JSC::DFG::SpeculativeJIT::compileValueBitRShift): (JSC::DFG::SpeculativeJIT::compileValueAdd): (JSC::DFG::SpeculativeJIT::compileValueSub): (JSC::DFG::SpeculativeJIT::compileMathIC): (JSC::DFG::SpeculativeJIT::compileInstanceOfCustom): (JSC::DFG::SpeculativeJIT::compileToObjectOrCallObjectConstructor): (JSC::DFG::SpeculativeJIT::compileArithAbs): (JSC::DFG::SpeculativeJIT::compileArithClz32): (JSC::DFG::SpeculativeJIT::compileArithDoubleUnaryOp): (JSC::DFG::SpeculativeJIT::compileValueMul): (JSC::DFG::SpeculativeJIT::compileValueDiv): (JSC::DFG::SpeculativeJIT::compileArithFRound): (JSC::DFG::SpeculativeJIT::compileValueMod): (JSC::DFG::SpeculativeJIT::compileArithRounding): (JSC::DFG::SpeculativeJIT::compileArithSqrt): (JSC::DFG::SpeculativeJIT::compileValuePow): (JSC::DFG::SpeculativeJIT::compileStringEquality): (JSC::DFG::SpeculativeJIT::compileStringCompare): (JSC::DFG::SpeculativeJIT::compileSameValue): (JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage): (JSC::DFG::SpeculativeJIT::compileGetByValOnDirectArguments): (JSC::DFG::SpeculativeJIT::compileNewFunction): (JSC::DFG::SpeculativeJIT::compileSetFunctionName): (JSC::DFG::SpeculativeJIT::compileLoadVarargs): (JSC::DFG::SpeculativeJIT::compileCreateActivation): (JSC::DFG::SpeculativeJIT::compileCreateDirectArguments): (JSC::DFG::SpeculativeJIT::compileCreateScopedArguments): (JSC::DFG::SpeculativeJIT::compileCreateClonedArguments): (JSC::DFG::SpeculativeJIT::compileCreateRest): (JSC::DFG::SpeculativeJIT::compileSpread): (JSC::DFG::SpeculativeJIT::compileNewArray): (JSC::DFG::SpeculativeJIT::compileNewArrayWithSpread): (JSC::DFG::SpeculativeJIT::compileArraySlice): (JSC::DFG::SpeculativeJIT::compileArrayIndexOf): (JSC::DFG::SpeculativeJIT::compileArrayPush): (JSC::DFG::SpeculativeJIT::compileNotifyWrite): (JSC::DFG::SpeculativeJIT::compileAllocatePropertyStorage): (JSC::DFG::SpeculativeJIT::compileReallocatePropertyStorage): (JSC::DFG::SpeculativeJIT::compileCallDOM): (JSC::DFG::SpeculativeJIT::compileCallDOMGetter): (JSC::DFG::SpeculativeJIT::compileToStringOrCallStringConstructorOrStringValueOf): (JSC::DFG::SpeculativeJIT::compileNumberToStringWithValidRadixConstant): (JSC::DFG::SpeculativeJIT::compileNumberToStringWithRadix): (JSC::DFG::SpeculativeJIT::compileNewStringObject): (JSC::DFG::SpeculativeJIT::compileNewSymbol): (JSC::DFG::SpeculativeJIT::compileNewTypedArrayWithSize): (JSC::DFG::SpeculativeJIT::compileNewRegexp): (JSC::DFG::SpeculativeJIT::emitSwitchImm): (JSC::DFG::SpeculativeJIT::emitSwitchCharStringJump): (JSC::DFG::SpeculativeJIT::emitSwitchChar): (JSC::DFG::SpeculativeJIT::emitSwitchStringOnString): (JSC::DFG::SpeculativeJIT::emitSwitchString): (JSC::DFG::SpeculativeJIT::compileStoreBarrier): (JSC::DFG::SpeculativeJIT::compilePutAccessorById): (JSC::DFG::SpeculativeJIT::compilePutGetterSetterById): (JSC::DFG::SpeculativeJIT::compileResolveScope): (JSC::DFG::SpeculativeJIT::compileResolveScopeForHoistingFuncDeclInEval): (JSC::DFG::SpeculativeJIT::compileGetDynamicVar): (JSC::DFG::SpeculativeJIT::compilePutDynamicVar): (JSC::DFG::SpeculativeJIT::compilePutAccessorByVal): (JSC::DFG::SpeculativeJIT::compileStringReplace): (JSC::DFG::SpeculativeJIT::compileDefineDataProperty): (JSC::DFG::SpeculativeJIT::compileDefineAccessorProperty): (JSC::DFG::SpeculativeJIT::compileThrow): (JSC::DFG::SpeculativeJIT::compileThrowStaticError): (JSC::DFG::SpeculativeJIT::compileHasGenericProperty): (JSC::DFG::SpeculativeJIT::compileToIndexString): (JSC::DFG::SpeculativeJIT::compilePutByIdWithThis): (JSC::DFG::SpeculativeJIT::compileHasStructureProperty): (JSC::DFG::SpeculativeJIT::compileGetPropertyEnumerator): (JSC::DFG::SpeculativeJIT::compileStrCat): (JSC::DFG::SpeculativeJIT::compileNewArrayBuffer): (JSC::DFG::SpeculativeJIT::compileNewArrayWithSize): (JSC::DFG::SpeculativeJIT::compileNewTypedArray): (JSC::DFG::SpeculativeJIT::compileToThis): (JSC::DFG::SpeculativeJIT::compileObjectKeys): (JSC::DFG::SpeculativeJIT::compileObjectCreate): (JSC::DFG::SpeculativeJIT::compileCreateThis): (JSC::DFG::SpeculativeJIT::compileCreatePromise): (JSC::DFG::SpeculativeJIT::compileCreateInternalFieldObject): (JSC::DFG::SpeculativeJIT::compileNewObject): (JSC::DFG::SpeculativeJIT::compileNewPromise): (JSC::DFG::SpeculativeJIT::compileNewInternalFieldObject): (JSC::DFG::SpeculativeJIT::compileToPrimitive): (JSC::DFG::SpeculativeJIT::compileSetAdd): (JSC::DFG::SpeculativeJIT::compileMapSet): (JSC::DFG::SpeculativeJIT::compileWeakSetAdd): (JSC::DFG::SpeculativeJIT::compileWeakMapSet): (JSC::DFG::SpeculativeJIT::compileGetPrototypeOf): (JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize): (JSC::DFG::SpeculativeJIT::compileHasIndexedProperty): (JSC::DFG::SpeculativeJIT::compileGetDirectPname): (JSC::DFG::SpeculativeJIT::compileProfileType): (JSC::DFG::SpeculativeJIT::cachedPutById): (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare): (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch): (JSC::DFG::SpeculativeJIT::compileBigIntEquality): (JSC::DFG::SpeculativeJIT::compileMakeRope): * dfg/DFGSpeculativeJIT.h: (JSC::DFG::SpeculativeJIT::callOperationWithCallFrameRollbackOnException): (JSC::DFG::SpeculativeJIT::prepareForExternalCall): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::cachedGetById): (JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis): (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq): (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq): (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compileContiguousPutByVal): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::cachedGetById): (JSC::DFG::SpeculativeJIT::cachedGetByIdWithThis): (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeStrictEq): (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq): (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dynbench.cpp: (main): * ftl/FTLCompile.cpp: (JSC::FTL::compile): * ftl/FTLGeneratedFunction.h: * ftl/FTLLink.cpp: (JSC::FTL::link): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::lower): (JSC::FTL::DFG::LowerDFGToB3::compileToObjectOrCallObjectConstructor): (JSC::FTL::DFG::LowerDFGToB3::compileToThis): (JSC::FTL::DFG::LowerDFGToB3::compileValueAdd): (JSC::FTL::DFG::LowerDFGToB3::compileValueSub): (JSC::FTL::DFG::LowerDFGToB3::compileValueMul): (JSC::FTL::DFG::LowerDFGToB3::compileUnaryMathIC): (JSC::FTL::DFG::LowerDFGToB3::compileBinaryMathIC): (JSC::FTL::DFG::LowerDFGToB3::compileStrCat): (JSC::FTL::DFG::LowerDFGToB3::compileArithClz32): (JSC::FTL::DFG::LowerDFGToB3::compileValueDiv): (JSC::FTL::DFG::LowerDFGToB3::compileValueMod): (JSC::FTL::DFG::LowerDFGToB3::compileArithAbs): (JSC::FTL::DFG::LowerDFGToB3::compileArithUnary): (JSC::FTL::DFG::LowerDFGToB3::compileValuePow): (JSC::FTL::DFG::LowerDFGToB3::compileArithRound): (JSC::FTL::DFG::LowerDFGToB3::compileArithFloor): (JSC::FTL::DFG::LowerDFGToB3::compileArithCeil): (JSC::FTL::DFG::LowerDFGToB3::compileArithTrunc): (JSC::FTL::DFG::LowerDFGToB3::compileArithSqrt): (JSC::FTL::DFG::LowerDFGToB3::compileArithFRound): (JSC::FTL::DFG::LowerDFGToB3::compileValueBitNot): (JSC::FTL::DFG::LowerDFGToB3::compileValueBitAnd): (JSC::FTL::DFG::LowerDFGToB3::compileValueBitOr): (JSC::FTL::DFG::LowerDFGToB3::compileValueBitXor): (JSC::FTL::DFG::LowerDFGToB3::compileValueBitRShift): (JSC::FTL::DFG::LowerDFGToB3::compileValueBitLShift): (JSC::FTL::DFG::LowerDFGToB3::compileArrayify): (JSC::FTL::DFG::LowerDFGToB3::compileGetById): (JSC::FTL::DFG::LowerDFGToB3::compileGetByIdWithThis): (JSC::FTL::DFG::LowerDFGToB3::compileGetByValWithThis): (JSC::FTL::DFG::LowerDFGToB3::compilePutByIdWithThis): (JSC::FTL::DFG::LowerDFGToB3::compilePutByValWithThis): (JSC::FTL::DFG::LowerDFGToB3::compileAtomicsReadModifyWrite): (JSC::FTL::DFG::LowerDFGToB3::compileAtomicsIsLockFree): (JSC::FTL::DFG::LowerDFGToB3::compileDefineDataProperty): (JSC::FTL::DFG::LowerDFGToB3::compileDefineAccessorProperty): (JSC::FTL::DFG::LowerDFGToB3::compilePutById): (JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage): (JSC::FTL::DFG::LowerDFGToB3::compileGetPrototypeOf): (JSC::FTL::DFG::LowerDFGToB3::compileGetByVal): (JSC::FTL::DFG::LowerDFGToB3::compilePutByVal): (JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorById): (JSC::FTL::DFG::LowerDFGToB3::compilePutGetterSetterById): (JSC::FTL::DFG::LowerDFGToB3::compilePutAccessorByVal): (JSC::FTL::DFG::LowerDFGToB3::compileDeleteById): (JSC::FTL::DFG::LowerDFGToB3::compileDeleteByVal): (JSC::FTL::DFG::LowerDFGToB3::compileArrayPush): (JSC::FTL::DFG::LowerDFGToB3::compileArrayIndexOf): (JSC::FTL::DFG::LowerDFGToB3::compileArrayPop): (JSC::FTL::DFG::LowerDFGToB3::compilePushWithScope): (JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation): (JSC::FTL::DFG::LowerDFGToB3::compileNewFunction): (JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments): (JSC::FTL::DFG::LowerDFGToB3::compileCreateScopedArguments): (JSC::FTL::DFG::LowerDFGToB3::compileCreateClonedArguments): (JSC::FTL::DFG::LowerDFGToB3::compileCreateRest): (JSC::FTL::DFG::LowerDFGToB3::compileObjectKeys): (JSC::FTL::DFG::LowerDFGToB3::compileObjectCreate): (JSC::FTL::DFG::LowerDFGToB3::compileNewPromise): (JSC::FTL::DFG::LowerDFGToB3::compileNewInternalFieldObject): (JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject): (JSC::FTL::DFG::LowerDFGToB3::compileNewSymbol): (JSC::FTL::DFG::LowerDFGToB3::compileNewArray): (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread): (JSC::FTL::DFG::LowerDFGToB3::compileCreateThis): (JSC::FTL::DFG::LowerDFGToB3::compileCreatePromise): (JSC::FTL::DFG::LowerDFGToB3::compileCreateInternalFieldObject): (JSC::FTL::DFG::LowerDFGToB3::compileSpread): (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayBuffer): (JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSize): (JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray): (JSC::FTL::DFG::LowerDFGToB3::compileToNumber): (JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructorOrStringValueOf): (JSC::FTL::DFG::LowerDFGToB3::compileToPrimitive): (JSC::FTL::DFG::LowerDFGToB3::compileMakeRope): (JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt): (JSC::FTL::DFG::LowerDFGToB3::compileStringFromCharCode): (JSC::FTL::DFG::LowerDFGToB3::compileNotifyWrite): (JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq): (JSC::FTL::DFG::LowerDFGToB3::compileSameValue): (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct): (JSC::FTL::DFG::LowerDFGToB3::compileTailCall): (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread): (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs): (JSC::FTL::DFG::LowerDFGToB3::compileCallEval): (JSC::FTL::DFG::LowerDFGToB3::compileLoadVarargs): (JSC::FTL::DFG::LowerDFGToB3::compileSwitch): (JSC::FTL::DFG::LowerDFGToB3::compileThrow): (JSC::FTL::DFG::LowerDFGToB3::compileThrowStaticError): (JSC::FTL::DFG::LowerDFGToB3::mapHashString): (JSC::FTL::DFG::LowerDFGToB3::compileMapHash): (JSC::FTL::DFG::LowerDFGToB3::compileGetMapBucket): (JSC::FTL::DFG::LowerDFGToB3::compileSetAdd): (JSC::FTL::DFG::LowerDFGToB3::compileMapSet): (JSC::FTL::DFG::LowerDFGToB3::compileWeakSetAdd): (JSC::FTL::DFG::LowerDFGToB3::compileWeakMapSet): (JSC::FTL::DFG::LowerDFGToB3::compileInByVal): (JSC::FTL::DFG::LowerDFGToB3::compileInById): (JSC::FTL::DFG::LowerDFGToB3::compileHasOwnProperty): (JSC::FTL::DFG::LowerDFGToB3::compileParseInt): (JSC::FTL::DFG::LowerDFGToB3::compileInstanceOf): (JSC::FTL::DFG::LowerDFGToB3::compileInstanceOfCustom): (JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty): (JSC::FTL::DFG::LowerDFGToB3::compileHasGenericProperty): (JSC::FTL::DFG::LowerDFGToB3::compileHasStructureProperty): (JSC::FTL::DFG::LowerDFGToB3::compileGetDirectPname): (JSC::FTL::DFG::LowerDFGToB3::compileGetPropertyEnumerator): (JSC::FTL::DFG::LowerDFGToB3::compileToIndexString): (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject): (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation): (JSC::FTL::DFG::LowerDFGToB3::compileCheckTraps): (JSC::FTL::DFG::LowerDFGToB3::compileRegExpExec): (JSC::FTL::DFG::LowerDFGToB3::compileRegExpExecNonGlobalOrSticky): (JSC::FTL::DFG::LowerDFGToB3::compileRegExpMatchFastGlobal): (JSC::FTL::DFG::LowerDFGToB3::compileRegExpTest): (JSC::FTL::DFG::LowerDFGToB3::compileRegExpMatchFast): (JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp): (JSC::FTL::DFG::LowerDFGToB3::compileSetFunctionName): (JSC::FTL::DFG::LowerDFGToB3::compileStringReplace): (JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage): (JSC::FTL::DFG::LowerDFGToB3::reallocatePropertyStorage): (JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorageWithSizeImpl): (JSC::FTL::DFG::LowerDFGToB3::getById): (JSC::FTL::DFG::LowerDFGToB3::getByIdWithThis): (JSC::FTL::DFG::LowerDFGToB3::compare): (JSC::FTL::DFG::LowerDFGToB3::compileStringSlice): (JSC::FTL::DFG::LowerDFGToB3::compileToLowerCase): (JSC::FTL::DFG::LowerDFGToB3::compileNumberToStringWithRadix): (JSC::FTL::DFG::LowerDFGToB3::compileNumberToStringWithValidRadixConstant): (JSC::FTL::DFG::LowerDFGToB3::compileResolveScopeForHoistingFuncDeclInEval): (JSC::FTL::DFG::LowerDFGToB3::compileResolveScope): (JSC::FTL::DFG::LowerDFGToB3::compileGetDynamicVar): (JSC::FTL::DFG::LowerDFGToB3::compilePutDynamicVar): (JSC::FTL::DFG::LowerDFGToB3::compileCallDOM): (JSC::FTL::DFG::LowerDFGToB3::compileCallDOMGetter): (JSC::FTL::DFG::LowerDFGToB3::nonSpeculativeCompare): (JSC::FTL::DFG::LowerDFGToB3::stringsEqual): (JSC::FTL::DFG::LowerDFGToB3::emitBinarySnippet): (JSC::FTL::DFG::LowerDFGToB3::emitBinaryBitOpSnippet): (JSC::FTL::DFG::LowerDFGToB3::emitRightShiftSnippet): (JSC::FTL::DFG::LowerDFGToB3::allocateObject): (JSC::FTL::DFG::LowerDFGToB3::allocateJSArray): (JSC::FTL::DFG::LowerDFGToB3::ensureShadowChickenPacket): (JSC::FTL::DFG::LowerDFGToB3::contiguousPutByValOutOfBounds): (JSC::FTL::DFG::LowerDFGToB3::switchStringSlow): (JSC::FTL::DFG::LowerDFGToB3::emitStoreBarrier): (JSC::FTL::DFG::LowerDFGToB3::callCheck): * ftl/FTLOSREntry.cpp: (JSC::FTL::prepareOSREntry): * ftl/FTLOSREntry.h: * ftl/FTLOSRExitCompiler.cpp: (JSC::FTL::compileStub): (JSC::FTL::compileFTLOSRExit): * ftl/FTLOSRExitCompiler.h: * ftl/FTLOperations.cpp: (JSC::FTL::operationPopulateObjectInOSR): (JSC::FTL::operationMaterializeObjectInOSR): (JSC::FTL::compileFTLLazySlowPath): * ftl/FTLOperations.h: * ftl/FTLSlowPathCall.h: (JSC::FTL::callOperation): * generator/Metadata.rb: * heap/Handle.h: * heap/HeapCell.h: * heap/HeapSnapshotBuilder.cpp: (JSC::HeapSnapshotBuilder::json): * inspector/ConsoleMessage.cpp: (Inspector::ConsoleMessage::ConsoleMessage): (Inspector::ConsoleMessage::autogenerateMetadata): (Inspector::ConsoleMessage::addToFrontend): (Inspector::ConsoleMessage::globalObject const): (Inspector::ConsoleMessage::scriptState const): Deleted. * inspector/ConsoleMessage.h: * inspector/InjectedScript.cpp: (Inspector::InjectedScript::wrapCallFrames const): (Inspector::InjectedScript::wrapObject const): (Inspector::InjectedScript::wrapJSONString const): (Inspector::InjectedScript::wrapTable const): (Inspector::InjectedScript::previewValue const): (Inspector::InjectedScript::arrayFromVector): * inspector/InjectedScriptBase.cpp: (Inspector::InjectedScriptBase::hasAccessToInspectedScriptState const): (Inspector::InjectedScriptBase::callFunctionWithEvalEnabled const): (Inspector::InjectedScriptBase::makeCall): (Inspector::InjectedScriptBase::makeAsyncCall): * inspector/InjectedScriptBase.h: * inspector/InjectedScriptHost.cpp: (Inspector::InjectedScriptHost::wrapper): * inspector/InjectedScriptHost.h: * inspector/InjectedScriptManager.cpp: (Inspector::InjectedScriptManager::injectedScriptIdFor): (Inspector::InjectedScriptManager::createInjectedScript): (Inspector::InjectedScriptManager::injectedScriptFor): * inspector/InjectedScriptManager.h: * inspector/InjectedScriptModule.cpp: (Inspector::InjectedScriptModule::ensureInjected): * inspector/InjectedScriptModule.h: * inspector/InspectorEnvironment.h: * inspector/JSGlobalObjectConsoleClient.cpp: (Inspector::JSGlobalObjectConsoleClient::messageWithTypeAndLevel): (Inspector::JSGlobalObjectConsoleClient::count): (Inspector::JSGlobalObjectConsoleClient::countReset): (Inspector::JSGlobalObjectConsoleClient::profile): (Inspector::JSGlobalObjectConsoleClient::profileEnd): (Inspector::JSGlobalObjectConsoleClient::takeHeapSnapshot): (Inspector::JSGlobalObjectConsoleClient::time): (Inspector::JSGlobalObjectConsoleClient::timeLog): (Inspector::JSGlobalObjectConsoleClient::timeEnd): (Inspector::JSGlobalObjectConsoleClient::timeStamp): (Inspector::JSGlobalObjectConsoleClient::record): (Inspector::JSGlobalObjectConsoleClient::recordEnd): (Inspector::JSGlobalObjectConsoleClient::screenshot): * inspector/JSGlobalObjectConsoleClient.h: * inspector/JSGlobalObjectInspectorController.cpp: (Inspector::JSGlobalObjectInspectorController::reportAPIException): * inspector/JSGlobalObjectInspectorController.h: * inspector/JSGlobalObjectScriptDebugServer.h: * inspector/JSInjectedScriptHost.cpp: (Inspector::JSInjectedScriptHost::evaluate const): (Inspector::JSInjectedScriptHost::savedResultAlias const): (Inspector::JSInjectedScriptHost::evaluateWithScopeExtension): (Inspector::JSInjectedScriptHost::internalConstructorName): (Inspector::JSInjectedScriptHost::isHTMLAllCollection): (Inspector::JSInjectedScriptHost::isPromiseRejectedWithNativeGetterTypeError): (Inspector::JSInjectedScriptHost::subtype): (Inspector::JSInjectedScriptHost::functionDetails): (Inspector::constructInternalProperty): (Inspector::JSInjectedScriptHost::getInternalProperties): (Inspector::JSInjectedScriptHost::proxyTargetValue): (Inspector::JSInjectedScriptHost::weakMapSize): (Inspector::JSInjectedScriptHost::weakMapEntries): (Inspector::JSInjectedScriptHost::weakSetSize): (Inspector::JSInjectedScriptHost::weakSetEntries): (Inspector::cloneArrayIteratorObject): (Inspector::cloneMapIteratorObject): (Inspector::cloneSetIteratorObject): (Inspector::JSInjectedScriptHost::iteratorEntries): (Inspector::checkForbiddenPrototype): (Inspector::JSInjectedScriptHost::queryInstances): (Inspector::JSInjectedScriptHost::queryHolders): * inspector/JSInjectedScriptHost.h: * inspector/JSInjectedScriptHostPrototype.cpp: (Inspector::jsInjectedScriptHostPrototypeAttributeEvaluate): (Inspector::jsInjectedScriptHostPrototypeAttributeSavedResultAlias): (Inspector::jsInjectedScriptHostPrototypeFunctionInternalConstructorName): (Inspector::jsInjectedScriptHostPrototypeFunctionIsHTMLAllCollection): (Inspector::jsInjectedScriptHostPrototypeFunctionIsPromiseRejectedWithNativeGetterTypeError): (Inspector::jsInjectedScriptHostPrototypeFunctionProxyTargetValue): (Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapSize): (Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapEntries): (Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetSize): (Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetEntries): (Inspector::jsInjectedScriptHostPrototypeFunctionIteratorEntries): (Inspector::jsInjectedScriptHostPrototypeFunctionQueryInstances): (Inspector::jsInjectedScriptHostPrototypeFunctionQueryHolders): (Inspector::jsInjectedScriptHostPrototypeFunctionEvaluateWithScopeExtension): (Inspector::jsInjectedScriptHostPrototypeFunctionSubtype): (Inspector::jsInjectedScriptHostPrototypeFunctionFunctionDetails): (Inspector::jsInjectedScriptHostPrototypeFunctionGetInternalProperties): * inspector/JSJavaScriptCallFrame.cpp: (Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension): (Inspector::valueForScopeLocation): (Inspector::JSJavaScriptCallFrame::scopeDescriptions): (Inspector::JSJavaScriptCallFrame::caller const): (Inspector::JSJavaScriptCallFrame::sourceID const): (Inspector::JSJavaScriptCallFrame::line const): (Inspector::JSJavaScriptCallFrame::column const): (Inspector::JSJavaScriptCallFrame::functionName const): (Inspector::JSJavaScriptCallFrame::scopeChain const): (Inspector::JSJavaScriptCallFrame::thisObject const): (Inspector::JSJavaScriptCallFrame::isTailDeleted const): (Inspector::JSJavaScriptCallFrame::type const): (Inspector::toJS): * inspector/JSJavaScriptCallFrame.h: * inspector/JSJavaScriptCallFramePrototype.cpp: (Inspector::jsJavaScriptCallFramePrototypeFunctionEvaluateWithScopeExtension): (Inspector::jsJavaScriptCallFramePrototypeFunctionScopeDescriptions): (Inspector::jsJavaScriptCallFrameAttributeCaller): (Inspector::jsJavaScriptCallFrameAttributeSourceID): (Inspector::jsJavaScriptCallFrameAttributeLine): (Inspector::jsJavaScriptCallFrameAttributeColumn): (Inspector::jsJavaScriptCallFrameAttributeFunctionName): (Inspector::jsJavaScriptCallFrameAttributeScopeChain): (Inspector::jsJavaScriptCallFrameAttributeThisObject): (Inspector::jsJavaScriptCallFrameAttributeType): (Inspector::jsJavaScriptCallFrameIsTailDeleted): * inspector/JavaScriptCallFrame.h: (Inspector::JavaScriptCallFrame::deprecatedVMEntryGlobalObject const): (Inspector::JavaScriptCallFrame::vmEntryGlobalObject const): Deleted. * inspector/ScriptArguments.cpp: (Inspector::ScriptArguments::create): (Inspector::ScriptArguments::ScriptArguments): (Inspector::ScriptArguments::globalObject const): (Inspector::ScriptArguments::getFirstArgumentAsString const): (Inspector::ScriptArguments::isEqual const): (Inspector::ScriptArguments::globalState const): Deleted. * inspector/ScriptArguments.h: * inspector/ScriptCallStackFactory.cpp: (Inspector::createScriptCallStack): (Inspector::createScriptCallStackForConsole): (Inspector::extractSourceInformationFromException): (Inspector::createScriptCallStackFromException): (Inspector::createScriptArguments): * inspector/ScriptCallStackFactory.h: * inspector/ScriptDebugListener.h: * inspector/ScriptDebugServer.cpp: (Inspector::ScriptDebugServer::evaluateBreakpointAction): (Inspector::ScriptDebugServer::sourceParsed): (Inspector::ScriptDebugServer::handleExceptionInBreakpointCondition const): (Inspector::ScriptDebugServer::handlePause): (Inspector::ScriptDebugServer::exceptionOrCaughtValue): * inspector/ScriptDebugServer.h: * inspector/agents/InspectorAuditAgent.cpp: (Inspector::InspectorAuditAgent::setup): (Inspector::InspectorAuditAgent::populateAuditObject): * inspector/agents/InspectorAuditAgent.h: * inspector/agents/InspectorConsoleAgent.cpp: (Inspector::InspectorConsoleAgent::startTiming): (Inspector::InspectorConsoleAgent::logTiming): (Inspector::InspectorConsoleAgent::stopTiming): (Inspector::InspectorConsoleAgent::count): (Inspector::InspectorConsoleAgent::countReset): * inspector/agents/InspectorConsoleAgent.h: * inspector/agents/InspectorDebuggerAgent.cpp: (Inspector::InspectorDebuggerAgent::didScheduleAsyncCall): (Inspector::InspectorDebuggerAgent::resume): (Inspector::InspectorDebuggerAgent::didPause): (Inspector::InspectorDebuggerAgent::breakpointActionProbe): (Inspector::InspectorDebuggerAgent::didContinue): (Inspector::InspectorDebuggerAgent::clearDebuggerBreakpointState): (Inspector::InspectorDebuggerAgent::assertPaused): * inspector/agents/InspectorDebuggerAgent.h: * inspector/agents/InspectorHeapAgent.cpp: (Inspector::InspectorHeapAgent::snapshot): (Inspector::InspectorHeapAgent::getPreview): (Inspector::InspectorHeapAgent::getRemoteObject): * inspector/agents/JSGlobalObjectAuditAgent.cpp: (Inspector::JSGlobalObjectAuditAgent::injectedScriptForEval): * inspector/agents/JSGlobalObjectDebuggerAgent.cpp: (Inspector::JSGlobalObjectDebuggerAgent::injectedScriptForEval): (Inspector::JSGlobalObjectDebuggerAgent::breakpointActionLog): * inspector/agents/JSGlobalObjectDebuggerAgent.h: * inspector/agents/JSGlobalObjectRuntimeAgent.cpp: (Inspector::JSGlobalObjectRuntimeAgent::injectedScriptForEval): * interpreter/AbstractPC.cpp: (JSC::AbstractPC::AbstractPC): * interpreter/AbstractPC.h: * interpreter/CachedCall.h: (JSC::CachedCall::CachedCall): * interpreter/CallFrame.cpp: (JSC::CallFrame::initDeprecatedCallFrameForDebugger): (JSC::CallFrame::wasmAwareLexicalGlobalObject): (JSC::CallFrame::convertToStackOverflowFrame): (JSC::ExecState::initGlobalExec): Deleted. * interpreter/CallFrame.h: (JSC::CallFrame::isDeprecatedCallFrameForDebugger const): (JSC::CallFrame::isGlobalExec const): Deleted. * interpreter/Interpreter.cpp: (JSC::eval): (JSC::sizeOfVarargs): (JSC::sizeFrameForForwardArguments): (JSC::sizeFrameForVarargs): (JSC::loadVarargs): (JSC::setupVarargsFrame): (JSC::setupVarargsFrameAndSetThis): (JSC::setupForwardArgumentsFrame): (JSC::setupForwardArgumentsFrameAndSetThis): (JSC::notifyDebuggerOfUnwinding): (JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown): (JSC::Interpreter::executeProgram): (JSC::Interpreter::executeCall): (JSC::Interpreter::executeConstruct): (JSC::Interpreter::execute): (JSC::Interpreter::executeModuleProgram): (JSC::Interpreter::debug): * interpreter/Interpreter.h: * interpreter/InterpreterInlines.h: (JSC::Interpreter::execute): * interpreter/Register.h: * interpreter/ShadowChicken.cpp: (JSC::ShadowChicken::log): (JSC::ShadowChicken::update): (JSC::ShadowChicken::functionsOnStack): * interpreter/ShadowChicken.h: * interpreter/ShadowChickenInlines.h: (JSC::ShadowChicken::iterate): * interpreter/StackVisitor.cpp: (JSC::StackVisitor::Frame::createArguments): * interpreter/StackVisitor.h: * jit/AssemblyHelpers.cpp: (JSC::AssemblyHelpers::emitDumbVirtualCall): * jit/AssemblyHelpers.h: * jit/CCallHelpers.cpp: (JSC::CCallHelpers::ensureShadowChickenPacket): * jit/CCallHelpers.h: (JSC::CCallHelpers::prepareCallOperation): (JSC::CCallHelpers::setupArguments): * jit/HostCallReturnValue.cpp: (JSC::getHostCallReturnValueWithExecState): * jit/HostCallReturnValue.h: (JSC::initializeHostCallReturnValue): * jit/JIT.cpp: (JSC::JIT::emitEnterOptimizationCheck): (JSC::JIT::compileWithoutLinking): (JSC::JIT::privateCompileExceptionHandlers): * jit/JIT.h: * jit/JITArithmetic.cpp: (JSC::JIT::emit_compareAndJumpSlow): (JSC::JIT::emitMathICFast): (JSC::JIT::emitMathICSlow): * jit/JITArithmetic32_64.cpp: (JSC::JIT::emit_compareAndJumpSlow): * jit/JITCall.cpp: (JSC::JIT::compileSetupFrame): (JSC::JIT::compileCallEval): (JSC::JIT::compileCallEvalSlowCase): (JSC::JIT::compileOpCallSlowCase): * jit/JITCall32_64.cpp: (JSC::JIT::compileCallEval): (JSC::JIT::compileCallEvalSlowCase): (JSC::JIT::compileOpCallSlowCase): * jit/JITExceptions.cpp: (JSC::genericUnwind): * jit/JITExceptions.h: * jit/JITOpcodes.cpp: (JSC::JIT::emitSlow_op_new_object): (JSC::JIT::emitSlow_op_instanceof): (JSC::JIT::emit_op_set_function_name): (JSC::JIT::emit_op_throw): (JSC::JIT::emitSlow_op_jstricteq): (JSC::JIT::emitSlow_op_jnstricteq): (JSC::JIT::emit_op_catch): (JSC::JIT::emit_op_switch_imm): (JSC::JIT::emit_op_switch_char): (JSC::JIT::emit_op_switch_string): (JSC::JIT::emit_op_debug): (JSC::JIT::emitSlow_op_eq): (JSC::JIT::emitSlow_op_neq): (JSC::JIT::emitSlow_op_jeq): (JSC::JIT::emitSlow_op_jneq): (JSC::JIT::emitSlow_op_instanceof_custom): (JSC::JIT::emitSlow_op_loop_hint): (JSC::JIT::emitSlow_op_check_traps): (JSC::JIT::emit_op_new_regexp): (JSC::JIT::emitNewFuncCommon): (JSC::JIT::emitNewFuncExprCommon): (JSC::JIT::emit_op_new_array): (JSC::JIT::emit_op_new_array_with_size): (JSC::JIT::emitSlow_op_has_indexed_property): (JSC::JIT::emit_op_profile_type): * jit/JITOpcodes32_64.cpp: (JSC::JIT::emitSlow_op_new_object): (JSC::JIT::emit_op_catch): (JSC::JIT::emit_op_switch_imm): (JSC::JIT::emit_op_debug): (JSC::JIT::emit_op_profile_type): * jit/JITOperations.cpp: (JSC::newFunctionCommon): (JSC::getByVal): (JSC::tryGetByValOptimize): (JSC::operationNewFunctionCommon): Deleted. * jit/JITOperations.h: * jit/JITOperationsMSVC64.cpp: (JSC::getHostCallReturnValueWithExecState): * jit/JITPropertyAccess.cpp: (JSC::JIT::emitGetByValWithCachedId): (JSC::JIT::emitSlow_op_get_by_val): (JSC::JIT::emitPutByValWithCachedId): (JSC::JIT::emitSlow_op_put_by_val): (JSC::JIT::emit_op_put_getter_by_id): (JSC::JIT::emit_op_put_setter_by_id): (JSC::JIT::emit_op_put_getter_setter_by_id): (JSC::JIT::emit_op_put_getter_by_val): (JSC::JIT::emit_op_put_setter_by_val): (JSC::JIT::emit_op_del_by_id): (JSC::JIT::emit_op_del_by_val): (JSC::JIT::emitSlow_op_try_get_by_id): (JSC::JIT::emitSlow_op_get_by_id_direct): (JSC::JIT::emitSlow_op_get_by_id): (JSC::JIT::emitSlow_op_get_by_id_with_this): (JSC::JIT::emitSlow_op_put_by_id): (JSC::JIT::emitSlow_op_in_by_id): (JSC::JIT::emitSlow_op_get_from_scope): (JSC::JIT::emitSlow_op_put_to_scope): (JSC::JIT::emitWriteBarrier): * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): * jit/PolymorphicCallStubRoutine.h: * jit/Repatch.cpp: (JSC::forceICFailure): (JSC::tryCacheGetByID): (JSC::repatchGetByID): (JSC::tryCachePutByID): (JSC::repatchPutByID): (JSC::tryCacheInByID): (JSC::repatchInByID): (JSC::tryCacheInstanceOf): (JSC::repatchInstanceOf): (JSC::linkFor): (JSC::linkDirectFor): (JSC::linkSlowFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): * jit/Repatch.h: * jit/SnippetSlowPathCalls.h: * jit/ThunkGenerators.cpp: (JSC::throwExceptionFromCallSlowPathGenerator): (JSC::slowPathFor): (JSC::nativeForGenerator): (JSC::boundThisNoArgsFunctionCallGenerator): * jit/ThunkGenerators.h: * jsc.cpp: (GlobalObject::finishCreation): (GlobalObject::moduleLoaderImportModule): (GlobalObject::moduleLoaderResolve): (GlobalObject::moduleLoaderFetch): (GlobalObject::moduleLoaderCreateImportMetaProperties): (cStringFromViewWithString): (printInternal): (functionPrintStdOut): (functionPrintStdErr): (functionDebug): (functionSleepSeconds): (functionRun): (functionRunString): (functionLoad): (functionLoadString): (functionReadFile): (functionCheckSyntax): (functionSetSamplingFlags): (functionClearSamplingFlags): (functionSetRandomSeed): (functionNeverInlineFunction): (functionNoDFG): (functionNoOSRExitFuzzing): (functionOptimizeNextInvocation): (functionNumberOfDFGCompiles): (functionCallerIsOMGCompiled): (functionDollarEvalScript): (functionDollarAgentStart): (functionDollarAgentReceiveBroadcast): (functionDollarAgentReport): (functionDollarAgentSleep): (functionDollarAgentBroadcast): (functionFlashHeapAccess): (functionJSCOptions): (functionTransferArrayBuffer): (functionCheckModuleSyntax): (functionGenerateHeapSnapshot): (functionSamplingProfilerStackTraces): (functionAsyncTestStart): (functionWebAssemblyMemoryMode): (functionSetUnhandledRejectionCallback): (dumpException): (checkUncaughtException): (checkException): (runWithOptions): (runInteractive): * llint/LLIntExceptions.cpp: (JSC::LLInt::returnToThrow): (JSC::LLInt::callToThrow): * llint/LLIntExceptions.h: * llint/LLIntSlowPaths.cpp: (JSC::LLInt::getNonConstantOperand): (JSC::LLInt::getOperand): (JSC::LLInt::llint_trace_operand): (JSC::LLInt::llint_trace_value): (JSC::LLInt::LLINT_SLOW_PATH_DECL): (JSC::LLInt::traceFunctionPrologue): (JSC::LLInt::jitCompileAndSetHeuristics): (JSC::LLInt::entryOSR): (JSC::LLInt::setupGetByIdPrototypeCache): (JSC::LLInt::getByVal): (JSC::LLInt::handleHostCall): (JSC::LLInt::setUpCall): (JSC::LLInt::genericCall): (JSC::LLInt::varargsSetup): (JSC::LLInt::commonCallEval): (JSC::LLInt::llint_throw_stack_overflow_error): (JSC::LLInt::llint_write_barrier_slow): * llint/LLIntSlowPaths.h: * llint/LowLevelInterpreter.asm: * llint/LowLevelInterpreter.cpp: (JSC::CLoopRegister::operator CallFrame*): (JSC::CLoopRegister::operator ExecState*): Deleted. * parser/ModuleAnalyzer.cpp: (JSC::ModuleAnalyzer::ModuleAnalyzer): * parser/ModuleAnalyzer.h: * parser/ParserError.h: (JSC::ParserError::toErrorObject): * profiler/ProfilerBytecode.cpp: (JSC::Profiler::Bytecode::toJS const): * profiler/ProfilerBytecode.h: * profiler/ProfilerBytecodeSequence.cpp: (JSC::Profiler::BytecodeSequence::addSequenceProperties const): * profiler/ProfilerBytecodeSequence.h: * profiler/ProfilerBytecodes.cpp: (JSC::Profiler::Bytecodes::toJS const): * profiler/ProfilerBytecodes.h: * profiler/ProfilerCompilation.cpp: (JSC::Profiler::Compilation::toJS const): * profiler/ProfilerCompilation.h: * profiler/ProfilerCompiledBytecode.cpp: (JSC::Profiler::CompiledBytecode::toJS const): * profiler/ProfilerCompiledBytecode.h: * profiler/ProfilerDatabase.cpp: (JSC::Profiler::Database::toJS const): (JSC::Profiler::Database::toJSON const): * profiler/ProfilerDatabase.h: * profiler/ProfilerEvent.cpp: (JSC::Profiler::Event::toJS const): * profiler/ProfilerEvent.h: * profiler/ProfilerOSRExit.cpp: (JSC::Profiler::OSRExit::toJS const): * profiler/ProfilerOSRExit.h: * profiler/ProfilerOSRExitSite.cpp: (JSC::Profiler::OSRExitSite::toJS const): * profiler/ProfilerOSRExitSite.h: * profiler/ProfilerOrigin.cpp: (JSC::Profiler::Origin::toJS const): * profiler/ProfilerOrigin.h: * profiler/ProfilerOriginStack.cpp: (JSC::Profiler::OriginStack::toJS const): * profiler/ProfilerOriginStack.h: * profiler/ProfilerProfiledBytecodes.cpp: (JSC::Profiler::ProfiledBytecodes::toJS const): * profiler/ProfilerProfiledBytecodes.h: * profiler/ProfilerUID.cpp: (JSC::Profiler::UID::toJS const): * profiler/ProfilerUID.h: * runtime/AbstractModuleRecord.cpp: (JSC::AbstractModuleRecord::finishCreation): (JSC::AbstractModuleRecord::hostResolveImportedModule): (JSC::AbstractModuleRecord::resolveImport): (JSC::AbstractModuleRecord::resolveExportImpl): (JSC::AbstractModuleRecord::resolveExport): (JSC::getExportedNames): (JSC::AbstractModuleRecord::getModuleNamespace): (JSC::AbstractModuleRecord::link): (JSC::AbstractModuleRecord::evaluate): * runtime/AbstractModuleRecord.h: * runtime/ArgList.h: (JSC::ArgList::ArgList): * runtime/ArrayBufferView.h: * runtime/ArrayConstructor.cpp: (JSC::constructArrayWithSizeQuirk): (JSC::constructWithArrayConstructor): (JSC::callArrayConstructor): (JSC::isArraySlowInline): (JSC::isArraySlow): (JSC::arrayConstructorPrivateFuncIsArraySlow): * runtime/ArrayConstructor.h: (JSC::isArray): * runtime/ArrayPrototype.cpp: (JSC::ArrayPrototype::finishCreation): (JSC::getProperty): (JSC::putLength): (JSC::setLength): (JSC::speciesWatchpointIsValid): (JSC::arrayProtoFuncSpeciesCreate): (JSC::argumentClampedIndexFromStartOrEnd): (JSC::shift): (JSC::unshift): (JSC::fastJoin): (JSC::arrayProtoFuncToString): (JSC::arrayProtoFuncToLocaleString): (JSC::slowJoin): (JSC::arrayProtoFuncJoin): (JSC::arrayProtoFuncPop): (JSC::arrayProtoFuncPush): (JSC::arrayProtoFuncReverse): (JSC::arrayProtoFuncShift): (JSC::arrayProtoFuncSlice): (JSC::arrayProtoFuncSplice): (JSC::arrayProtoFuncUnShift): (JSC::fastIndexOf): (JSC::arrayProtoFuncIndexOf): (JSC::arrayProtoFuncLastIndexOf): (JSC::moveElements): (JSC::concatAppendOne): (JSC::arrayProtoPrivateFuncConcatMemcpy): (JSC::arrayProtoPrivateFuncAppendMemcpy): * runtime/AsyncFunctionConstructor.cpp: (JSC::callAsyncFunctionConstructor): (JSC::constructAsyncFunctionConstructor): * runtime/AsyncGeneratorFunctionConstructor.cpp: (JSC::callAsyncGeneratorFunctionConstructor): (JSC::constructAsyncGeneratorFunctionConstructor): * runtime/AtomicsObject.cpp: (JSC::atomicsFuncAdd): (JSC::atomicsFuncAnd): (JSC::atomicsFuncCompareExchange): (JSC::atomicsFuncExchange): (JSC::atomicsFuncIsLockFree): (JSC::atomicsFuncLoad): (JSC::atomicsFuncOr): (JSC::atomicsFuncStore): (JSC::atomicsFuncSub): (JSC::atomicsFuncWait): (JSC::atomicsFuncWake): (JSC::atomicsFuncXor): (JSC::operationAtomicsAdd): (JSC::operationAtomicsAnd): (JSC::operationAtomicsCompareExchange): (JSC::operationAtomicsExchange): (JSC::operationAtomicsIsLockFree): (JSC::operationAtomicsLoad): (JSC::operationAtomicsOr): (JSC::operationAtomicsStore): (JSC::operationAtomicsSub): (JSC::operationAtomicsXor): * runtime/AtomicsObject.h: * runtime/BigIntConstructor.cpp: (JSC::toBigInt): (JSC::callBigIntConstructor): * runtime/BigIntObject.cpp: (JSC::BigIntObject::toStringName): (JSC::BigIntObject::defaultValue): * runtime/BigIntObject.h: * runtime/BigIntPrototype.cpp: (JSC::bigIntProtoFuncToStringImpl): (JSC::bigIntProtoFuncValueOf): * runtime/BooleanConstructor.cpp: (JSC::callBooleanConstructor): (JSC::constructWithBooleanConstructor): (JSC::constructBooleanFromImmediateBoolean): * runtime/BooleanConstructor.h: * runtime/BooleanPrototype.cpp: (JSC::booleanProtoFuncToString): (JSC::booleanProtoFuncValueOf): * runtime/CallData.cpp: (JSC::call): (JSC::profiledCall): * runtime/CallData.h: * runtime/ClassInfo.h: * runtime/ClonedArguments.cpp: (JSC::ClonedArguments::createEmpty): (JSC::ClonedArguments::createWithInlineFrame): (JSC::ClonedArguments::createWithMachineFrame): (JSC::ClonedArguments::createByCopyingFrom): (JSC::ClonedArguments::getOwnPropertySlot): (JSC::ClonedArguments::getOwnPropertyNames): (JSC::ClonedArguments::put): (JSC::ClonedArguments::deleteProperty): (JSC::ClonedArguments::defineOwnProperty): (JSC::ClonedArguments::materializeSpecials): (JSC::ClonedArguments::materializeSpecialsIfNecessary): * runtime/ClonedArguments.h: * runtime/CommonSlowPaths.cpp: (JSC::throwArityCheckStackOverflowError): (JSC::SLOW_PATH_DECL): (JSC::createInternalFieldObject): (JSC::updateArithProfileForBinaryArithOp): * runtime/CommonSlowPaths.h: (JSC::CommonSlowPaths::codeBlockFromCallFrameCallee): (JSC::CommonSlowPaths::arityCheckFor): (JSC::CommonSlowPaths::opInByVal): (JSC::CommonSlowPaths::tryCachePutToScopeGlobal): (JSC::CommonSlowPaths::tryCacheGetFromScopeGlobal): (JSC::CommonSlowPaths::putDirectWithReify): (JSC::CommonSlowPaths::putDirectAccessorWithReify): * runtime/Completion.cpp: (JSC::checkSyntax): (JSC::checkModuleSyntax): (JSC::evaluate): (JSC::profiledEvaluate): (JSC::evaluateWithScopeExtension): (JSC::rejectPromise): (JSC::loadAndEvaluateModule): (JSC::loadModule): (JSC::linkAndEvaluateModule): (JSC::importModule): * runtime/Completion.h: (JSC::evaluate): (JSC::profiledEvaluate): * runtime/ConsoleClient.cpp: (JSC::ConsoleClient::printConsoleMessageWithArguments): (JSC::ConsoleClient::internalMessageWithTypeAndLevel): (JSC::ConsoleClient::logWithLevel): (JSC::ConsoleClient::clear): (JSC::ConsoleClient::dir): (JSC::ConsoleClient::dirXML): (JSC::ConsoleClient::table): (JSC::ConsoleClient::trace): (JSC::ConsoleClient::assertion): (JSC::ConsoleClient::group): (JSC::ConsoleClient::groupCollapsed): (JSC::ConsoleClient::groupEnd): * runtime/ConsoleClient.h: * runtime/ConsoleObject.cpp: (JSC::valueOrDefaultLabelString): (JSC::valueToStringWithUndefinedOrNullCheck): (JSC::consoleLogWithLevel): (JSC::consoleProtoFuncDebug): (JSC::consoleProtoFuncError): (JSC::consoleProtoFuncLog): (JSC::consoleProtoFuncInfo): (JSC::consoleProtoFuncWarn): (JSC::consoleProtoFuncClear): (JSC::consoleProtoFuncDir): (JSC::consoleProtoFuncDirXML): (JSC::consoleProtoFuncTable): (JSC::consoleProtoFuncTrace): (JSC::consoleProtoFuncAssert): (JSC::consoleProtoFuncCount): (JSC::consoleProtoFuncCountReset): (JSC::consoleProtoFuncProfile): (JSC::consoleProtoFuncProfileEnd): (JSC::consoleProtoFuncTakeHeapSnapshot): (JSC::consoleProtoFuncTime): (JSC::consoleProtoFuncTimeLog): (JSC::consoleProtoFuncTimeEnd): (JSC::consoleProtoFuncTimeStamp): (JSC::consoleProtoFuncGroup): (JSC::consoleProtoFuncGroupCollapsed): (JSC::consoleProtoFuncGroupEnd): (JSC::consoleProtoFuncRecord): (JSC::consoleProtoFuncRecordEnd): (JSC::consoleProtoFuncScreenshot): * runtime/ConstructData.cpp: (JSC::construct): (JSC::profiledConstruct): * runtime/ConstructData.h: (JSC::construct): (JSC::profiledConstruct): * runtime/CustomGetterSetter.cpp: (JSC::callCustomSetter): * runtime/CustomGetterSetter.h: * runtime/DataView.cpp: (JSC::DataView::wrap): * runtime/DataView.h: * runtime/DateConstructor.cpp: (JSC::millisecondsFromComponents): (JSC::constructDate): (JSC::constructWithDateConstructor): (JSC::dateParse): (JSC::dateUTC): * runtime/DateConstructor.h: * runtime/DateInstance.cpp: (JSC::DateInstance::calculateGregorianDateTime const): (JSC::DateInstance::calculateGregorianDateTimeUTC const): * runtime/DateInstance.h: * runtime/DatePrototype.cpp: (JSC::formatLocaleDate): (JSC::formateDateInstance): (JSC::fillStructuresUsingTimeArgs): (JSC::fillStructuresUsingDateArgs): (JSC::dateProtoFuncToString): (JSC::dateProtoFuncToUTCString): (JSC::dateProtoFuncToISOString): (JSC::dateProtoFuncToDateString): (JSC::dateProtoFuncToTimeString): (JSC::dateProtoFuncToLocaleString): (JSC::dateProtoFuncToLocaleDateString): (JSC::dateProtoFuncToLocaleTimeString): (JSC::dateProtoFuncToPrimitiveSymbol): (JSC::dateProtoFuncGetTime): (JSC::dateProtoFuncGetFullYear): (JSC::dateProtoFuncGetUTCFullYear): (JSC::dateProtoFuncGetMonth): (JSC::dateProtoFuncGetUTCMonth): (JSC::dateProtoFuncGetDate): (JSC::dateProtoFuncGetUTCDate): (JSC::dateProtoFuncGetDay): (JSC::dateProtoFuncGetUTCDay): (JSC::dateProtoFuncGetHours): (JSC::dateProtoFuncGetUTCHours): (JSC::dateProtoFuncGetMinutes): (JSC::dateProtoFuncGetUTCMinutes): (JSC::dateProtoFuncGetSeconds): (JSC::dateProtoFuncGetUTCSeconds): (JSC::dateProtoFuncGetMilliSeconds): (JSC::dateProtoFuncGetUTCMilliseconds): (JSC::dateProtoFuncGetTimezoneOffset): (JSC::dateProtoFuncSetTime): (JSC::setNewValueFromTimeArgs): (JSC::setNewValueFromDateArgs): (JSC::dateProtoFuncSetMilliSeconds): (JSC::dateProtoFuncSetUTCMilliseconds): (JSC::dateProtoFuncSetSeconds): (JSC::dateProtoFuncSetUTCSeconds): (JSC::dateProtoFuncSetMinutes): (JSC::dateProtoFuncSetUTCMinutes): (JSC::dateProtoFuncSetHours): (JSC::dateProtoFuncSetUTCHours): (JSC::dateProtoFuncSetDate): (JSC::dateProtoFuncSetUTCDate): (JSC::dateProtoFuncSetMonth): (JSC::dateProtoFuncSetUTCMonth): (JSC::dateProtoFuncSetFullYear): (JSC::dateProtoFuncSetUTCFullYear): (JSC::dateProtoFuncSetYear): (JSC::dateProtoFuncGetYear): (JSC::dateProtoFuncToJSON): * runtime/DirectArguments.cpp: (JSC::DirectArguments::createByCopying): (JSC::DirectArguments::copyToArguments): * runtime/DirectArguments.h: * runtime/DirectEvalExecutable.cpp: (JSC::DirectEvalExecutable::create): (JSC::DirectEvalExecutable::DirectEvalExecutable): * runtime/DirectEvalExecutable.h: * runtime/Error.cpp: (JSC::createError): (JSC::createEvalError): (JSC::createRangeError): (JSC::createReferenceError): (JSC::createSyntaxError): (JSC::createTypeError): (JSC::createNotEnoughArgumentsError): (JSC::createURIError): (JSC::createGetterTypeError): (JSC::getStackTrace): (JSC::getBytecodeOffset): (JSC::addErrorInfo): (JSC::throwConstructorCannotBeCalledAsFunctionTypeError): (JSC::throwTypeError): (JSC::throwSyntaxError): (JSC::throwGetterTypeError): (JSC::throwDOMAttributeGetterTypeError): (JSC::createOutOfMemoryError): * runtime/Error.h: (JSC::throwRangeError): (JSC::throwVMError): (JSC::throwVMTypeError): (JSC::throwVMRangeError): (JSC::throwVMGetterTypeError): (JSC::throwVMDOMAttributeGetterTypeError): * runtime/ErrorConstructor.cpp: (JSC::constructErrorConstructor): (JSC::callErrorConstructor): (JSC::ErrorConstructor::put): (JSC::ErrorConstructor::deleteProperty): * runtime/ErrorConstructor.h: * runtime/ErrorInstance.cpp: (JSC::ErrorInstance::create): (JSC::appendSourceToError): (JSC::ErrorInstance::finishCreation): (JSC::ErrorInstance::sanitizedToString): (JSC::ErrorInstance::getOwnPropertySlot): (JSC::ErrorInstance::getOwnNonIndexPropertyNames): (JSC::ErrorInstance::getStructurePropertyNames): (JSC::ErrorInstance::defineOwnProperty): (JSC::ErrorInstance::put): (JSC::ErrorInstance::deleteProperty): * runtime/ErrorInstance.h: (JSC::ErrorInstance::create): * runtime/ErrorPrototype.cpp: (JSC::errorProtoFuncToString): * runtime/EvalExecutable.cpp: (JSC::EvalExecutable::EvalExecutable): * runtime/EvalExecutable.h: * runtime/ExceptionFuzz.cpp: (JSC::doExceptionFuzzing): * runtime/ExceptionFuzz.h: (JSC::doExceptionFuzzingIfEnabled): * runtime/ExceptionHelpers.cpp: (JSC::TerminatedExecutionError::defaultValue): (JSC::createStackOverflowError): (JSC::createUndefinedVariableError): (JSC::errorDescriptionForValue): (JSC::createError): (JSC::createInvalidFunctionApplyParameterError): (JSC::createInvalidInParameterError): (JSC::createInvalidInstanceofParameterErrorNotFunction): (JSC::createInvalidInstanceofParameterErrorHasInstanceValueNotFunction): (JSC::createNotAConstructorError): (JSC::createNotAFunctionError): (JSC::createNotAnObjectError): (JSC::createErrorForInvalidGlobalAssignment): (JSC::createTDZError): (JSC::throwOutOfMemoryError): (JSC::throwStackOverflowError): (JSC::throwTerminatedExecutionException): * runtime/ExceptionHelpers.h: * runtime/FunctionConstructor.cpp: (JSC::constructWithFunctionConstructor): (JSC::callFunctionConstructor): (JSC::constructFunction): (JSC::constructFunctionSkippingEvalEnabledCheck): * runtime/FunctionConstructor.h: * runtime/FunctionExecutable.cpp: (JSC::FunctionExecutable::fromGlobalCode): * runtime/FunctionExecutable.h: * runtime/FunctionPrototype.cpp: (JSC::functionProtoFuncToString): * runtime/FunctionRareData.h: * runtime/GeneratorFunctionConstructor.cpp: (JSC::callGeneratorFunctionConstructor): (JSC::constructGeneratorFunctionConstructor): * runtime/GenericArguments.h: * runtime/GenericArgumentsInlines.h: (JSC::GenericArguments<Type>::getOwnPropertySlot): (JSC::GenericArguments<Type>::getOwnPropertySlotByIndex): (JSC::GenericArguments<Type>::getOwnPropertyNames): (JSC::GenericArguments<Type>::put): (JSC::GenericArguments<Type>::putByIndex): (JSC::GenericArguments<Type>::deleteProperty): (JSC::GenericArguments<Type>::deletePropertyByIndex): (JSC::GenericArguments<Type>::defineOwnProperty): (JSC::GenericArguments<Type>::copyToArguments): * runtime/GenericTypedArrayView.h: * runtime/GenericTypedArrayViewInlines.h: (JSC::GenericTypedArrayView<Adaptor>::wrap): * runtime/GetterSetter.cpp: (JSC::callGetter): (JSC::callSetter): * runtime/GetterSetter.h: * runtime/HashMapImpl.h: (JSC::HashMapBuffer::create): (JSC::areKeysEqual): (JSC::jsMapHash): (JSC::HashMapImpl::finishCreation): (JSC::HashMapImpl::findBucket): (JSC::HashMapImpl::get): (JSC::HashMapImpl::has): (JSC::HashMapImpl::add): (JSC::HashMapImpl::addNormalized): (JSC::HashMapImpl::remove): (JSC::HashMapImpl::clear): (JSC::HashMapImpl::setUpHeadAndTail): (JSC::HashMapImpl::addNormalizedNonExistingForCloning): (JSC::HashMapImpl::addNormalizedInternal): (JSC::HashMapImpl::findBucketAlreadyHashedAndNormalized): (JSC::HashMapImpl::rehash): (JSC::HashMapImpl::makeAndSetNewBuffer): * runtime/Identifier.h: * runtime/IndirectEvalExecutable.cpp: (JSC::IndirectEvalExecutable::create): (JSC::IndirectEvalExecutable::IndirectEvalExecutable): * runtime/IndirectEvalExecutable.h: * runtime/InspectorInstrumentationObject.cpp: (JSC::inspectorInstrumentationObjectLog): * runtime/InternalFunction.cpp: (JSC::InternalFunction::InternalFunction): (JSC::InternalFunction::createSubclassStructureSlow): * runtime/InternalFunction.h: (JSC::InternalFunction::createSubclassStructure): * runtime/IntlCollator.cpp: (JSC::IntlCollator::initializeCollator): (JSC::IntlCollator::createCollator): (JSC::IntlCollator::compareStrings): (JSC::IntlCollator::resolvedOptions): * runtime/IntlCollator.h: * runtime/IntlCollatorConstructor.cpp: (JSC::constructIntlCollator): (JSC::callIntlCollator): (JSC::IntlCollatorConstructorFuncSupportedLocalesOf): * runtime/IntlCollatorPrototype.cpp: (JSC::IntlCollatorFuncCompare): (JSC::IntlCollatorPrototypeGetterCompare): (JSC::IntlCollatorPrototypeFuncResolvedOptions): * runtime/IntlDateTimeFormat.cpp: (JSC::IntlDTFInternal::toDateTimeOptionsAnyDate): (JSC::IntlDateTimeFormat::initializeDateTimeFormat): (JSC::IntlDateTimeFormat::resolvedOptions): (JSC::IntlDateTimeFormat::format): (JSC::IntlDateTimeFormat::formatToParts): * runtime/IntlDateTimeFormat.h: * runtime/IntlDateTimeFormatConstructor.cpp: (JSC::constructIntlDateTimeFormat): (JSC::callIntlDateTimeFormat): (JSC::IntlDateTimeFormatConstructorFuncSupportedLocalesOf): * runtime/IntlDateTimeFormatPrototype.cpp: (JSC::IntlDateTimeFormatFuncFormatDateTime): (JSC::IntlDateTimeFormatPrototypeGetterFormat): (JSC::IntlDateTimeFormatPrototypeFuncFormatToParts): (JSC::IntlDateTimeFormatPrototypeFuncResolvedOptions): * runtime/IntlNumberFormat.cpp: (JSC::IntlNumberFormat::initializeNumberFormat): (JSC::IntlNumberFormat::formatNumber): (JSC::IntlNumberFormat::resolvedOptions): (JSC::IntlNumberFormat::formatToParts): * runtime/IntlNumberFormat.h: * runtime/IntlNumberFormatConstructor.cpp: (JSC::constructIntlNumberFormat): (JSC::callIntlNumberFormat): (JSC::IntlNumberFormatConstructorFuncSupportedLocalesOf): * runtime/IntlNumberFormatPrototype.cpp: (JSC::IntlNumberFormatFuncFormatNumber): (JSC::IntlNumberFormatPrototypeGetterFormat): (JSC::IntlNumberFormatPrototypeFuncFormatToParts): (JSC::IntlNumberFormatPrototypeFuncResolvedOptions): * runtime/IntlObject.cpp: (JSC::intlBooleanOption): (JSC::intlStringOption): (JSC::intlNumberOption): (JSC::intlDefaultNumberOption): (JSC::canonicalizeLocaleList): (JSC::defaultLocale): (JSC::lookupMatcher): (JSC::bestFitMatcher): (JSC::resolveLocale): (JSC::lookupSupportedLocales): (JSC::bestFitSupportedLocales): (JSC::supportedLocales): (JSC::intlObjectFuncGetCanonicalLocales): * runtime/IntlObject.h: * runtime/IntlObjectInlines.h: (JSC::constructIntlInstanceWithWorkaroundForLegacyIntlConstructor): * runtime/IntlPluralRules.cpp: (JSC::IntlPluralRules::initializePluralRules): (JSC::IntlPluralRules::resolvedOptions): (JSC::IntlPluralRules::select): * runtime/IntlPluralRules.h: * runtime/IntlPluralRulesConstructor.cpp: (JSC::constructIntlPluralRules): (JSC::callIntlPluralRules): (JSC::IntlPluralRulesConstructorFuncSupportedLocalesOf): * runtime/IntlPluralRulesPrototype.cpp: (JSC::IntlPluralRulesPrototypeFuncSelect): (JSC::IntlPluralRulesPrototypeFuncResolvedOptions): * runtime/IteratorOperations.cpp: (JSC::iteratorNext): (JSC::iteratorValue): (JSC::iteratorComplete): (JSC::iteratorStep): (JSC::iteratorClose): (JSC::createIteratorResultObject): (JSC::hasIteratorMethod): (JSC::iteratorMethod): (JSC::iteratorForIterable): * runtime/IteratorOperations.h: (JSC::forEachInIterable): * runtime/JSArray.cpp: (JSC::JSArray::setLengthWritable): (JSC::JSArray::defineOwnProperty): (JSC::JSArray::getOwnPropertySlot): (JSC::JSArray::put): (JSC::JSArray::deleteProperty): (JSC::JSArray::getOwnNonIndexPropertyNames): (JSC::JSArray::setLengthWithArrayStorage): (JSC::JSArray::appendMemcpy): (JSC::JSArray::setLength): (JSC::JSArray::pop): (JSC::JSArray::push): (JSC::JSArray::fastSlice): (JSC::JSArray::shiftCountWithAnyIndexingType): (JSC::JSArray::unshiftCountWithArrayStorage): (JSC::JSArray::unshiftCountWithAnyIndexingType): (JSC::JSArray::fillArgList): (JSC::JSArray::copyToArguments): (JSC::constructArray): (JSC::constructArrayNegativeIndexed): * runtime/JSArray.h: (JSC::JSArray::shiftCountForShift): (JSC::JSArray::shiftCountForSplice): (JSC::JSArray::shiftCount): (JSC::JSArray::unshiftCountForShift): (JSC::JSArray::unshiftCountForSplice): (JSC::JSArray::unshiftCount): * runtime/JSArrayBufferConstructor.cpp: (JSC::JSGenericArrayBufferConstructor<sharingMode>::constructArrayBuffer): (JSC::callArrayBuffer): * runtime/JSArrayBufferPrototype.cpp: (JSC::arrayBufferProtoFuncSlice): (JSC::arrayBufferProtoGetterFuncByteLength): (JSC::sharedArrayBufferProtoGetterFuncByteLength): * runtime/JSArrayBufferView.cpp: (JSC::JSArrayBufferView::toStringName): (JSC::JSArrayBufferView::put): (JSC::JSArrayBufferView::unsharedJSBuffer): (JSC::JSArrayBufferView::possiblySharedJSBuffer): (JSC::JSArrayBufferView::slowDownAndWasteMemory): * runtime/JSArrayBufferView.h: * runtime/JSArrayInlines.h: (JSC::toLength): (JSC::JSArray::pushInline): * runtime/JSBigInt.cpp: (JSC::JSBigInt::tryCreateWithLength): (JSC::JSBigInt::toPrimitive const): (JSC::JSBigInt::parseInt): (JSC::JSBigInt::stringToBigInt): (JSC::JSBigInt::toString): (JSC::JSBigInt::exponentiate): (JSC::JSBigInt::multiply): (JSC::JSBigInt::divide): (JSC::JSBigInt::remainder): (JSC::JSBigInt::add): (JSC::JSBigInt::sub): (JSC::JSBigInt::bitwiseAnd): (JSC::JSBigInt::bitwiseOr): (JSC::JSBigInt::bitwiseXor): (JSC::JSBigInt::leftShift): (JSC::JSBigInt::signedRightShift): (JSC::JSBigInt::bitwiseNot): (JSC::JSBigInt::absoluteAdd): (JSC::JSBigInt::absoluteDivWithBigIntDivisor): (JSC::JSBigInt::absoluteLeftShiftAlwaysCopy): (JSC::JSBigInt::absoluteAddOne): (JSC::JSBigInt::absoluteSubOne): (JSC::JSBigInt::leftShiftByAbsolute): (JSC::JSBigInt::rightShiftByAbsolute): (JSC::JSBigInt::toStringBasePowerOfTwo): (JSC::JSBigInt::toStringGeneric): (JSC::JSBigInt::allocateFor): (JSC::JSBigInt::toNumber const): (JSC::JSBigInt::getPrimitiveNumber const): (JSC::JSBigInt::toObject const): * runtime/JSBigInt.h: * runtime/JSBoundFunction.cpp: (JSC::boundThisNoArgsFunctionCall): (JSC::boundFunctionCall): (JSC::boundThisNoArgsFunctionConstruct): (JSC::boundFunctionConstruct): (JSC::hasInstanceBoundFunction): (JSC::getBoundFunctionStructure): (JSC::JSBoundFunction::create): (JSC::JSBoundFunction::customHasInstance): (JSC::JSBoundFunction::boundArgsCopy): * runtime/JSBoundFunction.h: * runtime/JSCJSValue.cpp: (JSC::JSValue::toInteger const): (JSC::JSValue::toIntegerPreserveNaN const): (JSC::JSValue::toLength const): (JSC::JSValue::toNumberSlowCase const): (JSC::JSValue::toObjectSlowCase const): (JSC::JSValue::toThisSlowCase const): (JSC::JSValue::synthesizePrototype const): (JSC::JSValue::putToPrimitive): (JSC::JSValue::putToPrimitiveByIndex): (JSC::JSValue::toStringSlowCase const): (JSC::JSValue::toWTFStringSlowCase const): * runtime/JSCJSValue.h: (JSC::JSValue::toFloat const): * runtime/JSCJSValueInlines.h: (JSC::JSValue::toInt32 const): (JSC::JSValue::toUInt32 const): (JSC::JSValue::toIndex const): (JSC::JSValue::getString const): (JSC::Unknown>::getString const): (JSC::JSValue::toPropertyKey const): (JSC::JSValue::toPrimitive const): (JSC::toPreferredPrimitiveType): (JSC::JSValue::getPrimitiveNumber): (JSC::JSValue::toNumber const): (JSC::JSValue::toNumeric const): (JSC::JSValue::toBigIntOrInt32 const): (JSC::JSValue::toObject const): (JSC::JSValue::toThis const): (JSC::JSValue::get const): (JSC::JSValue::getPropertySlot const): (JSC::JSValue::getOwnPropertySlot const): (JSC::JSValue::put): (JSC::JSValue::putInline): (JSC::JSValue::putByIndex): (JSC::JSValue::equal): (JSC::JSValue::equalSlowCaseInline): (JSC::JSValue::strictEqualSlowCaseInline): (JSC::JSValue::strictEqual): (JSC::JSValue::requireObjectCoercible const): (JSC::sameValue): * runtime/JSCell.cpp: (JSC::JSCell::getString const): (JSC::JSCell::put): (JSC::JSCell::putByIndex): (JSC::JSCell::deleteProperty): (JSC::JSCell::deletePropertyByIndex): (JSC::JSCell::toThis): (JSC::JSCell::toPrimitive const): (JSC::JSCell::getPrimitiveNumber const): (JSC::JSCell::toNumber const): (JSC::JSCell::toObjectSlow const): (JSC::JSCell::defaultValue): (JSC::JSCell::getOwnPropertySlot): (JSC::JSCell::getOwnPropertySlotByIndex): (JSC::JSCell::doPutPropertySecurityCheck): (JSC::JSCell::getOwnPropertyNames): (JSC::JSCell::getOwnNonIndexPropertyNames): (JSC::JSCell::toStringName): (JSC::JSCell::getPropertyNames): (JSC::JSCell::customHasInstance): (JSC::JSCell::defineOwnProperty): (JSC::JSCell::getEnumerableLength): (JSC::JSCell::getStructurePropertyNames): (JSC::JSCell::getGenericPropertyNames): (JSC::JSCell::preventExtensions): (JSC::JSCell::isExtensible): (JSC::JSCell::setPrototype): (JSC::JSCell::getPrototype): * runtime/JSCell.h: * runtime/JSCellInlines.h: (JSC::CallFrame::vm const): (JSC::JSCell::toBoolean const): (JSC::JSCell::toObject const): (JSC::JSCell::putInline): (JSC::ExecState::vm const): Deleted. * runtime/JSCustomGetterSetterFunction.cpp: (JSC::JSCustomGetterSetterFunction::customGetterSetterFunctionCall): * runtime/JSDataView.cpp: (JSC::JSDataView::create): (JSC::JSDataView::createUninitialized): (JSC::JSDataView::set): (JSC::JSDataView::setIndex): (JSC::JSDataView::getOwnPropertySlot): (JSC::JSDataView::put): (JSC::JSDataView::defineOwnProperty): (JSC::JSDataView::deleteProperty): (JSC::JSDataView::getOwnNonIndexPropertyNames): * runtime/JSDataView.h: * runtime/JSDataViewPrototype.cpp: (JSC::getData): (JSC::setData): (JSC::dataViewProtoGetterBuffer): (JSC::dataViewProtoGetterByteLength): (JSC::dataViewProtoGetterByteOffset): * runtime/JSDateMath.cpp: (JSC::parseDate): * runtime/JSDateMath.h: * runtime/JSFixedArray.cpp: (JSC::JSFixedArray::copyToArguments): * runtime/JSFixedArray.h: * runtime/JSFunction.cpp: (JSC::callHostFunctionAsConstructor): (JSC::JSFunction::prototypeForConstruction): (JSC::JSFunction::allocateAndInitializeRareData): (JSC::JSFunction::initializeRareData): (JSC::retrieveArguments): (JSC::JSFunction::argumentsGetter): (JSC::retrieveCallerFunction): (JSC::JSFunction::callerGetter): (JSC::JSFunction::getOwnPropertySlot): (JSC::JSFunction::getOwnNonIndexPropertyNames): (JSC::JSFunction::put): (JSC::JSFunction::deleteProperty): (JSC::JSFunction::defineOwnProperty): (JSC::JSFunction::setFunctionName): (JSC::JSFunction::reifyName): (JSC::JSFunction::reifyLazyPropertyIfNeeded): (JSC::JSFunction::reifyLazyPropertyForHostOrBuiltinIfNeeded): (JSC::JSFunction::reifyLazyLengthIfNeeded): (JSC::JSFunction::reifyLazyNameIfNeeded): (JSC::JSFunction::reifyLazyBoundNameIfNeeded): * runtime/JSFunction.h: * runtime/JSFunctionInlines.h: (JSC::JSFunction::ensureRareDataAndAllocationProfile): * runtime/JSGenericTypedArrayView.h: * runtime/JSGenericTypedArrayViewConstructorInlines.h: (JSC::constructGenericTypedArrayViewFromIterator): (JSC::constructGenericTypedArrayViewWithArguments): (JSC::constructGenericTypedArrayView): (JSC::callGenericTypedArrayView): * runtime/JSGenericTypedArrayViewInlines.h: (JSC::JSGenericTypedArrayView<Adaptor>::create): (JSC::JSGenericTypedArrayView<Adaptor>::createWithFastVector): (JSC::JSGenericTypedArrayView<Adaptor>::createUninitialized): (JSC::JSGenericTypedArrayView<Adaptor>::validateRange): (JSC::JSGenericTypedArrayView<Adaptor>::setWithSpecificType): (JSC::JSGenericTypedArrayView<Adaptor>::set): (JSC::JSGenericTypedArrayView<Adaptor>::throwNeuteredTypedArrayTypeError): (JSC::JSGenericTypedArrayView<Adaptor>::getOwnPropertySlot): (JSC::JSGenericTypedArrayView<Adaptor>::put): (JSC::JSGenericTypedArrayView<Adaptor>::defineOwnProperty): (JSC::JSGenericTypedArrayView<Adaptor>::deleteProperty): (JSC::JSGenericTypedArrayView<Adaptor>::getOwnPropertySlotByIndex): (JSC::JSGenericTypedArrayView<Adaptor>::putByIndex): (JSC::JSGenericTypedArrayView<Adaptor>::deletePropertyByIndex): (JSC::JSGenericTypedArrayView<Adaptor>::getOwnPropertyNames): * runtime/JSGenericTypedArrayViewPrototypeFunctions.h: (JSC::speciesConstruct): (JSC::argumentClampedIndexFromStartOrEnd): (JSC::genericTypedArrayViewProtoFuncSet): (JSC::genericTypedArrayViewProtoFuncCopyWithin): (JSC::genericTypedArrayViewProtoFuncIncludes): (JSC::genericTypedArrayViewProtoFuncIndexOf): (JSC::genericTypedArrayViewProtoFuncJoin): (JSC::genericTypedArrayViewProtoFuncLastIndexOf): (JSC::genericTypedArrayViewProtoGetterFuncBuffer): (JSC::genericTypedArrayViewProtoGetterFuncLength): (JSC::genericTypedArrayViewProtoGetterFuncByteLength): (JSC::genericTypedArrayViewProtoGetterFuncByteOffset): (JSC::genericTypedArrayViewProtoFuncReverse): (JSC::genericTypedArrayViewPrivateFuncSort): (JSC::genericTypedArrayViewProtoFuncSlice): (JSC::genericTypedArrayViewPrivateFuncSubarrayCreate): * runtime/JSGlobalLexicalEnvironment.cpp: (JSC::JSGlobalLexicalEnvironment::getOwnPropertySlot): (JSC::JSGlobalLexicalEnvironment::put): * runtime/JSGlobalLexicalEnvironment.h: * runtime/JSGlobalObject.cpp: (JSC::createConsoleProperty): (JSC::makeBoundFunction): (JSC::hasOwnLengthProperty): (JSC::getGetterById): (JSC::JSGlobalObject::init): (JSC::JSGlobalObject::put): (JSC::JSGlobalObject::defineOwnProperty): (JSC::JSGlobalObject::addFunction): (JSC::JSGlobalObject::visitChildren): (JSC::JSGlobalObject::deprecatedCallFrameForDebugger): (JSC::JSGlobalObject::exposeDollarVM): (JSC::JSGlobalObject::getOwnPropertySlot): (JSC::JSGlobalObject::tryInstallArraySpeciesWatchpoint): (JSC::JSGlobalObject::defaultCollator): (JSC::JSGlobalObject::globalExec): Deleted. * runtime/JSGlobalObject.h: (JSC::JSGlobalObject::addVar): (JSC::JSGlobalObject::regExpConstructor const): (JSC::JSGlobalObject::functionConstructor const): (JSC::JSGlobalObject::arrayStructureForProfileDuringAllocation const): (JSC::JSGlobalObject::supportsRichSourceInfo): (JSC::JSGlobalObject::globalObjectAtDebuggerEntry const): (JSC::JSGlobalObject::setGlobalObjectAtDebuggerEntry): (JSC::constructEmptyArray): (JSC::constructArray): (JSC::constructArrayNegativeIndexed): (JSC::JSGlobalObject::callFrameAtDebuggerEntry const): Deleted. (JSC::JSGlobalObject::setCallFrameAtDebuggerEntry): Deleted. (JSC::ExecState::globalThisValue const): Deleted. * runtime/JSGlobalObjectFunctions.cpp: (JSC::encode): (JSC::decode): (JSC::globalFuncEval): (JSC::globalFuncParseInt): (JSC::globalFuncParseFloat): (JSC::globalFuncDecodeURI): (JSC::globalFuncDecodeURIComponent): (JSC::globalFuncEncodeURI): (JSC::globalFuncEncodeURIComponent): (JSC::globalFuncEscape): (JSC::globalFuncUnescape): (JSC::globalFuncThrowTypeError): (JSC::globalFuncThrowTypeErrorArgumentsCalleeAndCaller): (JSC::globalFuncMakeTypeError): (JSC::globalFuncProtoGetter): (JSC::globalFuncProtoSetter): (JSC::globalFuncHostPromiseRejectionTracker): (JSC::globalFuncBuiltinLog): (JSC::globalFuncImportModule): (JSC::globalFuncPropertyIsEnumerable): (JSC::globalFuncOwnKeys): (JSC::globalFuncDateTimeFormat): * runtime/JSGlobalObjectFunctions.h: * runtime/JSGlobalObjectInlines.h: (JSC::JSGlobalObject::arrayStructureForIndexingTypeDuringAllocation const): (JSC::getVM): * runtime/JSImmutableButterfly.cpp: (JSC::JSImmutableButterfly::copyToArguments): * runtime/JSImmutableButterfly.h: * runtime/JSInternalPromise.cpp: (JSC::JSInternalPromise::then): * runtime/JSInternalPromise.h: * runtime/JSInternalPromiseDeferred.cpp: (JSC::JSInternalPromiseDeferred::tryCreate): (JSC::JSInternalPromiseDeferred::resolve): (JSC::JSInternalPromiseDeferred::reject): * runtime/JSInternalPromiseDeferred.h: * runtime/JSLexicalEnvironment.cpp: (JSC::JSLexicalEnvironment::getOwnNonIndexPropertyNames): (JSC::JSLexicalEnvironment::getOwnPropertySlot): (JSC::JSLexicalEnvironment::put): (JSC::JSLexicalEnvironment::deleteProperty): * runtime/JSLexicalEnvironment.h: * runtime/JSLock.cpp: (JSC::JSLockHolder::JSLockHolder): (JSC::JSLock::lock): (JSC::JSLock::unlock): (JSC::JSLock::DropAllLocks::DropAllLocks): * runtime/JSLock.h: * runtime/JSMap.cpp: (JSC::JSMap::toStringName): (JSC::JSMap::clone): * runtime/JSMap.h: * runtime/JSMapIterator.cpp: (JSC::JSMapIterator::createPair): * runtime/JSMapIterator.h: * runtime/JSMicrotask.cpp: (JSC::JSMicrotask::run): * runtime/JSModuleEnvironment.cpp: (JSC::JSModuleEnvironment::getOwnPropertySlot): (JSC::JSModuleEnvironment::getOwnNonIndexPropertyNames): (JSC::JSModuleEnvironment::put): (JSC::JSModuleEnvironment::deleteProperty): * runtime/JSModuleEnvironment.h: * runtime/JSModuleLoader.cpp: (JSC::JSModuleLoader::finishCreation): (JSC::printableModuleKey): (JSC::JSModuleLoader::dependencyKeysIfEvaluated): (JSC::JSModuleLoader::provideFetch): (JSC::JSModuleLoader::loadAndEvaluateModule): (JSC::JSModuleLoader::loadModule): (JSC::JSModuleLoader::linkAndEvaluateModule): (JSC::JSModuleLoader::requestImportModule): (JSC::JSModuleLoader::importModule): (JSC::JSModuleLoader::resolveSync): (JSC::JSModuleLoader::resolve): (JSC::JSModuleLoader::fetch): (JSC::JSModuleLoader::createImportMetaProperties): (JSC::JSModuleLoader::evaluate): (JSC::JSModuleLoader::evaluateNonVirtual): (JSC::JSModuleLoader::getModuleNamespaceObject): (JSC::moduleLoaderParseModule): (JSC::moduleLoaderRequestedModules): (JSC::moduleLoaderModuleDeclarationInstantiation): (JSC::moduleLoaderResolve): (JSC::moduleLoaderResolveSync): (JSC::moduleLoaderFetch): (JSC::moduleLoaderGetModuleNamespaceObject): (JSC::moduleLoaderEvaluate): * runtime/JSModuleLoader.h: * runtime/JSModuleNamespaceObject.cpp: (JSC::JSModuleNamespaceObject::finishCreation): (JSC::JSModuleNamespaceObject::getOwnPropertySlotCommon): (JSC::JSModuleNamespaceObject::getOwnPropertySlot): (JSC::JSModuleNamespaceObject::getOwnPropertySlotByIndex): (JSC::JSModuleNamespaceObject::put): (JSC::JSModuleNamespaceObject::putByIndex): (JSC::JSModuleNamespaceObject::deleteProperty): (JSC::JSModuleNamespaceObject::getOwnPropertyNames): (JSC::JSModuleNamespaceObject::defineOwnProperty): * runtime/JSModuleNamespaceObject.h: * runtime/JSModuleRecord.cpp: (JSC::JSModuleRecord::create): (JSC::JSModuleRecord::finishCreation): (JSC::JSModuleRecord::link): (JSC::JSModuleRecord::instantiateDeclarations): (JSC::JSModuleRecord::evaluate): * runtime/JSModuleRecord.h: * runtime/JSONObject.cpp: (JSC::unwrapBoxedPrimitive): (JSC::gap): (JSC::PropertyNameForFunctionCall::value const): (JSC::Stringifier::Stringifier): (JSC::Stringifier::stringify): (JSC::Stringifier::toJSON): (JSC::Stringifier::toJSONImpl): (JSC::Stringifier::appendStringifiedValue): (JSC::Stringifier::Holder::Holder): (JSC::Stringifier::Holder::appendNextProperty): (JSC::Walker::Walker): (JSC::Walker::callReviver): (JSC::Walker::walk): (JSC::JSONProtoFuncParse): (JSC::JSONProtoFuncStringify): (JSC::JSONParse): (JSC::JSONStringify): * runtime/JSONObject.h: * runtime/JSObject.cpp: (JSC::getClassPropertyNames): (JSC::JSObject::toStringName): (JSC::JSObject::calculatedClassName): (JSC::JSObject::getOwnPropertySlotByIndex): (JSC::ordinarySetSlow): (JSC::JSObject::put): (JSC::JSObject::putInlineSlow): (JSC::JSObject::putByIndex): (JSC::JSObject::setPrototypeWithCycleCheck): (JSC::JSObject::setPrototype): (JSC::JSObject::getPrototype): (JSC::JSObject::putGetter): (JSC::JSObject::putSetter): (JSC::JSObject::putDirectAccessor): (JSC::JSObject::hasProperty const): (JSC::JSObject::hasPropertyGeneric const): (JSC::JSObject::deleteProperty): (JSC::JSObject::deletePropertyByIndex): (JSC::callToPrimitiveFunction): (JSC::JSObject::ordinaryToPrimitive const): (JSC::JSObject::defaultValue): (JSC::JSObject::toPrimitive const): (JSC::JSObject::getPrimitiveNumber const): (JSC::JSObject::hasInstance): (JSC::JSObject::defaultHasInstance): (JSC::objectPrivateFuncInstanceOf): (JSC::JSObject::getPropertyNames): (JSC::JSObject::getOwnPropertyNames): (JSC::JSObject::getOwnNonIndexPropertyNames): (JSC::JSObject::toNumber const): (JSC::JSObject::toString const): (JSC::JSObject::toThis): (JSC::JSObject::preventExtensions): (JSC::JSObject::isExtensible): (JSC::JSObject::reifyAllStaticProperties): (JSC::putIndexedDescriptor): (JSC::JSObject::defineOwnIndexedProperty): (JSC::JSObject::attemptToInterceptPutByIndexOnHoleForPrototype): (JSC::JSObject::attemptToInterceptPutByIndexOnHole): (JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes): (JSC::JSObject::putByIndexBeyondVectorLengthWithArrayStorage): (JSC::JSObject::putByIndexBeyondVectorLength): (JSC::JSObject::putDirectIndexBeyondVectorLengthWithArrayStorage): (JSC::JSObject::putDirectIndexSlowOrBeyondVectorLength): (JSC::getCustomGetterSetterFunctionForGetterSetter): (JSC::JSObject::getOwnPropertyDescriptor): (JSC::putDescriptor): (JSC::JSObject::putDirectMayBeIndex): (JSC::validateAndApplyPropertyDescriptor): (JSC::JSObject::defineOwnNonIndexProperty): (JSC::JSObject::defineOwnProperty): (JSC::JSObject::getEnumerableLength): (JSC::JSObject::getStructurePropertyNames): (JSC::JSObject::getGenericPropertyNames): (JSC::JSObject::getMethod): * runtime/JSObject.h: (JSC::JSObject::putByIndexInline): (JSC::JSObject::putDirectIndex): (JSC::JSObject::getDirectIndex): (JSC::JSObject::getIndex const): (JSC::JSObject::createRawObject): (JSC::JSFinalObject::create): (JSC::JSObject::getPrototype): (JSC::JSObject::getOwnPropertySlot): (JSC::JSObject::doPutPropertySecurityCheck): (JSC::JSObject::getPropertySlot): (JSC::JSObject::get const): * runtime/JSObjectInlines.h: (JSC::createListFromArrayLike): (JSC::JSObject::getPropertySlot const): (JSC::JSObject::getPropertySlot): (JSC::JSObject::getNonIndexPropertySlot): (JSC::JSObject::getOwnPropertySlotInline): (JSC::JSObject::putInlineForJSObject): (JSC::JSObject::hasOwnProperty const): (JSC::JSObject::putOwnDataPropertyMayBeIndex): * runtime/JSPromise.cpp: (JSC::JSPromise::resolve): * runtime/JSPromise.h: * runtime/JSPromiseDeferred.cpp: (JSC::JSPromiseDeferred::createDeferredData): (JSC::JSPromiseDeferred::tryCreate): (JSC::callFunction): (JSC::JSPromiseDeferred::resolve): (JSC::JSPromiseDeferred::reject): * runtime/JSPromiseDeferred.h: * runtime/JSPropertyNameEnumerator.h: (JSC::propertyNameEnumerator): * runtime/JSProxy.cpp: (JSC::JSProxy::toStringName): (JSC::JSProxy::getOwnPropertySlot): (JSC::JSProxy::getOwnPropertySlotByIndex): (JSC::JSProxy::put): (JSC::JSProxy::putByIndex): (JSC::JSProxy::defineOwnProperty): (JSC::JSProxy::deleteProperty): (JSC::JSProxy::isExtensible): (JSC::JSProxy::preventExtensions): (JSC::JSProxy::deletePropertyByIndex): (JSC::JSProxy::getPropertyNames): (JSC::JSProxy::getEnumerableLength): (JSC::JSProxy::getStructurePropertyNames): (JSC::JSProxy::getGenericPropertyNames): (JSC::JSProxy::getOwnPropertyNames): (JSC::JSProxy::setPrototype): (JSC::JSProxy::getPrototype): * runtime/JSProxy.h: * runtime/JSScope.cpp: (JSC::abstractAccess): (JSC::isUnscopable): (JSC::JSScope::resolve): (JSC::JSScope::resolveScopeForHoistingFuncDeclInEval): (JSC::JSScope::abstractResolve): (JSC::JSScope::toThis): * runtime/JSScope.h: (JSC::CallFrame::lexicalGlobalObject const): (JSC::ExecState::lexicalGlobalObject const): Deleted. * runtime/JSSet.cpp: (JSC::JSSet::toStringName): (JSC::JSSet::clone): * runtime/JSSet.h: * runtime/JSSetIterator.cpp: (JSC::JSSetIterator::createPair): * runtime/JSSetIterator.h: * runtime/JSString.cpp: (JSC::JSString::equalSlowCase const): (JSC::JSRopeString::resolveRopeToAtomString const): (JSC::JSRopeString::resolveRopeToExistingAtomString const): (JSC::JSRopeString::resolveRopeWithFunction const): (JSC::JSRopeString::resolveRope const): (JSC::JSRopeString::outOfMemory const): (JSC::JSString::toPrimitive const): (JSC::JSString::getPrimitiveNumber const): (JSC::JSString::toNumber const): (JSC::JSString::toObject const): (JSC::JSString::toThis): (JSC::JSString::getStringPropertyDescriptor): * runtime/JSString.h: (JSC::JSString::toIdentifier const): (JSC::JSString::toAtomString const): (JSC::JSString::toExistingAtomString const): (JSC::JSString::value const): (JSC::JSString::tryGetValue const): (JSC::JSString::getIndex): (JSC::jsSubstring): (JSC::jsStringWithCache): (JSC::JSString::getStringPropertySlot): (JSC::JSRopeString::unsafeView const): (JSC::JSRopeString::viewWithUnderlyingString const): (JSC::JSString::unsafeView const): (JSC::JSString::viewWithUnderlyingString const): (JSC::JSValue::toBoolean const): (JSC::JSValue::toString const): (JSC::JSValue::toStringOrNull const): (JSC::JSValue::toWTFString const): * runtime/JSStringInlines.h: (JSC::JSString::equal const): (JSC::jsMakeNontrivialString): (JSC::repeatCharacter): * runtime/JSStringIterator.cpp: (JSC::JSStringIterator::iteratedValue const): (JSC::JSStringIterator::clone): * runtime/JSStringIterator.h: * runtime/JSStringJoiner.cpp: (JSC::JSStringJoiner::joinedLength const): (JSC::JSStringJoiner::join): * runtime/JSStringJoiner.h: (JSC::JSStringJoiner::JSStringJoiner): (JSC::JSStringJoiner::appendWithoutSideEffects): (JSC::JSStringJoiner::append): * runtime/JSSymbolTableObject.cpp: (JSC::JSSymbolTableObject::deleteProperty): (JSC::JSSymbolTableObject::getOwnNonIndexPropertyNames): * runtime/JSSymbolTableObject.h: (JSC::symbolTablePut): (JSC::symbolTablePutTouchWatchpointSet): (JSC::symbolTablePutInvalidateWatchpointSet): * runtime/JSTemplateObjectDescriptor.cpp: (JSC::JSTemplateObjectDescriptor::createTemplateObject): * runtime/JSTemplateObjectDescriptor.h: * runtime/JSTypedArrayViewConstructor.cpp: (JSC::constructTypedArrayView): * runtime/JSTypedArrayViewPrototype.cpp: (JSC::typedArrayViewPrivateFuncLength): (JSC::typedArrayViewProtoFuncSet): (JSC::typedArrayViewProtoFuncCopyWithin): (JSC::typedArrayViewProtoFuncIncludes): (JSC::typedArrayViewProtoFuncLastIndexOf): (JSC::typedArrayViewProtoFuncIndexOf): (JSC::typedArrayViewProtoFuncJoin): (JSC::typedArrayViewProtoGetterFuncBuffer): (JSC::typedArrayViewProtoGetterFuncLength): (JSC::typedArrayViewProtoGetterFuncByteLength): (JSC::typedArrayViewProtoGetterFuncByteOffset): (JSC::typedArrayViewProtoFuncReverse): (JSC::typedArrayViewPrivateFuncSubarrayCreate): (JSC::typedArrayViewProtoFuncSlice): * runtime/JSTypedArrays.cpp: (JSC::createUint8TypedArray): * runtime/JSTypedArrays.h: * runtime/JSWeakMap.cpp: (JSC::JSWeakMap::toStringName): * runtime/JSWeakMap.h: * runtime/JSWeakObjectRef.cpp: (JSC::JSWeakObjectRef::toStringName): * runtime/JSWeakObjectRef.h: * runtime/JSWeakSet.cpp: (JSC::JSWeakSet::toStringName): * runtime/JSWeakSet.h: * runtime/LiteralParser.cpp: (JSC::LiteralParser<CharType>::tryJSONPParse): (JSC::LiteralParser<CharType>::makeIdentifier): (JSC::LiteralParser<CharType>::parse): * runtime/LiteralParser.h: (JSC::LiteralParser::LiteralParser): * runtime/Lookup.h: (JSC::putEntry): (JSC::lookupPut): (JSC::nonCachingStaticFunctionGetter): * runtime/MapConstructor.cpp: (JSC::callMap): (JSC::constructMap): * runtime/MapPrototype.cpp: (JSC::getMap): (JSC::mapProtoFuncClear): (JSC::mapProtoFuncDelete): (JSC::mapProtoFuncGet): (JSC::mapProtoFuncHas): (JSC::mapProtoFuncSet): (JSC::mapProtoFuncSize): * runtime/MathObject.cpp: (JSC::mathProtoFuncAbs): (JSC::mathProtoFuncACos): (JSC::mathProtoFuncASin): (JSC::mathProtoFuncATan): (JSC::mathProtoFuncATan2): (JSC::mathProtoFuncCeil): (JSC::mathProtoFuncClz32): (JSC::mathProtoFuncCos): (JSC::mathProtoFuncExp): (JSC::mathProtoFuncFloor): (JSC::mathProtoFuncHypot): (JSC::mathProtoFuncLog): (JSC::mathProtoFuncMax): (JSC::mathProtoFuncMin): (JSC::mathProtoFuncPow): (JSC::mathProtoFuncRound): (JSC::mathProtoFuncSign): (JSC::mathProtoFuncSin): (JSC::mathProtoFuncSqrt): (JSC::mathProtoFuncTan): (JSC::mathProtoFuncIMul): (JSC::mathProtoFuncACosh): (JSC::mathProtoFuncASinh): (JSC::mathProtoFuncATanh): (JSC::mathProtoFuncCbrt): (JSC::mathProtoFuncCosh): (JSC::mathProtoFuncExpm1): (JSC::mathProtoFuncFround): (JSC::mathProtoFuncLog1p): (JSC::mathProtoFuncLog10): (JSC::mathProtoFuncLog2): (JSC::mathProtoFuncSinh): (JSC::mathProtoFuncTanh): (JSC::mathProtoFuncTrunc): * runtime/Microtask.h: * runtime/ModuleProgramExecutable.cpp: (JSC::ModuleProgramExecutable::ModuleProgramExecutable): (JSC::ModuleProgramExecutable::create): * runtime/ModuleProgramExecutable.h: * runtime/NativeErrorConstructor.cpp: (JSC::NativeErrorConstructor<errorType>::constructNativeErrorConstructor): (JSC::NativeErrorConstructor<errorType>::callNativeErrorConstructor): * runtime/NullSetterFunction.cpp: (JSC::callerIsStrict): (JSC::NullSetterFunctionInternal::callReturnUndefined): * runtime/NumberConstructor.cpp: (JSC::constructNumberConstructor): (JSC::callNumberConstructor): * runtime/NumberObject.cpp: (JSC::constructNumber): * runtime/NumberObject.h: * runtime/NumberPrototype.cpp: (JSC::throwVMToThisNumberError): (JSC::numberProtoFuncToExponential): (JSC::numberProtoFuncToFixed): (JSC::numberProtoFuncToPrecision): (JSC::numberProtoFuncToString): (JSC::numberProtoFuncToLocaleString): (JSC::numberProtoFuncValueOf): (JSC::extractToStringRadixArgument): * runtime/NumberPrototype.h: * runtime/ObjectConstructor.cpp: (JSC::constructObjectWithNewTarget): (JSC::constructWithObjectConstructor): (JSC::callObjectConstructor): (JSC::objectConstructorGetPrototypeOf): (JSC::objectConstructorSetPrototypeOf): (JSC::objectConstructorGetOwnPropertyDescriptor): (JSC::objectConstructorGetOwnPropertyDescriptors): (JSC::objectConstructorGetOwnPropertyNames): (JSC::objectConstructorGetOwnPropertySymbols): (JSC::objectConstructorKeys): (JSC::objectConstructorAssign): (JSC::objectConstructorValues): (JSC::toPropertyDescriptor): (JSC::objectConstructorDefineProperty): (JSC::defineProperties): (JSC::objectConstructorDefineProperties): (JSC::objectConstructorCreate): (JSC::setIntegrityLevel): (JSC::testIntegrityLevel): (JSC::objectConstructorSeal): (JSC::objectConstructorFreeze): (JSC::objectConstructorPreventExtensions): (JSC::objectConstructorIsSealed): (JSC::objectConstructorIsFrozen): (JSC::objectConstructorIsExtensible): (JSC::objectConstructorIs): (JSC::ownPropertyKeys): * runtime/ObjectConstructor.h: (JSC::constructEmptyObject): (JSC::constructObject): (JSC::constructObjectFromPropertyDescriptor): * runtime/ObjectPrototype.cpp: (JSC::objectProtoFuncValueOf): (JSC::objectProtoFuncHasOwnProperty): (JSC::objectProtoFuncIsPrototypeOf): (JSC::objectProtoFuncDefineGetter): (JSC::objectProtoFuncDefineSetter): (JSC::objectProtoFuncLookupGetter): (JSC::objectProtoFuncLookupSetter): (JSC::objectProtoFuncPropertyIsEnumerable): (JSC::objectProtoFuncToLocaleString): (JSC::objectProtoFuncToString): * runtime/Operations.cpp: (JSC::JSValue::equalSlowCase): (JSC::JSValue::strictEqualSlowCase): (JSC::jsAddSlowCase): (JSC::jsTypeStringForValue): (JSC::jsIsObjectTypeOrNull): (JSC::normalizePrototypeChain): * runtime/Operations.h: (JSC::jsString): (JSC::jsStringFromRegisterArray): (JSC::bigIntCompare): (JSC::toPrimitiveNumeric): (JSC::jsLess): (JSC::jsLessEq): (JSC::jsAddNonNumber): (JSC::jsAdd): (JSC::jsSub): (JSC::jsMul): (JSC::jsStringFromArguments): Deleted. * runtime/ParseInt.h: (JSC::toStringView): * runtime/ProgramExecutable.cpp: (JSC::ProgramExecutable::ProgramExecutable): (JSC::hasRestrictedGlobalProperty): (JSC::ProgramExecutable::initializeGlobalProperties): * runtime/ProgramExecutable.h: * runtime/PropertyDescriptor.cpp: (JSC::PropertyDescriptor::slowGetterSetter): (JSC::PropertyDescriptor::equalTo const): * runtime/PropertyDescriptor.h: * runtime/PropertySlot.cpp: (JSC::PropertySlot::functionGetter const): (JSC::PropertySlot::customGetter const): (JSC::PropertySlot::customAccessorGetter const): * runtime/PropertySlot.h: (JSC::PropertySlot::getValue const): * runtime/ProxyConstructor.cpp: (JSC::makeRevocableProxy): (JSC::proxyRevocableConstructorThrowError): (JSC::constructProxyObject): (JSC::callProxy): * runtime/ProxyConstructor.h: * runtime/ProxyObject.cpp: (JSC::ProxyObject::toStringName): (JSC::ProxyObject::finishCreation): (JSC::performProxyGet): (JSC::ProxyObject::performGet): (JSC::ProxyObject::performInternalMethodGetOwnProperty): (JSC::ProxyObject::performHasProperty): (JSC::ProxyObject::getOwnPropertySlotCommon): (JSC::ProxyObject::getOwnPropertySlot): (JSC::ProxyObject::getOwnPropertySlotByIndex): (JSC::ProxyObject::performPut): (JSC::ProxyObject::put): (JSC::ProxyObject::putByIndexCommon): (JSC::ProxyObject::putByIndex): (JSC::performProxyCall): (JSC::performProxyConstruct): (JSC::ProxyObject::performDelete): (JSC::ProxyObject::deleteProperty): (JSC::ProxyObject::deletePropertyByIndex): (JSC::ProxyObject::performPreventExtensions): (JSC::ProxyObject::preventExtensions): (JSC::ProxyObject::performIsExtensible): (JSC::ProxyObject::isExtensible): (JSC::ProxyObject::performDefineOwnProperty): (JSC::ProxyObject::defineOwnProperty): (JSC::ProxyObject::performGetOwnPropertyNames): (JSC::ProxyObject::getOwnPropertyNames): (JSC::ProxyObject::getPropertyNames): (JSC::ProxyObject::getOwnNonIndexPropertyNames): (JSC::ProxyObject::getStructurePropertyNames): (JSC::ProxyObject::getGenericPropertyNames): (JSC::ProxyObject::performSetPrototype): (JSC::ProxyObject::setPrototype): (JSC::ProxyObject::performGetPrototype): (JSC::ProxyObject::getPrototype): * runtime/ProxyObject.h: * runtime/PutPropertySlot.h: * runtime/ReflectObject.cpp: (JSC::reflectObjectConstruct): (JSC::reflectObjectDefineProperty): (JSC::reflectObjectGet): (JSC::reflectObjectGetOwnPropertyDescriptor): (JSC::reflectObjectGetPrototypeOf): (JSC::reflectObjectIsExtensible): (JSC::reflectObjectOwnKeys): (JSC::reflectObjectPreventExtensions): (JSC::reflectObjectSet): (JSC::reflectObjectSetPrototypeOf): * runtime/RegExp.h: * runtime/RegExpCachedResult.cpp: (JSC::RegExpCachedResult::lastResult): (JSC::RegExpCachedResult::leftContext): (JSC::RegExpCachedResult::rightContext): (JSC::RegExpCachedResult::setInput): * runtime/RegExpCachedResult.h: * runtime/RegExpConstructor.cpp: (JSC::regExpConstructorDollar): (JSC::regExpConstructorInput): (JSC::regExpConstructorMultiline): (JSC::regExpConstructorLastMatch): (JSC::regExpConstructorLastParen): (JSC::regExpConstructorLeftContext): (JSC::regExpConstructorRightContext): (JSC::setRegExpConstructorInput): (JSC::setRegExpConstructorMultiline): (JSC::getRegExpStructure): (JSC::toFlags): (JSC::regExpCreate): (JSC::constructRegExp): (JSC::esSpecRegExpCreate): (JSC::constructWithRegExpConstructor): (JSC::callRegExpConstructor): * runtime/RegExpConstructor.h: (JSC::isRegExp): * runtime/RegExpGlobalData.cpp: (JSC::RegExpGlobalData::getBackref): (JSC::RegExpGlobalData::getLastParen): (JSC::RegExpGlobalData::getLeftContext): (JSC::RegExpGlobalData::getRightContext): * runtime/RegExpGlobalData.h: * runtime/RegExpGlobalDataInlines.h: (JSC::RegExpGlobalData::setInput): * runtime/RegExpInlines.h: (JSC::RegExp::matchInline): * runtime/RegExpMatchesArray.h: (JSC::createRegExpMatchesArray): * runtime/RegExpObject.cpp: (JSC::RegExpObject::getOwnPropertySlot): (JSC::RegExpObject::deleteProperty): (JSC::RegExpObject::getOwnNonIndexPropertyNames): (JSC::RegExpObject::getPropertyNames): (JSC::RegExpObject::getGenericPropertyNames): (JSC::RegExpObject::defineOwnProperty): (JSC::regExpObjectSetLastIndexStrict): (JSC::regExpObjectSetLastIndexNonStrict): (JSC::RegExpObject::put): (JSC::RegExpObject::exec): (JSC::RegExpObject::match): (JSC::RegExpObject::matchGlobal): * runtime/RegExpObject.h: * runtime/RegExpObjectInlines.h: (JSC::getRegExpObjectLastIndexAsUnsigned): (JSC::RegExpObject::execInline): (JSC::RegExpObject::matchInline): (JSC::collectMatches): * runtime/RegExpPrototype.cpp: (JSC::regExpProtoFuncTestFast): (JSC::regExpProtoFuncExec): (JSC::regExpProtoFuncMatchFast): (JSC::regExpProtoFuncCompile): (JSC::flagsString): (JSC::regExpProtoFuncToString): (JSC::regExpProtoGetterGlobal): (JSC::regExpProtoGetterIgnoreCase): (JSC::regExpProtoGetterMultiline): (JSC::regExpProtoGetterDotAll): (JSC::regExpProtoGetterSticky): (JSC::regExpProtoGetterUnicode): (JSC::regExpProtoGetterFlags): (JSC::regExpProtoGetterSourceInternal): (JSC::regExpProtoGetterSource): (JSC::regExpProtoFuncSearchFast): (JSC::regExpProtoFuncSplitFast): * runtime/SamplingProfiler.cpp: (JSC::FrameWalker::FrameWalker): (JSC::FrameWalker::isValidFramePointer): (JSC::CFrameWalker::CFrameWalker): (JSC::SamplingProfiler::takeSample): (JSC::SamplingProfiler::StackFrame::nameFromCallee): * runtime/ScopedArguments.cpp: (JSC::ScopedArguments::createByCopying): (JSC::ScopedArguments::copyToArguments): * runtime/ScopedArguments.h: * runtime/ScriptExecutable.cpp: (JSC::ScriptExecutable::newCodeBlockFor): (JSC::ScriptExecutable::prepareForExecutionImpl): (JSC::ScriptExecutable::createTemplateObject): * runtime/ScriptExecutable.h: * runtime/SetConstructor.cpp: (JSC::callSet): (JSC::constructSet): * runtime/SetPrototype.cpp: (JSC::getSet): (JSC::setProtoFuncAdd): (JSC::setProtoFuncClear): (JSC::setProtoFuncDelete): (JSC::setProtoFuncHas): (JSC::setProtoFuncSize): * runtime/SimpleTypedArrayController.cpp: (JSC::SimpleTypedArrayController::toJS): * runtime/SimpleTypedArrayController.h: * runtime/SparseArrayValueMap.cpp: (JSC::SparseArrayValueMap::putEntry): (JSC::SparseArrayValueMap::putDirect): (JSC::SparseArrayEntry::put): * runtime/SparseArrayValueMap.h: * runtime/StrictEvalActivation.cpp: (JSC::StrictEvalActivation::deleteProperty): * runtime/StrictEvalActivation.h: * runtime/StringConstructor.cpp: (JSC::stringFromCharCode): (JSC::stringFromCodePoint): (JSC::constructWithStringConstructor): (JSC::stringConstructor): (JSC::callStringConstructor): * runtime/StringConstructor.h: * runtime/StringObject.cpp: (JSC::StringObject::getOwnPropertySlot): (JSC::StringObject::getOwnPropertySlotByIndex): (JSC::StringObject::put): (JSC::StringObject::putByIndex): (JSC::isStringOwnProperty): (JSC::StringObject::defineOwnProperty): (JSC::StringObject::deleteProperty): (JSC::StringObject::deletePropertyByIndex): (JSC::StringObject::getOwnPropertyNames): (JSC::StringObject::getOwnNonIndexPropertyNames): * runtime/StringObject.h: (JSC::jsStringWithReuse): (JSC::jsSubstring): * runtime/StringPrototype.cpp: (JSC::substituteBackreferencesSlow): (JSC::jsSpliceSubstrings): (JSC::jsSpliceSubstringsWithSeparators): (JSC::removeUsingRegExpSearch): (JSC::replaceUsingRegExpSearch): (JSC::operationStringProtoFuncReplaceRegExpEmptyStr): (JSC::operationStringProtoFuncReplaceRegExpString): (JSC::replaceUsingStringSearch): (JSC::stringProtoFuncRepeatCharacter): (JSC::replace): (JSC::stringProtoFuncReplaceUsingRegExp): (JSC::stringProtoFuncReplaceUsingStringSearch): (JSC::operationStringProtoFuncReplaceGeneric): (JSC::stringProtoFuncToString): (JSC::stringProtoFuncCharAt): (JSC::stringProtoFuncCharCodeAt): (JSC::stringProtoFuncCodePointAt): (JSC::stringProtoFuncIndexOf): (JSC::stringProtoFuncLastIndexOf): (JSC::stringProtoFuncSlice): (JSC::splitStringByOneCharacterImpl): (JSC::stringProtoFuncSplitFast): (JSC::stringProtoFuncSubstrImpl): (JSC::stringProtoFuncSubstring): (JSC::stringProtoFuncToLowerCase): (JSC::stringProtoFuncToUpperCase): (JSC::stringProtoFuncLocaleCompare): (JSC::toLocaleCase): (JSC::stringProtoFuncToLocaleUpperCase): (JSC::trimString): (JSC::stringProtoFuncTrim): (JSC::stringProtoFuncTrimStart): (JSC::stringProtoFuncTrimEnd): (JSC::stringProtoFuncStartsWith): (JSC::stringProtoFuncEndsWith): (JSC::stringIncludesImpl): (JSC::stringProtoFuncIncludes): (JSC::builtinStringIncludesInternal): (JSC::stringProtoFuncIterator): (JSC::normalize): (JSC::stringProtoFuncNormalize): * runtime/StringPrototype.h: * runtime/StringPrototypeInlines.h: (JSC::stringSlice): * runtime/StringRecursionChecker.cpp: (JSC::StringRecursionChecker::throwStackOverflowError): (JSC::StringRecursionChecker::emptyString): * runtime/StringRecursionChecker.h: (JSC::StringRecursionChecker::performCheck): (JSC::StringRecursionChecker::StringRecursionChecker): (JSC::StringRecursionChecker::~StringRecursionChecker): * runtime/Structure.h: * runtime/StructureInlines.h: (JSC::Structure::prototypeChain const): (JSC::Structure::setObjectToStringValue): * runtime/StructureRareData.cpp: (JSC::StructureRareData::setObjectToStringValue): * runtime/StructureRareData.h: * runtime/Symbol.cpp: (JSC::Symbol::toPrimitive const): (JSC::Symbol::getPrimitiveNumber const): (JSC::Symbol::toObject const): (JSC::Symbol::toNumber const): * runtime/Symbol.h: * runtime/SymbolConstructor.cpp: (JSC::callSymbol): (JSC::symbolConstructorFor): (JSC::symbolConstructorKeyFor): * runtime/SymbolObject.cpp: (JSC::SymbolObject::toStringName): (JSC::SymbolObject::defaultValue): * runtime/SymbolObject.h: * runtime/SymbolPrototype.cpp: (JSC::symbolProtoGetterDescription): (JSC::symbolProtoFuncToString): (JSC::symbolProtoFuncValueOf): * runtime/TestRunnerUtils.cpp: (JSC::failNextNewCodeBlock): (JSC::numberOfDFGCompiles): (JSC::setNeverInline): (JSC::setNeverOptimize): (JSC::setCannotUseOSRExitFuzzing): (JSC::optimizeNextInvocation): * runtime/TestRunnerUtils.h: * runtime/ThrowScope.cpp: (JSC::ThrowScope::throwException): * runtime/ThrowScope.h: (JSC::ThrowScope::throwException): (JSC::throwException): * runtime/ToNativeFromValue.h: (JSC::toNativeFromValue): * runtime/TypeError.h: (JSC::typeError): * runtime/TypedArrayController.h: * runtime/VM.cpp: (JSC::VM::throwException): (JSC::VM::callPromiseRejectionCallback): (JSC::QueuedTask::run): (JSC::VM::deprecatedVMEntryGlobalObject const): (JSC::VM::vmEntryGlobalObject const): Deleted. * runtime/VM.h: (JSC::VM::addressOfCallFrameForCatch): (JSC::VM::handleTraps): * runtime/VMEntryScope.cpp: (JSC::VMEntryScope::VMEntryScope): * runtime/VMEntryScope.h: * runtime/VMTraps.cpp: (JSC::VMTraps::invalidateCodeBlocksOnStack): (JSC::VMTraps::handleTraps): * runtime/VMTraps.h: (JSC::VMTraps::invalidateCodeBlocksOnStack): * runtime/Watchdog.cpp: (JSC::Watchdog::shouldTerminate): * runtime/Watchdog.h: * runtime/WeakMapConstructor.cpp: (JSC::callWeakMap): (JSC::constructWeakMap): * runtime/WeakMapPrototype.cpp: (JSC::getWeakMap): (JSC::protoFuncWeakMapDelete): (JSC::protoFuncWeakMapGet): (JSC::protoFuncWeakMapHas): (JSC::protoFuncWeakMapSet): * runtime/WeakObjectRefConstructor.cpp: (JSC::callWeakRef): (JSC::constructWeakRef): * runtime/WeakObjectRefPrototype.cpp: (JSC::getWeakRef): (JSC::protoFuncWeakRefDeref): * runtime/WeakSetConstructor.cpp: (JSC::callWeakSet): (JSC::constructWeakSet): * runtime/WeakSetPrototype.cpp: (JSC::getWeakSet): (JSC::protoFuncWeakSetDelete): (JSC::protoFuncWeakSetHas): (JSC::protoFuncWeakSetAdd): * tools/JSDollarVM.cpp: (JSC::JSDollarVMCallFrame::create): (JSC::JSDollarVMCallFrame::finishCreation): (JSC::ImpureGetter::getOwnPropertySlot): (JSC::CustomGetter::getOwnPropertySlot): (JSC::CustomGetter::customGetter): (JSC::CustomGetter::customGetterAcessor): (JSC::RuntimeArray::create): (JSC::RuntimeArray::getOwnPropertySlot): (JSC::RuntimeArray::getOwnPropertySlotByIndex): (JSC::RuntimeArray::put): (JSC::RuntimeArray::deleteProperty): (JSC::RuntimeArray::finishCreation): (JSC::RuntimeArray::RuntimeArray): (JSC::RuntimeArray::lengthGetter): (JSC::testStaticAccessorGetter): (JSC::testStaticAccessorPutter): (JSC::StaticCustomAccessor::getOwnPropertySlot): (JSC::DOMJITGetter::DOMJITAttribute::slowCall): (JSC::DOMJITGetter::DOMJITAttribute::callDOMGetter): (JSC::DOMJITGetter::customGetter): (JSC::DOMJITGetterComplex::DOMJITAttribute::slowCall): (JSC::DOMJITGetterComplex::DOMJITAttribute::callDOMGetter): (JSC::DOMJITGetterComplex::customGetter): (JSC::DOMJITFunctionObject::functionWithTypeCheck): (JSC::DOMJITFunctionObject::functionWithoutTypeCheck): (JSC::DOMJITCheckSubClassObject::functionWithTypeCheck): (JSC::DOMJITCheckSubClassObject::functionWithoutTypeCheck): (JSC::DOMJITGetterBaseJSObject::DOMJITAttribute::slowCall): (JSC::DOMJITGetterBaseJSObject::DOMJITAttribute::callDOMGetter): (JSC::DOMJITGetterBaseJSObject::customGetter): (JSC::customGetAccessor): (JSC::customGetValue): (JSC::customSetAccessor): (JSC::customSetValue): (JSC::functionWasmStreamingParserAddBytes): (JSC::functionBreakpoint): (JSC::functionGC): (JSC::functionEdenGC): (JSC::functionCallFrame): (JSC::functionCodeBlockForFrame): (JSC::codeBlockFromArg): (JSC::doPrint): (JSC::functionDumpCallFrame): (JSC::functionDumpStack): (JSC::functionCreateRuntimeArray): (JSC::functionSetImpureGetterDelegate): (JSC::functionCreateBuiltin): (JSC::functionGetPrivateProperty): (JSC::functionCreateElement): (JSC::functionGetHiddenValue): (JSC::functionSetHiddenValue): (JSC::functionShadowChickenFunctionsOnStack): (JSC::functionFindTypeForExpression): (JSC::functionReturnTypeFor): (JSC::functionHasBasicBlockExecuted): (JSC::functionBasicBlockExecutionCount): (JSC::changeDebuggerModeWhenIdle): (JSC::functionEnableDebuggerModeWhenIdle): (JSC::functionDisableDebuggerModeWhenIdle): (JSC::functionGetGetterSetter): (JSC::functionLoadGetterFromGetterSetter): * tools/VMInspector.cpp: (JSC::VMInspector::currentThreadOwnsJSLock): (JSC::ensureCurrentThreadOwnsJSLock): (JSC::VMInspector::gc): (JSC::VMInspector::edenGC): (JSC::VMInspector::isValidCodeBlock): (JSC::VMInspector::codeBlockForFrame): (JSC::VMInspector::dumpCallFrame): (JSC::VMInspector::dumpStack): * tools/VMInspector.h: * wasm/WasmCallingConvention.h: * wasm/WasmEmbedder.h: * wasm/WasmOperations.cpp: (JSC::Wasm::operationThrowBadI64): * wasm/WasmOperations.h: * wasm/js/JSToWasm.cpp: (JSC::Wasm::allocateResultsArray): * wasm/js/JSWebAssembly.cpp: (JSC::reject): (JSC::webAssemblyModuleValidateAsyncInternal): (JSC::webAssemblyCompileFunc): (JSC::resolve): (JSC::JSWebAssembly::webAssemblyModuleValidateAsync): (JSC::instantiate): (JSC::compileAndInstantiate): (JSC::JSWebAssembly::instantiate): (JSC::webAssemblyModuleInstantinateAsyncInternal): (JSC::JSWebAssembly::webAssemblyModuleInstantinateAsync): (JSC::webAssemblyInstantiateFunc): (JSC::webAssemblyValidateFunc): (JSC::webAssemblyCompileStreamingInternal): (JSC::webAssemblyInstantiateStreamingInternal): * wasm/js/JSWebAssembly.h: * wasm/js/JSWebAssemblyCompileError.cpp: (JSC::JSWebAssemblyCompileError::create): (JSC::createJSWebAssemblyCompileError): * wasm/js/JSWebAssemblyCompileError.h: * wasm/js/JSWebAssemblyHelpers.h: (JSC::toNonWrappingUint32): (JSC::getWasmBufferFromValue): (JSC::createSourceBufferFromValue): * wasm/js/JSWebAssemblyInstance.cpp: (JSC::JSWebAssemblyInstance::JSWebAssemblyInstance): (JSC::JSWebAssemblyInstance::finalizeCreation): (JSC::JSWebAssemblyInstance::create): * wasm/js/JSWebAssemblyInstance.h: * wasm/js/JSWebAssemblyLinkError.cpp: (JSC::JSWebAssemblyLinkError::create): (JSC::createJSWebAssemblyLinkError): * wasm/js/JSWebAssemblyLinkError.h: * wasm/js/JSWebAssemblyMemory.cpp: (JSC::JSWebAssemblyMemory::create): (JSC::JSWebAssemblyMemory::grow): * wasm/js/JSWebAssemblyMemory.h: * wasm/js/JSWebAssemblyModule.cpp: (JSC::JSWebAssemblyModule::createStub): * wasm/js/JSWebAssemblyModule.h: * wasm/js/JSWebAssemblyRuntimeError.cpp: (JSC::JSWebAssemblyRuntimeError::create): (JSC::createJSWebAssemblyRuntimeError): * wasm/js/JSWebAssemblyRuntimeError.h: * wasm/js/JSWebAssemblyTable.cpp: (JSC::JSWebAssemblyTable::create): * wasm/js/JSWebAssemblyTable.h: * wasm/js/WasmToJS.cpp: (JSC::Wasm::handleBadI64Use): (JSC::Wasm::wasmToJS): (JSC::Wasm::wasmToJSException): * wasm/js/WasmToJS.h: * wasm/js/WebAssemblyCompileErrorConstructor.cpp: (JSC::constructJSWebAssemblyCompileError): (JSC::callJSWebAssemblyCompileError): * wasm/js/WebAssemblyFunction.cpp: (JSC::callWebAssemblyFunction): * wasm/js/WebAssemblyInstanceConstructor.cpp: (JSC::constructJSWebAssemblyInstance): (JSC::callJSWebAssemblyInstance): * wasm/js/WebAssemblyInstanceConstructor.h: * wasm/js/WebAssemblyInstancePrototype.cpp: (JSC::getInstance): (JSC::webAssemblyInstanceProtoFuncExports): * wasm/js/WebAssemblyLinkErrorConstructor.cpp: (JSC::constructJSWebAssemblyLinkError): (JSC::callJSWebAssemblyLinkError): * wasm/js/WebAssemblyMemoryConstructor.cpp: (JSC::constructJSWebAssemblyMemory): (JSC::callJSWebAssemblyMemory): * wasm/js/WebAssemblyMemoryPrototype.cpp: (JSC::getMemory): (JSC::webAssemblyMemoryProtoFuncGrow): (JSC::webAssemblyMemoryProtoFuncBuffer): * wasm/js/WebAssemblyModuleConstructor.cpp: (JSC::webAssemblyModuleCustomSections): (JSC::webAssemblyModuleImports): (JSC::webAssemblyModuleExports): (JSC::constructJSWebAssemblyModule): (JSC::callJSWebAssemblyModule): (JSC::WebAssemblyModuleConstructor::createModule): * wasm/js/WebAssemblyModuleConstructor.h: * wasm/js/WebAssemblyModuleRecord.cpp: (JSC::WebAssemblyModuleRecord::create): (JSC::WebAssemblyModuleRecord::finishCreation): (JSC::WebAssemblyModuleRecord::link): (JSC::dataSegmentFail): (JSC::WebAssemblyModuleRecord::evaluate): * wasm/js/WebAssemblyModuleRecord.h: * wasm/js/WebAssemblyRuntimeErrorConstructor.cpp: (JSC::constructJSWebAssemblyRuntimeError): (JSC::callJSWebAssemblyRuntimeError): * wasm/js/WebAssemblyTableConstructor.cpp: (JSC::constructJSWebAssemblyTable): (JSC::callJSWebAssemblyTable): * wasm/js/WebAssemblyTablePrototype.cpp: (JSC::getTable): (JSC::webAssemblyTableProtoFuncLength): (JSC::webAssemblyTableProtoFuncGrow): (JSC::webAssemblyTableProtoFuncGet): (JSC::webAssemblyTableProtoFuncSet): * wasm/js/WebAssemblyWrapperFunction.cpp: (JSC::callWebAssemblyWrapperFunction): * yarr/YarrErrorCode.cpp: (JSC::Yarr::errorToThrow): * yarr/YarrErrorCode.h: Source/WebCore: This patch is changing ExecState* to JSGlobalObject*. We are using ExecState* (a.k.a. CallFrame*) as a useful way to access arguments, thisValue, and lexical JSGlobalObject*. But using `CallFrame*` to access lexical `JSGlobalObject*` is wrong: when a function is inlined, `CallFrame*` is pointing a CallFrame* of outer function. So if outer function's lexical JSGlobalObject is different from inlined one, we are getting wrong value. We had this bug so long and we are adhocly fixing some of them, but we have bunch of this type of bugs. In this patch, we explicitly pass lexical JSGlobalObject* so that we pass correct lexical JSGlobalObject* instead of just passing ExecState*. This fixes various issues. And furthermore, it cleans up code by decoupling JSGlobalObject* from CallFrame*. Now CallFrame* is really a CallFrame* and it is used only when we actually want to access CallFrame information. And this also removes many `ExecState::vm()` function calls. And we can just use `JSGlobalObject::vm()` calls instead. We had a ugly hack that we had restriction that all JSCallee needs to be non-large-allocation. This limitation is introduced to keep `ExecState::vm()` fast. But this limitation now becomes major obstacle to introduce IsoSubspace optimization, and this problem prevents us from putting all JSCells into IsoSubspace. This patch paves the way to putting all JSCells into IsoSubspace by removing the above restriction. * Modules/applepay/ApplePaySession.cpp: (WebCore::ApplePaySession::completeMerchantValidation): * Modules/applepay/ApplePaySession.h: * Modules/applepay/ApplePaySession.idl: * Modules/applepay/PaymentMerchantSession.h: * Modules/applepay/cocoa/PaymentMerchantSessionCocoa.mm: (WebCore::PaymentMerchantSession::fromJS): * Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp: (WebCore::ApplePayPaymentHandler::computeTotalAndLineItems const): (WebCore::toJSDictionary): (WebCore::ApplePayPaymentHandler::didAuthorizePayment): (WebCore::ApplePayPaymentHandler::didSelectPaymentMethod): * Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp: (WebCore::ClipboardItemBindingsDataSource::getType): * Modules/encryptedmedia/MediaKeyStatusMap.cpp: (WebCore::MediaKeyStatusMap::get): * Modules/encryptedmedia/MediaKeyStatusMap.h: * Modules/encryptedmedia/MediaKeyStatusMap.idl: * Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp: (WebCore::CDMSessionClearKey::update): * Modules/fetch/FetchBody.idl: * Modules/fetch/FetchBodyOwner.cpp: (WebCore::FetchBodyOwner::readableStream): (WebCore::FetchBodyOwner::createReadableStream): * Modules/fetch/FetchBodyOwner.h: * Modules/fetch/FetchResponse.h: * Modules/indexeddb/IDBCursor.cpp: (WebCore::IDBCursor::update): (WebCore::IDBCursor::continuePrimaryKey): (WebCore::IDBCursor::continueFunction): (WebCore::IDBCursor::deleteFunction): * Modules/indexeddb/IDBCursor.h: * Modules/indexeddb/IDBCursor.idl: * Modules/indexeddb/IDBFactory.cpp: (WebCore::IDBFactory::cmp): * Modules/indexeddb/IDBFactory.h: * Modules/indexeddb/IDBFactory.idl: * Modules/indexeddb/IDBIndex.cpp: (WebCore::IDBIndex::doOpenCursor): (WebCore::IDBIndex::openCursor): (WebCore::IDBIndex::doOpenKeyCursor): (WebCore::IDBIndex::openKeyCursor): (WebCore::IDBIndex::count): (WebCore::IDBIndex::doCount): (WebCore::IDBIndex::get): (WebCore::IDBIndex::doGet): (WebCore::IDBIndex::getKey): (WebCore::IDBIndex::doGetKey): (WebCore::IDBIndex::doGetAll): (WebCore::IDBIndex::getAll): (WebCore::IDBIndex::doGetAllKeys): (WebCore::IDBIndex::getAllKeys): * Modules/indexeddb/IDBIndex.h: * Modules/indexeddb/IDBIndex.idl: * Modules/indexeddb/IDBKeyRange.cpp: (WebCore::IDBKeyRange::only): (WebCore::IDBKeyRange::lowerBound): (WebCore::IDBKeyRange::upperBound): (WebCore::IDBKeyRange::bound): (WebCore::IDBKeyRange::includes): * Modules/indexeddb/IDBKeyRange.h: * Modules/indexeddb/IDBKeyRange.idl: * Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::doOpenCursor): (WebCore::IDBObjectStore::openCursor): (WebCore::IDBObjectStore::doOpenKeyCursor): (WebCore::IDBObjectStore::openKeyCursor): (WebCore::IDBObjectStore::get): (WebCore::IDBObjectStore::getKey): (WebCore::IDBObjectStore::add): (WebCore::IDBObjectStore::put): (WebCore::IDBObjectStore::putForCursorUpdate): (WebCore::IDBObjectStore::putOrAdd): (WebCore::IDBObjectStore::deleteFunction): (WebCore::IDBObjectStore::doDelete): (WebCore::IDBObjectStore::clear): (WebCore::IDBObjectStore::createIndex): (WebCore::IDBObjectStore::count): (WebCore::IDBObjectStore::doCount): (WebCore::IDBObjectStore::doGetAll): (WebCore::IDBObjectStore::getAll): (WebCore::IDBObjectStore::doGetAllKeys): (WebCore::IDBObjectStore::getAllKeys): * Modules/indexeddb/IDBObjectStore.h: * Modules/indexeddb/IDBObjectStore.idl: * Modules/indexeddb/IDBTransaction.cpp: (WebCore::IDBTransaction::requestOpenCursor): (WebCore::IDBTransaction::doRequestOpenCursor): (WebCore::IDBTransaction::requestGetAllObjectStoreRecords): (WebCore::IDBTransaction::requestGetAllIndexRecords): (WebCore::IDBTransaction::requestGetRecord): (WebCore::IDBTransaction::requestGetValue): (WebCore::IDBTransaction::requestGetKey): (WebCore::IDBTransaction::requestIndexRecord): (WebCore::IDBTransaction::requestCount): (WebCore::IDBTransaction::requestDeleteRecord): (WebCore::IDBTransaction::requestClearObjectStore): (WebCore::IDBTransaction::requestPutOrAdd): * Modules/indexeddb/IDBTransaction.h: * Modules/indexeddb/server/IDBSerializationContext.cpp: (WebCore::IDBServer::IDBSerializationContext::execState): * Modules/indexeddb/server/IDBSerializationContext.h: * Modules/mediastream/RTCPeerConnection.cpp: (WebCore::certificateTypeFromAlgorithmIdentifier): (WebCore::RTCPeerConnection::generateCertificate): * Modules/mediastream/RTCPeerConnection.h: * Modules/mediastream/RTCPeerConnection.idl: * Modules/paymentrequest/PaymentMethodChangeEvent.h: * Modules/paymentrequest/PaymentRequest.cpp: (WebCore::checkAndCanonicalizeDetails): * Modules/paymentrequest/PaymentResponse.h: * Modules/plugins/QuickTimePluginReplacement.mm: (WebCore::QuickTimePluginReplacement::ensureReplacementScriptInjected): (WebCore::QuickTimePluginReplacement::installReplacement): (WebCore::JSQuickTimePluginReplacement::timedMetaData const): (WebCore::JSQuickTimePluginReplacement::accessLog const): (WebCore::JSQuickTimePluginReplacement::errorLog const): * Modules/webgpu/WebGPUDevice.cpp: (WebCore::WebGPUDevice::createBufferMapped const): * Modules/webgpu/WebGPUDevice.h: * Modules/webgpu/WebGPUDevice.idl: * animation/Animatable.idl: * animation/KeyframeEffect.cpp: (WebCore::processKeyframeLikeObject): (WebCore::processIterableKeyframes): (WebCore::processPropertyIndexedKeyframes): (WebCore::KeyframeEffect::create): (WebCore::KeyframeEffect::getKeyframes): (WebCore::KeyframeEffect::setKeyframes): (WebCore::KeyframeEffect::processKeyframes): (WebCore::KeyframeEffect::animationDidSeek): * animation/KeyframeEffect.h: * animation/KeyframeEffect.idl: * bindings/js/DOMPromiseProxy.h: (WebCore::DOMPromiseProxy<IDLType>::promise): (WebCore::DOMPromiseProxy<IDLVoid>::promise): (WebCore::DOMPromiseProxyWithResolveCallback<IDLType>::promise): * bindings/js/DOMWrapperWorld.h: (WebCore::currentWorld): (WebCore::isWorldCompatible): * bindings/js/IDBBindingUtilities.cpp: (WebCore::get): (WebCore::set): (WebCore::toJS): (WebCore::createIDBKeyFromValue): (WebCore::getNthValueOnKeyPath): (WebCore::internalCreateIDBKeyFromScriptValueAndKeyPath): (WebCore::ensureNthValueOnKeyPath): (WebCore::canInjectNthValueOnKeyPath): (WebCore::injectIDBKeyIntoScriptValue): (WebCore::maybeCreateIDBKeyFromScriptValueAndKeyPath): (WebCore::canInjectIDBKeyIntoScriptValue): (WebCore::deserializeIDBValueToJSValue): (WebCore::scriptValueToIDBKey): (WebCore::createKeyPathArray): (WebCore::generateIndexKeyForValue): (WebCore::deserializeIDBValueWithKeyInjection): * bindings/js/IDBBindingUtilities.h: * bindings/js/JSAnimationEffectCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSAnimationTimelineCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSAuthenticatorResponseCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSBasicCredentialCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSBlobCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSCSSRuleCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSCallbackData.cpp: (WebCore::JSCallbackData::invokeCallback): * bindings/js/JSCustomElementInterface.cpp: (WebCore::JSCustomElementInterface::tryToConstructCustomElement): (WebCore::constructCustomElementSynchronously): (WebCore::JSCustomElementInterface::upgradeElement): (WebCore::JSCustomElementInterface::invokeCallback): (WebCore::JSCustomElementInterface::invokeAdoptedCallback): (WebCore::JSCustomElementInterface::invokeAttributeChangedCallback): * bindings/js/JSCustomElementInterface.h: (WebCore::JSCustomElementInterface::invokeCallback): * bindings/js/JSCustomElementRegistryCustom.cpp: (WebCore::getCustomElementCallback): (WebCore::validateCustomElementNameAndThrowIfNeeded): (WebCore::JSCustomElementRegistry::define): (WebCore::whenDefinedPromise): (WebCore::JSCustomElementRegistry::whenDefined): * bindings/js/JSCustomEventCustom.cpp: (WebCore::JSCustomEvent::detail const): * bindings/js/JSCustomXPathNSResolver.cpp: (WebCore::JSCustomXPathNSResolver::create): (WebCore::JSCustomXPathNSResolver::lookupNamespaceURI): * bindings/js/JSCustomXPathNSResolver.h: * bindings/js/JSDOMAbstractOperations.h: (WebCore::isVisibleNamedProperty): (WebCore::accessVisibleNamedProperty): * bindings/js/JSDOMAttribute.h: (WebCore::IDLAttribute::set): (WebCore::IDLAttribute::setStatic): (WebCore::IDLAttribute::get): (WebCore::IDLAttribute::getStatic): (WebCore::AttributeSetter::call): * bindings/js/JSDOMBindingSecurity.cpp: (WebCore::canAccessDocument): (WebCore::BindingSecurity::shouldAllowAccessToFrame): (WebCore::BindingSecurity::shouldAllowAccessToDOMWindow): (WebCore::BindingSecurity::shouldAllowAccessToNode): * bindings/js/JSDOMBindingSecurity.h: (WebCore::BindingSecurity::checkSecurityForNode): * bindings/js/JSDOMBuiltinConstructor.h: (WebCore::JSDOMBuiltinConstructor<JSClass>::callConstructor): (WebCore::JSDOMBuiltinConstructor<JSClass>::construct): * bindings/js/JSDOMBuiltinConstructorBase.cpp: (WebCore::JSDOMBuiltinConstructorBase::callFunctionWithCurrentArguments): * bindings/js/JSDOMBuiltinConstructorBase.h: * bindings/js/JSDOMConstructorBase.cpp: (WebCore::callThrowTypeError): (WebCore::JSDOMConstructorBase::toStringName): * bindings/js/JSDOMConstructorBase.h: * bindings/js/JSDOMConstructorNotConstructable.h: (WebCore::JSDOMConstructorNotConstructable::callThrowTypeError): * bindings/js/JSDOMConvertAny.h: (WebCore::Converter<IDLAny>::convert): (WebCore::VariadicConverter<IDLAny>::convert): * bindings/js/JSDOMConvertBase.h: (WebCore::DefaultExceptionThrower::operator()): (WebCore::convert): (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/js/JSDOMConvertBoolean.h: (WebCore::Converter<IDLBoolean>::convert): * bindings/js/JSDOMConvertBufferSource.h: (WebCore::toJS): (WebCore::Detail::BufferSourceConverter::convert): (WebCore::Converter<IDLArrayBuffer>::convert): (WebCore::JSConverter<IDLArrayBuffer>::convert): (WebCore::Converter<IDLDataView>::convert): (WebCore::JSConverter<IDLDataView>::convert): (WebCore::Converter<IDLInt8Array>::convert): (WebCore::JSConverter<IDLInt8Array>::convert): (WebCore::Converter<IDLInt16Array>::convert): (WebCore::JSConverter<IDLInt16Array>::convert): (WebCore::Converter<IDLInt32Array>::convert): (WebCore::JSConverter<IDLInt32Array>::convert): (WebCore::Converter<IDLUint8Array>::convert): (WebCore::JSConverter<IDLUint8Array>::convert): (WebCore::Converter<IDLUint16Array>::convert): (WebCore::JSConverter<IDLUint16Array>::convert): (WebCore::Converter<IDLUint32Array>::convert): (WebCore::JSConverter<IDLUint32Array>::convert): (WebCore::Converter<IDLUint8ClampedArray>::convert): (WebCore::JSConverter<IDLUint8ClampedArray>::convert): (WebCore::Converter<IDLFloat32Array>::convert): (WebCore::JSConverter<IDLFloat32Array>::convert): (WebCore::Converter<IDLFloat64Array>::convert): (WebCore::JSConverter<IDLFloat64Array>::convert): (WebCore::Converter<IDLArrayBufferView>::convert): (WebCore::JSConverter<IDLArrayBufferView>::convert): * bindings/js/JSDOMConvertCallbacks.h: (WebCore::Converter<IDLCallbackFunction<T>>::convert): (WebCore::Converter<IDLCallbackInterface<T>>::convert): * bindings/js/JSDOMConvertDate.cpp: (WebCore::jsDate): (WebCore::valueToDate): * bindings/js/JSDOMConvertDate.h: (WebCore::Converter<IDLDate>::convert): (WebCore::JSConverter<IDLDate>::convert): * bindings/js/JSDOMConvertDictionary.h: (WebCore::Converter<IDLDictionary<T>>::convert): (WebCore::JSConverter<IDLDictionary<T>>::convert): * bindings/js/JSDOMConvertEnumeration.h: (WebCore::Converter<IDLEnumeration<T>>::convert): (WebCore::JSConverter<IDLEnumeration<T>>::convert): * bindings/js/JSDOMConvertEventListener.h: (WebCore::Converter<IDLEventListener<T>>::convert): * bindings/js/JSDOMConvertIndexedDB.h: (WebCore::JSConverter<IDLIDBKey>::convert): (WebCore::JSConverter<IDLIDBKeyData>::convert): (WebCore::JSConverter<IDLIDBValue>::convert): * bindings/js/JSDOMConvertInterface.h: (WebCore::JSToWrappedOverloader::toWrapped): (WebCore::Converter<IDLInterface<T>>::convert): (WebCore::JSConverter<IDLInterface<T>>::convert): (WebCore::JSConverter<IDLInterface<T>>::convertNewlyCreated): (WebCore::VariadicConverter<IDLInterface<T>>::convert): * bindings/js/JSDOMConvertJSON.h: (WebCore::Converter<IDLJSON>::convert): (WebCore::JSConverter<IDLJSON>::convert): * bindings/js/JSDOMConvertNull.h: (WebCore::Converter<IDLNull>::convert): * bindings/js/JSDOMConvertNullable.h: (WebCore::Converter<IDLNullable<T>>::convert): (WebCore::JSConverter<IDLNullable<T>>::convert): (WebCore::JSConverter<IDLNullable<T>>::convertNewlyCreated): * bindings/js/JSDOMConvertNumbers.cpp: (WebCore::enforceRange): (WebCore::toSmallerInt): (WebCore::toSmallerUInt): (WebCore::convertToIntegerEnforceRange<int8_t>): (WebCore::convertToIntegerEnforceRange<uint8_t>): (WebCore::convertToIntegerClamp<int8_t>): (WebCore::convertToIntegerClamp<uint8_t>): (WebCore::convertToInteger<int8_t>): (WebCore::convertToInteger<uint8_t>): (WebCore::convertToIntegerEnforceRange<int16_t>): (WebCore::convertToIntegerEnforceRange<uint16_t>): (WebCore::convertToIntegerClamp<int16_t>): (WebCore::convertToIntegerClamp<uint16_t>): (WebCore::convertToInteger<int16_t>): (WebCore::convertToInteger<uint16_t>): (WebCore::convertToIntegerEnforceRange<int32_t>): (WebCore::convertToIntegerEnforceRange<uint32_t>): (WebCore::convertToIntegerClamp<int32_t>): (WebCore::convertToIntegerClamp<uint32_t>): (WebCore::convertToInteger<int32_t>): (WebCore::convertToInteger<uint32_t>): (WebCore::convertToIntegerEnforceRange<int64_t>): (WebCore::convertToIntegerEnforceRange<uint64_t>): (WebCore::convertToIntegerClamp<int64_t>): (WebCore::convertToIntegerClamp<uint64_t>): (WebCore::convertToInteger<int64_t>): (WebCore::convertToInteger<uint64_t>): * bindings/js/JSDOMConvertNumbers.h: (WebCore::Converter<IDLByte>::convert): (WebCore::Converter<IDLOctet>::convert): (WebCore::Converter<IDLShort>::convert): (WebCore::Converter<IDLUnsignedShort>::convert): (WebCore::Converter<IDLLong>::convert): (WebCore::Converter<IDLUnsignedLong>::convert): (WebCore::Converter<IDLLongLong>::convert): (WebCore::Converter<IDLUnsignedLongLong>::convert): (WebCore::Converter<IDLClampAdaptor<T>>::convert): (WebCore::Converter<IDLEnforceRangeAdaptor<T>>::convert): (WebCore::Converter<IDLFloat>::convert): (WebCore::Converter<IDLUnrestrictedFloat>::convert): (WebCore::Converter<IDLDouble>::convert): (WebCore::Converter<IDLUnrestrictedDouble>::convert): * bindings/js/JSDOMConvertObject.h: (WebCore::Converter<IDLObject>::convert): * bindings/js/JSDOMConvertPromise.h: (WebCore::Converter<IDLPromise<T>>::convert): (WebCore::JSConverter<IDLPromise<T>>::convert): * bindings/js/JSDOMConvertRecord.h: (WebCore::Detail::IdentifierConverter<IDLDOMString>::convert): (WebCore::Detail::IdentifierConverter<IDLByteString>::convert): (WebCore::Detail::IdentifierConverter<IDLUSVString>::convert): * bindings/js/JSDOMConvertScheduledAction.h: (WebCore::Converter<IDLScheduledAction>::convert): * bindings/js/JSDOMConvertSequences.h: (WebCore::Detail::GenericSequenceConverter::convert): (WebCore::Detail::NumericSequenceConverter::convertArray): (WebCore::Detail::NumericSequenceConverter::convert): (WebCore::Detail::SequenceConverter::convertArray): (WebCore::Detail::SequenceConverter::convert): (WebCore::Detail::SequenceConverter<IDLLong>::convert): (WebCore::Detail::SequenceConverter<IDLFloat>::convert): (WebCore::Detail::SequenceConverter<IDLUnrestrictedFloat>::convert): (WebCore::Detail::SequenceConverter<IDLDouble>::convert): (WebCore::Detail::SequenceConverter<IDLUnrestrictedDouble>::convert): (WebCore::Converter<IDLSequence<T>>::convert): (WebCore::JSConverter<IDLSequence<T>>::convert): (WebCore::Converter<IDLFrozenArray<T>>::convert): (WebCore::JSConverter<IDLFrozenArray<T>>::convert): * bindings/js/JSDOMConvertSerializedScriptValue.h: (WebCore::Converter<IDLSerializedScriptValue<T>>::convert): (WebCore::JSConverter<IDLSerializedScriptValue<T>>::convert): * bindings/js/JSDOMConvertStrings.cpp: (WebCore::stringToByteString): (WebCore::identifierToByteString): (WebCore::valueToByteString): (WebCore::identifierToUSVString): (WebCore::valueToUSVString): * bindings/js/JSDOMConvertStrings.h: (WebCore::Converter<IDLDOMString>::convert): (WebCore::JSConverter<IDLDOMString>::convert): (WebCore::Converter<IDLByteString>::convert): (WebCore::JSConverter<IDLByteString>::convert): (WebCore::Converter<IDLUSVString>::convert): (WebCore::JSConverter<IDLUSVString>::convert): (WebCore::Converter<IDLTreatNullAsEmptyAdaptor<T>>::convert): (WebCore::JSConverter<IDLTreatNullAsEmptyAdaptor<T>>::convert): (WebCore::Converter<IDLAtomStringAdaptor<T>>::convert): (WebCore::JSConverter<IDLAtomStringAdaptor<T>>::convert): (WebCore::Converter<IDLRequiresExistingAtomStringAdaptor<T>>::convert): (WebCore::JSConverter<IDLRequiresExistingAtomStringAdaptor<T>>::convert): * bindings/js/JSDOMConvertUnion.h: * bindings/js/JSDOMConvertVariadic.h: (WebCore::VariadicConverter::convert): (WebCore::convertVariadicArguments): * bindings/js/JSDOMConvertWebGL.cpp: (WebCore::convertToJSValue): * bindings/js/JSDOMConvertWebGL.h: (WebCore::convertToJSValue): (WebCore::JSConverter<IDLWebGLAny>::convert): (WebCore::JSConverter<IDLWebGLExtension>::convert): * bindings/js/JSDOMConvertXPathNSResolver.h: (WebCore::Converter<IDLXPathNSResolver<T>>::convert): (WebCore::JSConverter<IDLXPathNSResolver<T>>::convert): (WebCore::JSConverter<IDLXPathNSResolver<T>>::convertNewlyCreated): * bindings/js/JSDOMExceptionHandling.cpp: (WebCore::reportException): (WebCore::retrieveErrorMessage): (WebCore::reportCurrentException): (WebCore::createDOMException): (WebCore::propagateExceptionSlowPath): (WebCore::throwTypeError): (WebCore::throwNotSupportedError): (WebCore::throwInvalidStateError): (WebCore::throwSecurityError): (WebCore::throwArgumentMustBeEnumError): (WebCore::throwArgumentMustBeFunctionError): (WebCore::throwArgumentTypeError): (WebCore::throwAttributeTypeError): (WebCore::throwRequiredMemberTypeError): (WebCore::throwConstructorScriptExecutionContextUnavailableError): (WebCore::throwSequenceTypeError): (WebCore::throwNonFiniteTypeError): (WebCore::throwGetterTypeError): (WebCore::rejectPromiseWithGetterTypeError): (WebCore::throwSetterTypeError): (WebCore::throwThisTypeError): (WebCore::rejectPromiseWithThisTypeError): (WebCore::throwDOMSyntaxError): (WebCore::throwDataCloneError): * bindings/js/JSDOMExceptionHandling.h: (WebCore::propagateException): * bindings/js/JSDOMGlobalObject.cpp: (WebCore::makeThisTypeErrorForBuiltins): (WebCore::makeGetterTypeErrorForBuiltins): (WebCore::JSDOMGlobalObject::promiseRejectionTracker): (WebCore::callerGlobalObject): * bindings/js/JSDOMGlobalObject.h: * bindings/js/JSDOMGlobalObjectTask.cpp: * bindings/js/JSDOMIterator.cpp: (WebCore::addValueIterableMethods): * bindings/js/JSDOMIterator.h: (WebCore::jsPair): (WebCore::IteratorTraits>::asJS): (WebCore::appendForEachArguments): (WebCore::iteratorForEach): (WebCore::IteratorTraits>::next): * bindings/js/JSDOMMapLike.cpp: (WebCore::getBackingMap): (WebCore::createBackingMap): (WebCore::forwardAttributeGetterToBackingMap): (WebCore::forwardFunctionCallToBackingMap): (WebCore::forwardForEachCallToBackingMap): * bindings/js/JSDOMMapLike.h: (WebCore::DOMMapLike::set): (WebCore::synchronizeBackingMap): (WebCore::forwardSizeToMapLike): (WebCore::forwardEntriesToMapLike): (WebCore::forwardKeysToMapLike): (WebCore::forwardValuesToMapLike): (WebCore::forwardClearToMapLike): (WebCore::forwardForEachToMapLike): (WebCore::forwardGetToMapLike): (WebCore::forwardHasToMapLike): (WebCore::forwardAddToMapLike): (WebCore::forwardDeleteToMapLike): * bindings/js/JSDOMOperation.h: (WebCore::IDLOperation::call): (WebCore::IDLOperation::callStatic): * bindings/js/JSDOMOperationReturningPromise.h: (WebCore::IDLOperationReturningPromise::call): (WebCore::IDLOperationReturningPromise::callReturningOwnPromise): (WebCore::IDLOperationReturningPromise::callStatic): (WebCore::IDLOperationReturningPromise::callStaticReturningOwnPromise): * bindings/js/JSDOMPromise.cpp: (WebCore::callFunction): (WebCore::DOMPromise::whenPromiseIsSettled): (WebCore::DOMPromise::result const): (WebCore::DOMPromise::status const): * bindings/js/JSDOMPromiseDeferred.cpp: (WebCore::DeferredPromise::callFunction): (WebCore::DeferredPromise::reject): (WebCore::rejectPromiseWithExceptionIfAny): (WebCore::createDeferredPromise): (WebCore::createRejectedPromiseWithTypeError): (WebCore::parseAsJSON): (WebCore::fulfillPromiseWithJSON): (WebCore::fulfillPromiseWithArrayBuffer): * bindings/js/JSDOMPromiseDeferred.h: (WebCore::DeferredPromise::create): (WebCore::DeferredPromise::resolve): (WebCore::DeferredPromise::resolveWithNewlyCreated): (WebCore::DeferredPromise::resolveCallbackValueWithNewlyCreated): (WebCore::DeferredPromise::reject): (WebCore::DeferredPromise::resolveWithCallback): (WebCore::DeferredPromise::rejectWithCallback): (WebCore::callPromiseFunction): (WebCore::bindingPromiseFunctionAdapter): * bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::updateDocument): (WebCore::shouldInterruptScriptToPreventInfiniteRecursionWhenClosingPage): (WebCore::toJS): (WebCore::incumbentDOMWindow): (WebCore::activeDOMWindow): (WebCore::firstDOMWindow): (WebCore::responsibleDocument): (WebCore::JSDOMWindowBase::moduleLoaderResolve): (WebCore::JSDOMWindowBase::moduleLoaderFetch): (WebCore::JSDOMWindowBase::moduleLoaderEvaluate): (WebCore::JSDOMWindowBase::moduleLoaderImportModule): (WebCore::JSDOMWindowBase::moduleLoaderCreateImportMetaProperties): (WebCore::tryAllocate): (WebCore::isResponseCorrect): (WebCore::handleResponseOnStreamingAction): (WebCore::JSDOMWindowBase::compileStreaming): (WebCore::JSDOMWindowBase::instantiateStreaming): * bindings/js/JSDOMWindowBase.h: (WebCore::toJS): * bindings/js/JSDOMWindowCustom.cpp: (WebCore::jsDOMWindowWebKit): (WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess): (WebCore::JSDOMWindow::getOwnPropertySlot): (WebCore::JSDOMWindow::getOwnPropertySlotByIndex): (WebCore::JSDOMWindow::doPutPropertySecurityCheck): (WebCore::JSDOMWindow::put): (WebCore::JSDOMWindow::putByIndex): (WebCore::JSDOMWindow::deleteProperty): (WebCore::JSDOMWindow::deletePropertyByIndex): (WebCore::addCrossOriginOwnPropertyNames): (WebCore::addScopedChildrenIndexes): (WebCore::JSDOMWindow::getOwnPropertyNames): (WebCore::JSDOMWindow::defineOwnProperty): (WebCore::JSDOMWindow::getPrototype): (WebCore::JSDOMWindow::preventExtensions): (WebCore::JSDOMWindow::toStringName): (WebCore::JSDOMWindow::event const): (WebCore::DialogHandler::DialogHandler): (WebCore::DialogHandler::dialogCreated): (WebCore::DialogHandler::returnValue const): (WebCore::JSDOMWindow::showModalDialog): (WebCore::JSDOMWindow::queueMicrotask): (WebCore::JSDOMWindow::setOpener): (WebCore::JSDOMWindow::self const): (WebCore::JSDOMWindow::window const): (WebCore::JSDOMWindow::frames const): (WebCore::jsDOMWindowInstanceFunctionOpenDatabaseBody): (WebCore::IDLOperation<JSDOMWindow>::cast): (WebCore::jsDOMWindowInstanceFunctionOpenDatabase): (WebCore::JSDOMWindow::openDatabase const): (WebCore::JSDOMWindow::setOpenDatabase): * bindings/js/JSDOMWindowCustom.h: * bindings/js/JSDOMWindowProperties.cpp: (WebCore::jsDOMWindowPropertiesGetOwnPropertySlotNamedItemGetter): (WebCore::JSDOMWindowProperties::getOwnPropertySlot): (WebCore::JSDOMWindowProperties::getOwnPropertySlotByIndex): * bindings/js/JSDOMWindowProperties.h: * bindings/js/JSDOMWrapper.cpp: (WebCore::cloneAcrossWorlds): * bindings/js/JSDOMWrapper.h: * bindings/js/JSDOMWrapperCache.h: (WebCore::deprecatedGlobalObjectForPrototype): (WebCore::deprecatedGetDOMStructure): (WebCore::wrap): * bindings/js/JSDeprecatedCSSOMValueCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSDocumentCustom.cpp: (WebCore::createNewDocumentWrapper): (WebCore::cachedDocumentWrapper): (WebCore::reportMemoryForDocumentIfFrameless): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSDocumentCustom.h: * bindings/js/JSDocumentFragmentCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSElementCustom.cpp: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/js/JSErrorHandler.cpp: (WebCore::JSErrorHandler::handleEvent): * bindings/js/JSErrorHandler.h: (WebCore::createJSErrorHandler): * bindings/js/JSEventCustom.cpp: (WebCore::toJS): * bindings/js/JSEventListener.cpp: (WebCore::JSEventListener::handleEvent): (WebCore::createEventListenerForEventHandlerAttribute): (WebCore::setEventHandlerAttribute): (WebCore::setWindowEventHandlerAttribute): (WebCore::setDocumentEventHandlerAttribute): * bindings/js/JSEventListener.h: * bindings/js/JSEventTargetCustom.h: (WebCore::IDLOperation<JSEventTarget>::call): * bindings/js/JSExecState.cpp: (WebCore::JSExecState::didLeaveScriptContext): (WebCore::functionCallHandlerFromAnyThread): (WebCore::evaluateHandlerFromAnyThread): * bindings/js/JSExecState.h: (WebCore::JSExecState::currentState): (WebCore::JSExecState::call): (WebCore::JSExecState::evaluate): (WebCore::JSExecState::profiledCall): (WebCore::JSExecState::profiledEvaluate): (WebCore::JSExecState::runTask): (WebCore::JSExecState::loadModule): (WebCore::JSExecState::linkAndEvaluateModule): (WebCore::JSExecState::JSExecState): (WebCore::JSExecState::~JSExecState): (WebCore::JSExecState::setCurrentState): * bindings/js/JSExtendableMessageEventCustom.cpp: (WebCore::constructJSExtendableMessageEvent): (WebCore::JSExtendableMessageEvent::data const): * bindings/js/JSFileSystemEntryCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSHTMLCollectionCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSHTMLDocumentCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSHTMLElementCustom.cpp: (WebCore::constructJSHTMLElement): (WebCore::JSHTMLElement::pushEventHandlerScope const): * bindings/js/JSHistoryCustom.cpp: (WebCore::JSHistory::state const): * bindings/js/JSIDBCursorCustom.cpp: (WebCore::JSIDBCursor::key const): (WebCore::JSIDBCursor::primaryKey const): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSIDBCursorWithValueCustom.cpp: (WebCore::JSIDBCursorWithValue::value const): * bindings/js/JSIDBRequestCustom.cpp: (WebCore::JSIDBRequest::result const): * bindings/js/JSImageDataCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSLazyEventListener.cpp: (WebCore::JSLazyEventListener::initializeJSFunction const): * bindings/js/JSLocationCustom.cpp: (WebCore::getOwnPropertySlotCommon): (WebCore::JSLocation::getOwnPropertySlot): (WebCore::JSLocation::getOwnPropertySlotByIndex): (WebCore::putCommon): (WebCore::JSLocation::doPutPropertySecurityCheck): (WebCore::JSLocation::put): (WebCore::JSLocation::putByIndex): (WebCore::JSLocation::deleteProperty): (WebCore::JSLocation::deletePropertyByIndex): (WebCore::JSLocation::getOwnPropertyNames): (WebCore::JSLocation::defineOwnProperty): (WebCore::JSLocation::getPrototype): (WebCore::JSLocation::preventExtensions): (WebCore::JSLocation::toStringName): (WebCore::JSLocationPrototype::put): (WebCore::JSLocationPrototype::defineOwnProperty): * bindings/js/JSMediaStreamTrackCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSMessageEventCustom.cpp: (WebCore::JSMessageEvent::ports const): (WebCore::JSMessageEvent::data const): * bindings/js/JSMicrotaskCallback.h: (WebCore::JSMicrotaskCallback::call): * bindings/js/JSNodeCustom.cpp: (WebCore::JSNode::pushEventHandlerScope const): (WebCore::createWrapperInline): (WebCore::createWrapper): (WebCore::toJSNewlyCreated): (WebCore::willCreatePossiblyOrphanedTreeByRemovalSlowCase): * bindings/js/JSNodeCustom.h: (WebCore::toJS): (WebCore::JSNode::nodeType const): * bindings/js/JSNodeListCustom.cpp: (WebCore::toJSNewlyCreated): * bindings/js/JSNodeListCustom.h: (WebCore::toJS): * bindings/js/JSPaymentMethodChangeEventCustom.cpp: (WebCore::JSPaymentMethodChangeEvent::methodDetails const): * bindings/js/JSPaymentResponseCustom.cpp: (WebCore::JSPaymentResponse::details const): * bindings/js/JSPerformanceEntryCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSPluginElementFunctions.cpp: (WebCore::pluginScriptObject): (WebCore::pluginElementPropertyGetter): (WebCore::pluginElementCustomGetOwnPropertySlot): (WebCore::pluginElementCustomPut): (WebCore::callPlugin): * bindings/js/JSPluginElementFunctions.h: * bindings/js/JSPopStateEventCustom.cpp: (WebCore::JSPopStateEvent::state const): * bindings/js/JSReadableStreamSourceCustom.cpp: (WebCore::JSReadableStreamSource::start): (WebCore::JSReadableStreamSource::pull): (WebCore::JSReadableStreamSource::controller const): * bindings/js/JSRemoteDOMWindowCustom.cpp: (WebCore::JSRemoteDOMWindow::getOwnPropertySlot): (WebCore::JSRemoteDOMWindow::getOwnPropertySlotByIndex): (WebCore::JSRemoteDOMWindow::put): (WebCore::JSRemoteDOMWindow::putByIndex): (WebCore::JSRemoteDOMWindow::deleteProperty): (WebCore::JSRemoteDOMWindow::deletePropertyByIndex): (WebCore::JSRemoteDOMWindow::getOwnPropertyNames): (WebCore::JSRemoteDOMWindow::defineOwnProperty): (WebCore::JSRemoteDOMWindow::getPrototype): (WebCore::JSRemoteDOMWindow::preventExtensions): (WebCore::JSRemoteDOMWindow::toStringName): * bindings/js/JSSVGPathSegCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSServiceWorkerClientCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSStyleSheetCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSTextCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSTextTrackCueCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSTrackCustom.cpp: (WebCore::toJS): * bindings/js/JSTrackCustom.h: * bindings/js/JSTypedOMCSSStyleValueCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSValueInWrappedObject.h: (WebCore::cachedPropertyValue): * bindings/js/JSWebAnimationCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): (WebCore::constructJSWebAnimation): * bindings/js/JSWindowProxy.cpp: (WebCore::toJS): * bindings/js/JSWindowProxy.h: (WebCore::toJS): * bindings/js/JSWorkerGlobalScopeBase.cpp: (WebCore::toJS): * bindings/js/JSWorkerGlobalScopeBase.h: (WebCore::toJS): * bindings/js/JSWorkerGlobalScopeCustom.cpp: (WebCore::JSWorkerGlobalScope::queueMicrotask): * bindings/js/JSWorkletGlobalScopeBase.cpp: (WebCore::toJS): * bindings/js/JSWorkletGlobalScopeBase.h: (WebCore::toJS): * bindings/js/JSXMLDocumentCustom.cpp: (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/js/JSXMLHttpRequestCustom.cpp: (WebCore::JSXMLHttpRequest::response const): * bindings/js/JSXPathNSResolverCustom.cpp: (WebCore::JSXPathNSResolver::toWrapped): * bindings/js/ReadableStream.cpp: (WebCore::ReadableStream::create): (WebCore::ReadableStreamInternal::callFunction): (WebCore::ReadableStream::pipeTo): (WebCore::ReadableStream::tee): (WebCore::ReadableStream::lock): (WebCore::checkReadableStream): (WebCore::ReadableStream::isDisturbed): * bindings/js/ReadableStream.h: (WebCore::JSReadableStreamWrapperConverter::toWrapped): (WebCore::toJS): * bindings/js/ReadableStreamDefaultController.cpp: (WebCore::readableStreamCallFunction): (WebCore::ReadableStreamDefaultController::invoke): * bindings/js/ReadableStreamDefaultController.h: (WebCore::ReadableStreamDefaultController::close): (WebCore::ReadableStreamDefaultController::error): (WebCore::ReadableStreamDefaultController::enqueue): (WebCore::ReadableStreamDefaultController::globalExec const): Deleted. * bindings/js/ScheduledAction.cpp: (WebCore::ScheduledAction::executeFunctionInContext): * bindings/js/ScriptController.cpp: (WebCore::ScriptController::evaluateInWorld): (WebCore::ScriptController::loadModuleScriptInWorld): (WebCore::ScriptController::linkAndEvaluateModuleScriptInWorld): (WebCore::ScriptController::evaluateModule): (WebCore::jsValueToModuleKey): (WebCore::ScriptController::setupModuleScriptHandlers): (WebCore::ScriptController::canAccessFromCurrentOrigin): (WebCore::ScriptController::collectIsolatedContexts): (WebCore::ScriptController::jsObjectForPluginElement): (WebCore::ScriptController::executeIfJavaScriptURL): * bindings/js/ScriptController.h: * bindings/js/ScriptControllerMac.mm: (WebCore::ScriptController::javaScriptContext): * bindings/js/ScriptModuleLoader.cpp: (WebCore::ScriptModuleLoader::resolve): (WebCore::rejectToPropagateNetworkError): (WebCore::ScriptModuleLoader::fetch): (WebCore::ScriptModuleLoader::moduleURL): (WebCore::ScriptModuleLoader::evaluate): (WebCore::rejectPromise): (WebCore::ScriptModuleLoader::importModule): (WebCore::ScriptModuleLoader::createImportMetaProperties): (WebCore::ScriptModuleLoader::notifyFinished): * bindings/js/ScriptModuleLoader.h: * bindings/js/ScriptState.cpp: (WebCore::domWindowFromExecState): (WebCore::frameFromExecState): (WebCore::scriptExecutionContextFromExecState): (WebCore::mainWorldExecState): (WebCore::execStateFromNode): (WebCore::execStateFromPage): (WebCore::execStateFromWorkerGlobalScope): (WebCore::execStateFromWorkletGlobalScope): * bindings/js/ScriptState.h: * bindings/js/SerializedScriptValue.cpp: (WebCore::CloneBase::CloneBase): (WebCore::CloneBase::shouldTerminate): (WebCore::wrapCryptoKey): (WebCore::unwrapCryptoKey): (WebCore::CloneSerializer::serialize): (WebCore::CloneSerializer::CloneSerializer): (WebCore::CloneSerializer::fillTransferMap): (WebCore::CloneSerializer::getProperty): (WebCore::CloneSerializer::toJSArrayBuffer): (WebCore::CloneSerializer::dumpArrayBufferView): (WebCore::CloneSerializer::dumpDOMPoint): (WebCore::CloneSerializer::dumpDOMRect): (WebCore::CloneSerializer::dumpDOMMatrix): (WebCore::CloneSerializer::dumpIfTerminal): (WebCore::CloneSerializer::write): (WebCore::CloneDeserializer::deserialize): (WebCore::CloneDeserializer::CachedString::jsString): (WebCore::CloneDeserializer::CloneDeserializer): (WebCore::CloneDeserializer::putProperty): (WebCore::CloneDeserializer::readArrayBufferView): (WebCore::CloneDeserializer::getJSValue): (WebCore::CloneDeserializer::readDOMPoint): (WebCore::CloneDeserializer::readDOMMatrix): (WebCore::CloneDeserializer::readDOMRect): (WebCore::CloneDeserializer::readDOMQuad): (WebCore::CloneDeserializer::readRTCCertificate): (WebCore::CloneDeserializer::readTerminal): (WebCore::maybeThrowExceptionIfSerializationFailed): (WebCore::SerializedScriptValue::create): (WebCore::SerializedScriptValue::deserialize): * bindings/js/SerializedScriptValue.h: * bindings/js/StructuredClone.cpp: (WebCore::cloneArrayBufferImpl): (WebCore::structuredCloneArrayBufferView): * bindings/js/StructuredClone.h: * bindings/js/WebCoreTypedArrayController.cpp: (WebCore::WebCoreTypedArrayController::toJS): * bindings/js/WebCoreTypedArrayController.h: * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::evaluate): (WebCore::WorkerScriptController::setException): (WebCore::WorkerScriptController::scheduleExecutionTermination): (WebCore::WorkerScriptController::attachDebugger): (WebCore::WorkerScriptController::detachDebugger): * bindings/scripts/CodeGeneratorJS.pm: (GenerateGetOwnPropertySlot): (GenerateGetOwnPropertySlotByIndex): (GenerateGetOwnPropertyNames): (GenerateInvokeIndexedPropertySetter): (GenerateInvokeNamedPropertySetter): (GeneratePut): (GeneratePutByIndex): (GenerateDefineOwnProperty): (GenerateDeletePropertyCommon): (GenerateDeleteProperty): (GenerateDeletePropertyByIndex): (GetArgumentExceptionFunction): (GetArgumentExceptionThrower): (GetAttributeExceptionFunction): (GetAttributeExceptionThrower): (AddAdditionalArgumentsForImplementationCall): (GenerateEnumerationImplementationContent): (GenerateEnumerationHeaderContent): (GenerateDefaultValue): (GenerateDictionaryHeaderContent): (GenerateDictionaryImplementationContent): (GenerateHeader): (GenerateOverloadDispatcher): (addUnscopableProperties): (GenerateImplementation): (GenerateAttributeGetterBodyDefinition): (GenerateAttributeGetterTrampolineDefinition): (GenerateAttributeSetterBodyDefinition): (GenerateAttributeSetterTrampolineDefinition): (GenerateOperationTrampolineDefinition): (GenerateOperationBodyDefinition): (GenerateOperationDefinition): (GenerateSerializerDefinition): (GenerateLegacyCallerDefinitions): (GenerateLegacyCallerDefinition): (GenerateCallWithUsingReferences): (GenerateCallWithUsingPointers): (GenerateConstructorCallWithUsingPointers): (GenerateCallWith): (GenerateArgumentsCountCheck): (GenerateParametersCheck): (GenerateCallbackImplementationContent): (GenerateImplementationFunctionCall): (GenerateImplementationCustomFunctionCall): (GenerateIterableDefinition): (JSValueToNative): (ToNativeForFunctionWithoutTypeCheck): (NativeToJSValueDOMConvertNeedsState): (NativeToJSValueDOMConvertNeedsGlobalObject): (NativeToJSValueUsingReferences): (NativeToJSValueUsingPointers): (NativeToJSValue): (GeneratePrototypeDeclaration): (GenerateConstructorDefinitions): (GenerateConstructorDefinition): (GenerateConstructorHelperMethods): * bindings/scripts/test/JS/JSInterfaceName.cpp: (WebCore::jsInterfaceNameConstructor): (WebCore::setJSInterfaceNameConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSInterfaceName.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSMapLike.cpp: (WebCore::JSMapLike::finishCreation): (WebCore::IDLAttribute<JSMapLike>::cast): (WebCore::IDLOperation<JSMapLike>::cast): (WebCore::jsMapLikeConstructor): (WebCore::setJSMapLikeConstructor): (WebCore::jsMapLikeSizeGetter): (WebCore::jsMapLikeSize): (WebCore::jsMapLikePrototypeFunctionGetBody): (WebCore::jsMapLikePrototypeFunctionGet): (WebCore::jsMapLikePrototypeFunctionHasBody): (WebCore::jsMapLikePrototypeFunctionHas): (WebCore::jsMapLikePrototypeFunctionEntriesBody): (WebCore::jsMapLikePrototypeFunctionEntries): (WebCore::jsMapLikePrototypeFunctionKeysBody): (WebCore::jsMapLikePrototypeFunctionKeys): (WebCore::jsMapLikePrototypeFunctionValuesBody): (WebCore::jsMapLikePrototypeFunctionValues): (WebCore::jsMapLikePrototypeFunctionForEachBody): (WebCore::jsMapLikePrototypeFunctionForEach): (WebCore::jsMapLikePrototypeFunctionAddBody): (WebCore::jsMapLikePrototypeFunctionAdd): (WebCore::jsMapLikePrototypeFunctionClearBody): (WebCore::jsMapLikePrototypeFunctionClear): (WebCore::jsMapLikePrototypeFunctionDeleteBody): (WebCore::jsMapLikePrototypeFunctionDelete): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSMapLike.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp: (WebCore::JSReadOnlyMapLike::finishCreation): (WebCore::IDLAttribute<JSReadOnlyMapLike>::cast): (WebCore::IDLOperation<JSReadOnlyMapLike>::cast): (WebCore::jsReadOnlyMapLikeConstructor): (WebCore::setJSReadOnlyMapLikeConstructor): (WebCore::jsReadOnlyMapLikeSizeGetter): (WebCore::jsReadOnlyMapLikeSize): (WebCore::jsReadOnlyMapLikePrototypeFunctionGetBody): (WebCore::jsReadOnlyMapLikePrototypeFunctionGet): (WebCore::jsReadOnlyMapLikePrototypeFunctionHasBody): (WebCore::jsReadOnlyMapLikePrototypeFunctionHas): (WebCore::jsReadOnlyMapLikePrototypeFunctionEntriesBody): (WebCore::jsReadOnlyMapLikePrototypeFunctionEntries): (WebCore::jsReadOnlyMapLikePrototypeFunctionKeysBody): (WebCore::jsReadOnlyMapLikePrototypeFunctionKeys): (WebCore::jsReadOnlyMapLikePrototypeFunctionValuesBody): (WebCore::jsReadOnlyMapLikePrototypeFunctionValues): (WebCore::jsReadOnlyMapLikePrototypeFunctionForEachBody): (WebCore::jsReadOnlyMapLikePrototypeFunctionForEach): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSReadOnlyMapLike.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: (WebCore::IDLAttribute<JSTestActiveDOMObject>::cast): (WebCore::IDLOperation<JSTestActiveDOMObject>::cast): (WebCore::jsTestActiveDOMObjectConstructor): (WebCore::setJSTestActiveDOMObjectConstructor): (WebCore::jsTestActiveDOMObjectExcitingAttrGetter): (WebCore::jsTestActiveDOMObjectExcitingAttr): (WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunctionBody): (WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunction): (WebCore::jsTestActiveDOMObjectPrototypeFunctionPostMessageBody): (WebCore::jsTestActiveDOMObjectPrototypeFunctionPostMessage): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestActiveDOMObject.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestCEReactions.cpp: (WebCore::IDLAttribute<JSTestCEReactions>::cast): (WebCore::IDLOperation<JSTestCEReactions>::cast): (WebCore::jsTestCEReactionsConstructor): (WebCore::setJSTestCEReactionsConstructor): (WebCore::jsTestCEReactionsAttributeWithCEReactionsGetter): (WebCore::jsTestCEReactionsAttributeWithCEReactions): (WebCore::setJSTestCEReactionsAttributeWithCEReactionsSetter): (WebCore::setJSTestCEReactionsAttributeWithCEReactions): (WebCore::jsTestCEReactionsReflectAttributeWithCEReactionsGetter): (WebCore::jsTestCEReactionsReflectAttributeWithCEReactions): (WebCore::setJSTestCEReactionsReflectAttributeWithCEReactionsSetter): (WebCore::setJSTestCEReactionsReflectAttributeWithCEReactions): (WebCore::jsTestCEReactionsStringifierAttributeGetter): (WebCore::jsTestCEReactionsStringifierAttribute): (WebCore::setJSTestCEReactionsStringifierAttributeSetter): (WebCore::setJSTestCEReactionsStringifierAttribute): (WebCore::jsTestCEReactionsAttributeWithCEReactionsNotNeededGetter): (WebCore::jsTestCEReactionsAttributeWithCEReactionsNotNeeded): (WebCore::setJSTestCEReactionsAttributeWithCEReactionsNotNeededSetter): (WebCore::setJSTestCEReactionsAttributeWithCEReactionsNotNeeded): (WebCore::jsTestCEReactionsReflectAttributeWithCEReactionsNotNeededGetter): (WebCore::jsTestCEReactionsReflectAttributeWithCEReactionsNotNeeded): (WebCore::setJSTestCEReactionsReflectAttributeWithCEReactionsNotNeededSetter): (WebCore::setJSTestCEReactionsReflectAttributeWithCEReactionsNotNeeded): (WebCore::jsTestCEReactionsStringifierAttributeNotNeededGetter): (WebCore::jsTestCEReactionsStringifierAttributeNotNeeded): (WebCore::setJSTestCEReactionsStringifierAttributeNotNeededSetter): (WebCore::setJSTestCEReactionsStringifierAttributeNotNeeded): (WebCore::jsTestCEReactionsPrototypeFunctionMethodWithCEReactionsBody): (WebCore::jsTestCEReactionsPrototypeFunctionMethodWithCEReactions): (WebCore::jsTestCEReactionsPrototypeFunctionMethodWithCEReactionsNotNeededBody): (WebCore::jsTestCEReactionsPrototypeFunctionMethodWithCEReactionsNotNeeded): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestCEReactions.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: (WebCore::IDLAttribute<JSTestCEReactionsStringifier>::cast): (WebCore::IDLOperation<JSTestCEReactionsStringifier>::cast): (WebCore::jsTestCEReactionsStringifierConstructor): (WebCore::setJSTestCEReactionsStringifierConstructor): (WebCore::jsTestCEReactionsStringifierValueGetter): (WebCore::jsTestCEReactionsStringifierValue): (WebCore::setJSTestCEReactionsStringifierValueSetter): (WebCore::setJSTestCEReactionsStringifierValue): (WebCore::jsTestCEReactionsStringifierValueWithoutReactionsGetter): (WebCore::jsTestCEReactionsStringifierValueWithoutReactions): (WebCore::setJSTestCEReactionsStringifierValueWithoutReactionsSetter): (WebCore::setJSTestCEReactionsStringifierValueWithoutReactions): (WebCore::jsTestCEReactionsStringifierPrototypeFunctionToStringBody): (WebCore::jsTestCEReactionsStringifierPrototypeFunctionToString): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestCEReactionsStringifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestCallTracer.cpp: (WebCore::IDLAttribute<JSTestCallTracer>::cast): (WebCore::IDLOperation<JSTestCallTracer>::cast): (WebCore::jsTestCallTracerConstructor): (WebCore::setJSTestCallTracerConstructor): (WebCore::jsTestCallTracerTestAttributeInterfaceGetter): (WebCore::jsTestCallTracerTestAttributeInterface): (WebCore::setJSTestCallTracerTestAttributeInterfaceSetter): (WebCore::setJSTestCallTracerTestAttributeInterface): (WebCore::jsTestCallTracerTestAttributeSpecifiedGetter): (WebCore::jsTestCallTracerTestAttributeSpecified): (WebCore::setJSTestCallTracerTestAttributeSpecifiedSetter): (WebCore::setJSTestCallTracerTestAttributeSpecified): (WebCore::jsTestCallTracerTestAttributeWithVariantGetter): (WebCore::jsTestCallTracerTestAttributeWithVariant): (WebCore::setJSTestCallTracerTestAttributeWithVariantSetter): (WebCore::setJSTestCallTracerTestAttributeWithVariant): (WebCore::jsTestCallTracerTestReadonlyAttributeGetter): (WebCore::jsTestCallTracerTestReadonlyAttribute): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationInterfaceBody): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationInterface): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationSpecifiedBody): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationSpecified): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithArgumentsBody): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithArguments): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableArgumentBody): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableArgument): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithVariantArgumentBody): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithVariantArgument): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableVariantArgumentBody): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithNullableVariantArgument): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithOptionalVariantArgumentBody): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithOptionalVariantArgument): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithDefaultVariantArgumentBody): (WebCore::jsTestCallTracerPrototypeFunctionTestOperationWithDefaultVariantArgument): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestCallTracer.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestCallbackFunction.cpp: (WebCore::JSTestCallbackFunction::handleEvent): * bindings/scripts/test/JS/JSTestCallbackFunctionRethrow.cpp: (WebCore::JSTestCallbackFunctionRethrow::handleEvent): * bindings/scripts/test/JS/JSTestCallbackFunctionWithThisObject.cpp: (WebCore::JSTestCallbackFunctionWithThisObject::handleEvent): * bindings/scripts/test/JS/JSTestCallbackFunctionWithTypedefs.cpp: (WebCore::JSTestCallbackFunctionWithTypedefs::handleEvent): * bindings/scripts/test/JS/JSTestCallbackInterface.cpp: (WebCore::convertEnumerationToJS): (WebCore::parseEnumeration<TestCallbackInterface::Enum>): (WebCore::convertDictionary<TestCallbackInterface::Dictionary>): (WebCore::JSTestCallbackInterface::callbackWithNoParam): (WebCore::JSTestCallbackInterface::callbackWithArrayParam): (WebCore::JSTestCallbackInterface::callbackWithSerializedScriptValueParam): (WebCore::JSTestCallbackInterface::callbackWithStringList): (WebCore::JSTestCallbackInterface::callbackWithBoolean): (WebCore::JSTestCallbackInterface::callbackRequiresThisToPass): (WebCore::JSTestCallbackInterface::callbackWithAReturnValue): (WebCore::JSTestCallbackInterface::callbackThatRethrowsExceptions): (WebCore::JSTestCallbackInterface::callbackThatSkipsInvokeCheck): (WebCore::JSTestCallbackInterface::callbackWithThisObject): * bindings/scripts/test/JS/JSTestCallbackInterface.h: * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: (WebCore::jsTestClassWithJSBuiltinConstructorConstructor): (WebCore::setJSTestClassWithJSBuiltinConstructorConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestDOMJIT.cpp: (WebCore::IDLAttribute<JSTestDOMJIT>::cast): (WebCore::IDLOperation<JSTestDOMJIT>::cast): (WebCore::jsTestDOMJITConstructor): (WebCore::setJSTestDOMJITConstructor): (WebCore::jsTestDOMJITAnyAttrGetter): (WebCore::jsTestDOMJITAnyAttr): (WebCore::jsTestDOMJITBooleanAttrGetter): (WebCore::jsTestDOMJITBooleanAttr): (WebCore::jsTestDOMJITByteAttrGetter): (WebCore::jsTestDOMJITByteAttr): (WebCore::jsTestDOMJITOctetAttrGetter): (WebCore::jsTestDOMJITOctetAttr): (WebCore::jsTestDOMJITShortAttrGetter): (WebCore::jsTestDOMJITShortAttr): (WebCore::jsTestDOMJITUnsignedShortAttrGetter): (WebCore::jsTestDOMJITUnsignedShortAttr): (WebCore::jsTestDOMJITLongAttrGetter): (WebCore::jsTestDOMJITLongAttr): (WebCore::jsTestDOMJITUnsignedLongAttrGetter): (WebCore::jsTestDOMJITUnsignedLongAttr): (WebCore::jsTestDOMJITLongLongAttrGetter): (WebCore::jsTestDOMJITLongLongAttr): (WebCore::jsTestDOMJITUnsignedLongLongAttrGetter): (WebCore::jsTestDOMJITUnsignedLongLongAttr): (WebCore::jsTestDOMJITFloatAttrGetter): (WebCore::jsTestDOMJITFloatAttr): (WebCore::jsTestDOMJITUnrestrictedFloatAttrGetter): (WebCore::jsTestDOMJITUnrestrictedFloatAttr): (WebCore::jsTestDOMJITDoubleAttrGetter): (WebCore::jsTestDOMJITDoubleAttr): (WebCore::jsTestDOMJITUnrestrictedDoubleAttrGetter): (WebCore::jsTestDOMJITUnrestrictedDoubleAttr): (WebCore::jsTestDOMJITDomStringAttrGetter): (WebCore::jsTestDOMJITDomStringAttr): (WebCore::jsTestDOMJITByteStringAttrGetter): (WebCore::jsTestDOMJITByteStringAttr): (WebCore::jsTestDOMJITUsvStringAttrGetter): (WebCore::jsTestDOMJITUsvStringAttr): (WebCore::jsTestDOMJITNodeAttrGetter): (WebCore::jsTestDOMJITNodeAttr): (WebCore::jsTestDOMJITBooleanNullableAttrGetter): (WebCore::jsTestDOMJITBooleanNullableAttr): (WebCore::jsTestDOMJITByteNullableAttrGetter): (WebCore::jsTestDOMJITByteNullableAttr): (WebCore::jsTestDOMJITOctetNullableAttrGetter): (WebCore::jsTestDOMJITOctetNullableAttr): (WebCore::jsTestDOMJITShortNullableAttrGetter): (WebCore::jsTestDOMJITShortNullableAttr): (WebCore::jsTestDOMJITUnsignedShortNullableAttrGetter): (WebCore::jsTestDOMJITUnsignedShortNullableAttr): (WebCore::jsTestDOMJITLongNullableAttrGetter): (WebCore::jsTestDOMJITLongNullableAttr): (WebCore::jsTestDOMJITUnsignedLongNullableAttrGetter): (WebCore::jsTestDOMJITUnsignedLongNullableAttr): (WebCore::jsTestDOMJITLongLongNullableAttrGetter): (WebCore::jsTestDOMJITLongLongNullableAttr): (WebCore::jsTestDOMJITUnsignedLongLongNullableAttrGetter): (WebCore::jsTestDOMJITUnsignedLongLongNullableAttr): (WebCore::jsTestDOMJITFloatNullableAttrGetter): (WebCore::jsTestDOMJITFloatNullableAttr): (WebCore::jsTestDOMJITUnrestrictedFloatNullableAttrGetter): (WebCore::jsTestDOMJITUnrestrictedFloatNullableAttr): (WebCore::jsTestDOMJITDoubleNullableAttrGetter): (WebCore::jsTestDOMJITDoubleNullableAttr): (WebCore::jsTestDOMJITUnrestrictedDoubleNullableAttrGetter): (WebCore::jsTestDOMJITUnrestrictedDoubleNullableAttr): (WebCore::jsTestDOMJITDomStringNullableAttrGetter): (WebCore::jsTestDOMJITDomStringNullableAttr): (WebCore::jsTestDOMJITByteStringNullableAttrGetter): (WebCore::jsTestDOMJITByteStringNullableAttr): (WebCore::jsTestDOMJITUsvStringNullableAttrGetter): (WebCore::jsTestDOMJITUsvStringNullableAttr): (WebCore::jsTestDOMJITNodeNullableAttrGetter): (WebCore::jsTestDOMJITNodeNullableAttr): (WebCore::jsTestDOMJITPrototypeFunctionGetAttributeBody): (WebCore::jsTestDOMJITPrototypeFunctionGetAttribute): (WebCore::jsTestDOMJITPrototypeFunctionGetAttributeWithoutTypeCheck): (WebCore::jsTestDOMJITPrototypeFunctionItemBody): (WebCore::jsTestDOMJITPrototypeFunctionItem): (WebCore::jsTestDOMJITPrototypeFunctionItemWithoutTypeCheck): (WebCore::jsTestDOMJITPrototypeFunctionHasAttributeBody): (WebCore::jsTestDOMJITPrototypeFunctionHasAttribute): (WebCore::jsTestDOMJITPrototypeFunctionHasAttributeWithoutTypeCheck): (WebCore::jsTestDOMJITPrototypeFunctionGetElementByIdBody): (WebCore::jsTestDOMJITPrototypeFunctionGetElementById): (WebCore::jsTestDOMJITPrototypeFunctionGetElementByIdWithoutTypeCheck): (WebCore::jsTestDOMJITPrototypeFunctionGetElementsByNameBody): (WebCore::jsTestDOMJITPrototypeFunctionGetElementsByName): (WebCore::jsTestDOMJITPrototypeFunctionGetElementsByNameWithoutTypeCheck): * bindings/scripts/test/JS/JSTestDerivedDictionary.cpp: (WebCore::convertDictionary<TestDerivedDictionary>): (WebCore::convertDictionaryToJS): * bindings/scripts/test/JS/JSTestDerivedDictionary.h: * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: (WebCore::JSTestEnabledBySettingPrototype::finishCreation): (WebCore::IDLAttribute<JSTestEnabledBySetting>::cast): (WebCore::IDLOperation<JSTestEnabledBySetting>::cast): (WebCore::jsTestEnabledBySettingConstructor): (WebCore::setJSTestEnabledBySettingConstructor): (WebCore::jsTestEnabledBySettingTestSubObjEnabledBySettingConstructorGetter): (WebCore::jsTestEnabledBySettingTestSubObjEnabledBySettingConstructor): (WebCore::setJSTestEnabledBySettingTestSubObjEnabledBySettingConstructorSetter): (WebCore::setJSTestEnabledBySettingTestSubObjEnabledBySettingConstructor): (WebCore::jsTestEnabledBySettingEnabledBySettingAttributeGetter): (WebCore::jsTestEnabledBySettingEnabledBySettingAttribute): (WebCore::setJSTestEnabledBySettingEnabledBySettingAttributeSetter): (WebCore::setJSTestEnabledBySettingEnabledBySettingAttribute): (WebCore::jsTestEnabledBySettingPrototypeFunctionEnabledBySettingOperationBody): (WebCore::jsTestEnabledBySettingPrototypeFunctionEnabledBySettingOperation): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestEnabledBySetting.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestEnabledForContext.cpp: (WebCore::IDLAttribute<JSTestEnabledForContext>::cast): (WebCore::jsTestEnabledForContextConstructor): (WebCore::setJSTestEnabledForContextConstructor): (WebCore::jsTestEnabledForContextTestSubObjEnabledForContextConstructorGetter): (WebCore::jsTestEnabledForContextTestSubObjEnabledForContextConstructor): (WebCore::setJSTestEnabledForContextTestSubObjEnabledForContextConstructorSetter): (WebCore::setJSTestEnabledForContextTestSubObjEnabledForContextConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestEnabledForContext.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestEventConstructor.cpp: (WebCore::convertDictionary<TestEventConstructor::Init>): (WebCore::JSTestEventConstructorConstructor::construct): (WebCore::IDLAttribute<JSTestEventConstructor>::cast): (WebCore::jsTestEventConstructorConstructor): (WebCore::setJSTestEventConstructorConstructor): (WebCore::jsTestEventConstructorAttr1Getter): (WebCore::jsTestEventConstructorAttr1): (WebCore::jsTestEventConstructorAttr2Getter): (WebCore::jsTestEventConstructorAttr2): (WebCore::jsTestEventConstructorAttr3Getter): (WebCore::jsTestEventConstructorAttr3): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestEventConstructor.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestEventTarget.cpp: (WebCore::JSTestEventTarget::getOwnPropertySlot): (WebCore::JSTestEventTarget::getOwnPropertySlotByIndex): (WebCore::JSTestEventTarget::getOwnPropertyNames): (WebCore::IDLOperation<JSTestEventTarget>::cast): (WebCore::jsTestEventTargetConstructor): (WebCore::setJSTestEventTargetConstructor): (WebCore::jsTestEventTargetPrototypeFunctionItemBody): (WebCore::jsTestEventTargetPrototypeFunctionItem): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestEventTarget.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestException.cpp: (WebCore::IDLAttribute<JSTestException>::cast): (WebCore::jsTestExceptionConstructor): (WebCore::setJSTestExceptionConstructor): (WebCore::jsTestExceptionNameGetter): (WebCore::jsTestExceptionName): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestException.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: (WebCore::JSTestGenerateIsReachablePrototype::finishCreation): (WebCore::IDLAttribute<JSTestGenerateIsReachable>::cast): (WebCore::jsTestGenerateIsReachableConstructor): (WebCore::setJSTestGenerateIsReachableConstructor): (WebCore::jsTestGenerateIsReachableASecretAttributeGetter): (WebCore::jsTestGenerateIsReachableASecretAttribute): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestGenerateIsReachable.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestGlobalObject.cpp: (WebCore::IDLAttribute<JSTestGlobalObject>::cast): (WebCore::IDLOperation<JSTestGlobalObject>::cast): (WebCore::jsTestGlobalObjectConstructor): (WebCore::setJSTestGlobalObjectConstructor): (WebCore::jsTestGlobalObjectRegularAttributeGetter): (WebCore::jsTestGlobalObjectRegularAttribute): (WebCore::setJSTestGlobalObjectRegularAttributeSetter): (WebCore::setJSTestGlobalObjectRegularAttribute): (WebCore::jsTestGlobalObjectPublicAndPrivateAttributeGetter): (WebCore::jsTestGlobalObjectPublicAndPrivateAttribute): (WebCore::setJSTestGlobalObjectPublicAndPrivateAttributeSetter): (WebCore::setJSTestGlobalObjectPublicAndPrivateAttribute): (WebCore::jsTestGlobalObjectPublicAndPrivateConditionalAttributeGetter): (WebCore::jsTestGlobalObjectPublicAndPrivateConditionalAttribute): (WebCore::setJSTestGlobalObjectPublicAndPrivateConditionalAttributeSetter): (WebCore::setJSTestGlobalObjectPublicAndPrivateConditionalAttribute): (WebCore::jsTestGlobalObjectEnabledAtRuntimeAttributeGetter): (WebCore::jsTestGlobalObjectEnabledAtRuntimeAttribute): (WebCore::setJSTestGlobalObjectEnabledAtRuntimeAttributeSetter): (WebCore::setJSTestGlobalObjectEnabledAtRuntimeAttribute): (WebCore::jsTestGlobalObjectTestCEReactionsConstructorGetter): (WebCore::jsTestGlobalObjectTestCEReactionsConstructor): (WebCore::setJSTestGlobalObjectTestCEReactionsConstructorSetter): (WebCore::setJSTestGlobalObjectTestCEReactionsConstructor): (WebCore::jsTestGlobalObjectTestCEReactionsStringifierConstructorGetter): (WebCore::jsTestGlobalObjectTestCEReactionsStringifierConstructor): (WebCore::setJSTestGlobalObjectTestCEReactionsStringifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestCEReactionsStringifierConstructor): (WebCore::jsTestGlobalObjectTestCallTracerConstructorGetter): (WebCore::jsTestGlobalObjectTestCallTracerConstructor): (WebCore::setJSTestGlobalObjectTestCallTracerConstructorSetter): (WebCore::setJSTestGlobalObjectTestCallTracerConstructor): (WebCore::jsTestGlobalObjectTestCallbackInterfaceConstructorGetter): (WebCore::jsTestGlobalObjectTestCallbackInterfaceConstructor): (WebCore::setJSTestGlobalObjectTestCallbackInterfaceConstructorSetter): (WebCore::setJSTestGlobalObjectTestCallbackInterfaceConstructor): (WebCore::jsTestGlobalObjectTestClassWithJSBuiltinConstructorConstructorGetter): (WebCore::jsTestGlobalObjectTestClassWithJSBuiltinConstructorConstructor): (WebCore::setJSTestGlobalObjectTestClassWithJSBuiltinConstructorConstructorSetter): (WebCore::setJSTestGlobalObjectTestClassWithJSBuiltinConstructorConstructor): (WebCore::jsTestGlobalObjectTestDOMJITConstructorGetter): (WebCore::jsTestGlobalObjectTestDOMJITConstructor): (WebCore::setJSTestGlobalObjectTestDOMJITConstructorSetter): (WebCore::setJSTestGlobalObjectTestDOMJITConstructor): (WebCore::jsTestGlobalObjectTestDomainSecurityConstructorGetter): (WebCore::jsTestGlobalObjectTestDomainSecurityConstructor): (WebCore::setJSTestGlobalObjectTestDomainSecurityConstructorSetter): (WebCore::setJSTestGlobalObjectTestDomainSecurityConstructor): (WebCore::jsTestGlobalObjectTestEnabledBySettingConstructorGetter): (WebCore::jsTestGlobalObjectTestEnabledBySettingConstructor): (WebCore::setJSTestGlobalObjectTestEnabledBySettingConstructorSetter): (WebCore::setJSTestGlobalObjectTestEnabledBySettingConstructor): (WebCore::jsTestGlobalObjectTestEnabledForContextConstructorGetter): (WebCore::jsTestGlobalObjectTestEnabledForContextConstructor): (WebCore::setJSTestGlobalObjectTestEnabledForContextConstructorSetter): (WebCore::setJSTestGlobalObjectTestEnabledForContextConstructor): (WebCore::jsTestGlobalObjectTestEventConstructorConstructorGetter): (WebCore::jsTestGlobalObjectTestEventConstructorConstructor): (WebCore::setJSTestGlobalObjectTestEventConstructorConstructorSetter): (WebCore::setJSTestGlobalObjectTestEventConstructorConstructor): (WebCore::jsTestGlobalObjectTestEventTargetConstructorGetter): (WebCore::jsTestGlobalObjectTestEventTargetConstructor): (WebCore::setJSTestGlobalObjectTestEventTargetConstructorSetter): (WebCore::setJSTestGlobalObjectTestEventTargetConstructor): (WebCore::jsTestGlobalObjectTestExceptionConstructorGetter): (WebCore::jsTestGlobalObjectTestExceptionConstructor): (WebCore::setJSTestGlobalObjectTestExceptionConstructorSetter): (WebCore::setJSTestGlobalObjectTestExceptionConstructor): (WebCore::jsTestGlobalObjectTestGenerateIsReachableConstructorGetter): (WebCore::jsTestGlobalObjectTestGenerateIsReachableConstructor): (WebCore::setJSTestGlobalObjectTestGenerateIsReachableConstructorSetter): (WebCore::setJSTestGlobalObjectTestGenerateIsReachableConstructor): (WebCore::jsTestGlobalObjectTestGlobalObjectConstructorGetter): (WebCore::jsTestGlobalObjectTestGlobalObjectConstructor): (WebCore::setJSTestGlobalObjectTestGlobalObjectConstructorSetter): (WebCore::setJSTestGlobalObjectTestGlobalObjectConstructor): (WebCore::jsTestGlobalObjectTestIndexedSetterNoIdentifierConstructorGetter): (WebCore::jsTestGlobalObjectTestIndexedSetterNoIdentifierConstructor): (WebCore::setJSTestGlobalObjectTestIndexedSetterNoIdentifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestIndexedSetterNoIdentifierConstructor): (WebCore::jsTestGlobalObjectTestIndexedSetterThrowingExceptionConstructorGetter): (WebCore::jsTestGlobalObjectTestIndexedSetterThrowingExceptionConstructor): (WebCore::setJSTestGlobalObjectTestIndexedSetterThrowingExceptionConstructorSetter): (WebCore::setJSTestGlobalObjectTestIndexedSetterThrowingExceptionConstructor): (WebCore::jsTestGlobalObjectTestIndexedSetterWithIdentifierConstructorGetter): (WebCore::jsTestGlobalObjectTestIndexedSetterWithIdentifierConstructor): (WebCore::setJSTestGlobalObjectTestIndexedSetterWithIdentifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestIndexedSetterWithIdentifierConstructor): (WebCore::jsTestGlobalObjectTestInterfaceConstructorGetter): (WebCore::jsTestGlobalObjectTestInterfaceConstructor): (WebCore::setJSTestGlobalObjectTestInterfaceConstructorSetter): (WebCore::setJSTestGlobalObjectTestInterfaceConstructor): (WebCore::jsTestGlobalObjectTestInterfaceLeadingUnderscoreConstructorGetter): (WebCore::jsTestGlobalObjectTestInterfaceLeadingUnderscoreConstructor): (WebCore::setJSTestGlobalObjectTestInterfaceLeadingUnderscoreConstructorSetter): (WebCore::setJSTestGlobalObjectTestInterfaceLeadingUnderscoreConstructor): (WebCore::jsTestGlobalObjectTestIterableConstructorGetter): (WebCore::jsTestGlobalObjectTestIterableConstructor): (WebCore::setJSTestGlobalObjectTestIterableConstructorSetter): (WebCore::setJSTestGlobalObjectTestIterableConstructor): (WebCore::jsTestGlobalObjectTestJSBuiltinConstructorConstructorGetter): (WebCore::jsTestGlobalObjectTestJSBuiltinConstructorConstructor): (WebCore::setJSTestGlobalObjectTestJSBuiltinConstructorConstructorSetter): (WebCore::setJSTestGlobalObjectTestJSBuiltinConstructorConstructor): (WebCore::jsTestGlobalObjectTestMapLikeConstructorGetter): (WebCore::jsTestGlobalObjectTestMapLikeConstructor): (WebCore::setJSTestGlobalObjectTestMapLikeConstructorSetter): (WebCore::setJSTestGlobalObjectTestMapLikeConstructor): (WebCore::jsTestGlobalObjectTestMediaQueryListListenerConstructorGetter): (WebCore::jsTestGlobalObjectTestMediaQueryListListenerConstructor): (WebCore::setJSTestGlobalObjectTestMediaQueryListListenerConstructorSetter): (WebCore::setJSTestGlobalObjectTestMediaQueryListListenerConstructor): (WebCore::jsTestGlobalObjectTestNamedAndIndexedSetterNoIdentifierConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedAndIndexedSetterNoIdentifierConstructor): (WebCore::setJSTestGlobalObjectTestNamedAndIndexedSetterNoIdentifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedAndIndexedSetterNoIdentifierConstructor): (WebCore::jsTestGlobalObjectTestNamedAndIndexedSetterThrowingExceptionConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedAndIndexedSetterThrowingExceptionConstructor): (WebCore::setJSTestGlobalObjectTestNamedAndIndexedSetterThrowingExceptionConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedAndIndexedSetterThrowingExceptionConstructor): (WebCore::jsTestGlobalObjectTestNamedAndIndexedSetterWithIdentifierConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedAndIndexedSetterWithIdentifierConstructor): (WebCore::setJSTestGlobalObjectTestNamedAndIndexedSetterWithIdentifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedAndIndexedSetterWithIdentifierConstructor): (WebCore::jsTestGlobalObjectTestNamedConstructorConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedConstructorConstructor): (WebCore::setJSTestGlobalObjectTestNamedConstructorConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedConstructorConstructor): (WebCore::jsTestGlobalObjectAudioConstructorGetter): (WebCore::jsTestGlobalObjectAudioConstructor): (WebCore::setJSTestGlobalObjectAudioConstructorSetter): (WebCore::setJSTestGlobalObjectAudioConstructor): (WebCore::jsTestGlobalObjectTestNamedDeleterNoIdentifierConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedDeleterNoIdentifierConstructor): (WebCore::setJSTestGlobalObjectTestNamedDeleterNoIdentifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedDeleterNoIdentifierConstructor): (WebCore::jsTestGlobalObjectTestNamedDeleterThrowingExceptionConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedDeleterThrowingExceptionConstructor): (WebCore::setJSTestGlobalObjectTestNamedDeleterThrowingExceptionConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedDeleterThrowingExceptionConstructor): (WebCore::jsTestGlobalObjectTestNamedDeleterWithIdentifierConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedDeleterWithIdentifierConstructor): (WebCore::setJSTestGlobalObjectTestNamedDeleterWithIdentifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedDeleterWithIdentifierConstructor): (WebCore::jsTestGlobalObjectTestNamedDeleterWithIndexedGetterConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedDeleterWithIndexedGetterConstructor): (WebCore::setJSTestGlobalObjectTestNamedDeleterWithIndexedGetterConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedDeleterWithIndexedGetterConstructor): (WebCore::jsTestGlobalObjectTestNamedGetterCallWithConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedGetterCallWithConstructor): (WebCore::setJSTestGlobalObjectTestNamedGetterCallWithConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedGetterCallWithConstructor): (WebCore::jsTestGlobalObjectTestNamedGetterNoIdentifierConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedGetterNoIdentifierConstructor): (WebCore::setJSTestGlobalObjectTestNamedGetterNoIdentifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedGetterNoIdentifierConstructor): (WebCore::jsTestGlobalObjectTestNamedGetterWithIdentifierConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedGetterWithIdentifierConstructor): (WebCore::setJSTestGlobalObjectTestNamedGetterWithIdentifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedGetterWithIdentifierConstructor): (WebCore::jsTestGlobalObjectTestNamedSetterNoIdentifierConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedSetterNoIdentifierConstructor): (WebCore::setJSTestGlobalObjectTestNamedSetterNoIdentifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedSetterNoIdentifierConstructor): (WebCore::jsTestGlobalObjectTestNamedSetterThrowingExceptionConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedSetterThrowingExceptionConstructor): (WebCore::setJSTestGlobalObjectTestNamedSetterThrowingExceptionConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedSetterThrowingExceptionConstructor): (WebCore::jsTestGlobalObjectTestNamedSetterWithIdentifierConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedSetterWithIdentifierConstructor): (WebCore::setJSTestGlobalObjectTestNamedSetterWithIdentifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedSetterWithIdentifierConstructor): (WebCore::jsTestGlobalObjectTestNamedSetterWithIndexedGetterConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedSetterWithIndexedGetterConstructor): (WebCore::setJSTestGlobalObjectTestNamedSetterWithIndexedGetterConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedSetterWithIndexedGetterConstructor): (WebCore::jsTestGlobalObjectTestNamedSetterWithIndexedGetterAndSetterConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedSetterWithIndexedGetterAndSetterConstructor): (WebCore::setJSTestGlobalObjectTestNamedSetterWithIndexedGetterAndSetterConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedSetterWithIndexedGetterAndSetterConstructor): (WebCore::jsTestGlobalObjectTestNamedSetterWithOverrideBuiltinsConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedSetterWithOverrideBuiltinsConstructor): (WebCore::setJSTestGlobalObjectTestNamedSetterWithOverrideBuiltinsConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedSetterWithOverrideBuiltinsConstructor): (WebCore::jsTestGlobalObjectTestNamedSetterWithUnforgablePropertiesConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedSetterWithUnforgablePropertiesConstructor): (WebCore::setJSTestGlobalObjectTestNamedSetterWithUnforgablePropertiesConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedSetterWithUnforgablePropertiesConstructor): (WebCore::jsTestGlobalObjectTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructorGetter): (WebCore::jsTestGlobalObjectTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor): (WebCore::setJSTestGlobalObjectTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructorSetter): (WebCore::setJSTestGlobalObjectTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor): (WebCore::jsTestGlobalObjectTestOverloadedConstructorsConstructorGetter): (WebCore::jsTestGlobalObjectTestOverloadedConstructorsConstructor): (WebCore::setJSTestGlobalObjectTestOverloadedConstructorsConstructorSetter): (WebCore::setJSTestGlobalObjectTestOverloadedConstructorsConstructor): (WebCore::jsTestGlobalObjectTestOverloadedConstructorsWithSequenceConstructorGetter): (WebCore::jsTestGlobalObjectTestOverloadedConstructorsWithSequenceConstructor): (WebCore::setJSTestGlobalObjectTestOverloadedConstructorsWithSequenceConstructorSetter): (WebCore::setJSTestGlobalObjectTestOverloadedConstructorsWithSequenceConstructor): (WebCore::jsTestGlobalObjectTestOverrideBuiltinsConstructorGetter): (WebCore::jsTestGlobalObjectTestOverrideBuiltinsConstructor): (WebCore::setJSTestGlobalObjectTestOverrideBuiltinsConstructorSetter): (WebCore::setJSTestGlobalObjectTestOverrideBuiltinsConstructor): (WebCore::jsTestGlobalObjectTestPluginInterfaceConstructorGetter): (WebCore::jsTestGlobalObjectTestPluginInterfaceConstructor): (WebCore::setJSTestGlobalObjectTestPluginInterfaceConstructorSetter): (WebCore::setJSTestGlobalObjectTestPluginInterfaceConstructor): (WebCore::jsTestGlobalObjectTestReadOnlyMapLikeConstructorGetter): (WebCore::jsTestGlobalObjectTestReadOnlyMapLikeConstructor): (WebCore::setJSTestGlobalObjectTestReadOnlyMapLikeConstructorSetter): (WebCore::setJSTestGlobalObjectTestReadOnlyMapLikeConstructor): (WebCore::jsTestGlobalObjectTestReportExtraMemoryCostConstructorGetter): (WebCore::jsTestGlobalObjectTestReportExtraMemoryCostConstructor): (WebCore::setJSTestGlobalObjectTestReportExtraMemoryCostConstructorSetter): (WebCore::setJSTestGlobalObjectTestReportExtraMemoryCostConstructor): (WebCore::jsTestGlobalObjectTestSerializationConstructorGetter): (WebCore::jsTestGlobalObjectTestSerializationConstructor): (WebCore::setJSTestGlobalObjectTestSerializationConstructorSetter): (WebCore::setJSTestGlobalObjectTestSerializationConstructor): (WebCore::jsTestGlobalObjectTestSerializationIndirectInheritanceConstructorGetter): (WebCore::jsTestGlobalObjectTestSerializationIndirectInheritanceConstructor): (WebCore::setJSTestGlobalObjectTestSerializationIndirectInheritanceConstructorSetter): (WebCore::setJSTestGlobalObjectTestSerializationIndirectInheritanceConstructor): (WebCore::jsTestGlobalObjectTestSerializationInheritConstructorGetter): (WebCore::jsTestGlobalObjectTestSerializationInheritConstructor): (WebCore::setJSTestGlobalObjectTestSerializationInheritConstructorSetter): (WebCore::setJSTestGlobalObjectTestSerializationInheritConstructor): (WebCore::jsTestGlobalObjectTestSerializationInheritFinalConstructorGetter): (WebCore::jsTestGlobalObjectTestSerializationInheritFinalConstructor): (WebCore::setJSTestGlobalObjectTestSerializationInheritFinalConstructorSetter): (WebCore::setJSTestGlobalObjectTestSerializationInheritFinalConstructor): (WebCore::jsTestGlobalObjectTestSerializedScriptValueInterfaceConstructorGetter): (WebCore::jsTestGlobalObjectTestSerializedScriptValueInterfaceConstructor): (WebCore::setJSTestGlobalObjectTestSerializedScriptValueInterfaceConstructorSetter): (WebCore::setJSTestGlobalObjectTestSerializedScriptValueInterfaceConstructor): (WebCore::jsTestGlobalObjectTestStringifierConstructorGetter): (WebCore::jsTestGlobalObjectTestStringifierConstructor): (WebCore::setJSTestGlobalObjectTestStringifierConstructorSetter): (WebCore::setJSTestGlobalObjectTestStringifierConstructor): (WebCore::jsTestGlobalObjectTestStringifierAnonymousOperationConstructorGetter): (WebCore::jsTestGlobalObjectTestStringifierAnonymousOperationConstructor): (WebCore::setJSTestGlobalObjectTestStringifierAnonymousOperationConstructorSetter): (WebCore::setJSTestGlobalObjectTestStringifierAnonymousOperationConstructor): (WebCore::jsTestGlobalObjectTestStringifierNamedOperationConstructorGetter): (WebCore::jsTestGlobalObjectTestStringifierNamedOperationConstructor): (WebCore::setJSTestGlobalObjectTestStringifierNamedOperationConstructorSetter): (WebCore::setJSTestGlobalObjectTestStringifierNamedOperationConstructor): (WebCore::jsTestGlobalObjectTestStringifierOperationImplementedAsConstructorGetter): (WebCore::jsTestGlobalObjectTestStringifierOperationImplementedAsConstructor): (WebCore::setJSTestGlobalObjectTestStringifierOperationImplementedAsConstructorSetter): (WebCore::setJSTestGlobalObjectTestStringifierOperationImplementedAsConstructor): (WebCore::jsTestGlobalObjectTestStringifierOperationNamedToStringConstructorGetter): (WebCore::jsTestGlobalObjectTestStringifierOperationNamedToStringConstructor): (WebCore::setJSTestGlobalObjectTestStringifierOperationNamedToStringConstructorSetter): (WebCore::setJSTestGlobalObjectTestStringifierOperationNamedToStringConstructor): (WebCore::jsTestGlobalObjectTestStringifierReadOnlyAttributeConstructorGetter): (WebCore::jsTestGlobalObjectTestStringifierReadOnlyAttributeConstructor): (WebCore::setJSTestGlobalObjectTestStringifierReadOnlyAttributeConstructorSetter): (WebCore::setJSTestGlobalObjectTestStringifierReadOnlyAttributeConstructor): (WebCore::jsTestGlobalObjectTestStringifierReadWriteAttributeConstructorGetter): (WebCore::jsTestGlobalObjectTestStringifierReadWriteAttributeConstructor): (WebCore::setJSTestGlobalObjectTestStringifierReadWriteAttributeConstructorSetter): (WebCore::setJSTestGlobalObjectTestStringifierReadWriteAttributeConstructor): (WebCore::jsTestGlobalObjectTestTypedefsConstructorGetter): (WebCore::jsTestGlobalObjectTestTypedefsConstructor): (WebCore::setJSTestGlobalObjectTestTypedefsConstructorSetter): (WebCore::setJSTestGlobalObjectTestTypedefsConstructor): (WebCore::jsTestGlobalObjectInstanceFunctionRegularOperationBody): (WebCore::jsTestGlobalObjectInstanceFunctionRegularOperation): (WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation1Body): (WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation2Body): (WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperationOverloadDispatcher): (WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation): (WebCore::jsTestGlobalObjectConstructorFunctionEnabledAtRuntimeOperationStaticBody): (WebCore::jsTestGlobalObjectConstructorFunctionEnabledAtRuntimeOperationStatic): (WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldBody): (WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorld): (WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabledBody): (WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabled): (WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeaturesEnabledBody): (WebCore::jsTestGlobalObjectInstanceFunctionEnabledInSpecificWorldWhenRuntimeFeaturesEnabled): (WebCore::jsTestGlobalObjectInstanceFunctionTestPrivateFunctionBody): (WebCore::jsTestGlobalObjectInstanceFunctionTestPrivateFunction): (WebCore::jsTestGlobalObjectInstanceFunctionCalculateSecretResultBody): (WebCore::jsTestGlobalObjectInstanceFunctionCalculateSecretResult): (WebCore::jsTestGlobalObjectInstanceFunctionGetSecretBooleanBody): (WebCore::jsTestGlobalObjectInstanceFunctionGetSecretBoolean): (WebCore::jsTestGlobalObjectInstanceFunctionTestFeatureGetSecretBooleanBody): (WebCore::jsTestGlobalObjectInstanceFunctionTestFeatureGetSecretBoolean): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestGlobalObject.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: (WebCore::JSTestIndexedSetterNoIdentifier::getOwnPropertySlot): (WebCore::JSTestIndexedSetterNoIdentifier::getOwnPropertySlotByIndex): (WebCore::JSTestIndexedSetterNoIdentifier::getOwnPropertyNames): (WebCore::JSTestIndexedSetterNoIdentifier::put): (WebCore::JSTestIndexedSetterNoIdentifier::putByIndex): (WebCore::JSTestIndexedSetterNoIdentifier::defineOwnProperty): (WebCore::jsTestIndexedSetterNoIdentifierConstructor): (WebCore::setJSTestIndexedSetterNoIdentifierConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: (WebCore::JSTestIndexedSetterThrowingException::getOwnPropertySlot): (WebCore::JSTestIndexedSetterThrowingException::getOwnPropertySlotByIndex): (WebCore::JSTestIndexedSetterThrowingException::getOwnPropertyNames): (WebCore::JSTestIndexedSetterThrowingException::put): (WebCore::JSTestIndexedSetterThrowingException::putByIndex): (WebCore::JSTestIndexedSetterThrowingException::defineOwnProperty): (WebCore::jsTestIndexedSetterThrowingExceptionConstructor): (WebCore::setJSTestIndexedSetterThrowingExceptionConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: (WebCore::JSTestIndexedSetterWithIdentifier::getOwnPropertySlot): (WebCore::JSTestIndexedSetterWithIdentifier::getOwnPropertySlotByIndex): (WebCore::JSTestIndexedSetterWithIdentifier::getOwnPropertyNames): (WebCore::JSTestIndexedSetterWithIdentifier::put): (WebCore::JSTestIndexedSetterWithIdentifier::putByIndex): (WebCore::JSTestIndexedSetterWithIdentifier::defineOwnProperty): (WebCore::IDLOperation<JSTestIndexedSetterWithIdentifier>::cast): (WebCore::jsTestIndexedSetterWithIdentifierConstructor): (WebCore::setJSTestIndexedSetterWithIdentifierConstructor): (WebCore::jsTestIndexedSetterWithIdentifierPrototypeFunctionIndexedSetterBody): (WebCore::jsTestIndexedSetterWithIdentifierPrototypeFunctionIndexedSetter): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestInheritedDictionary.cpp: (WebCore::convertDictionary<TestInheritedDictionary>): (WebCore::convertDictionaryToJS): * bindings/scripts/test/JS/JSTestInheritedDictionary.h: * bindings/scripts/test/JS/JSTestInterface.cpp: (WebCore::JSTestInterfaceConstructor::construct): (WebCore::IDLAttribute<JSTestInterface>::cast): (WebCore::IDLOperation<JSTestInterface>::cast): (WebCore::jsTestInterfaceConstructor): (WebCore::setJSTestInterfaceConstructor): (WebCore::jsTestInterfaceConstructorImplementsStaticReadOnlyAttrGetter): (WebCore::jsTestInterfaceConstructorImplementsStaticReadOnlyAttr): (WebCore::jsTestInterfaceConstructorImplementsStaticAttrGetter): (WebCore::jsTestInterfaceConstructorImplementsStaticAttr): (WebCore::setJSTestInterfaceConstructorImplementsStaticAttrSetter): (WebCore::setJSTestInterfaceConstructorImplementsStaticAttr): (WebCore::jsTestInterfaceImplementsStr1Getter): (WebCore::jsTestInterfaceImplementsStr1): (WebCore::jsTestInterfaceImplementsStr2Getter): (WebCore::jsTestInterfaceImplementsStr2): (WebCore::setJSTestInterfaceImplementsStr2Setter): (WebCore::setJSTestInterfaceImplementsStr2): (WebCore::jsTestInterfaceImplementsStr3Getter): (WebCore::jsTestInterfaceImplementsStr3): (WebCore::setJSTestInterfaceImplementsStr3Setter): (WebCore::setJSTestInterfaceImplementsStr3): (WebCore::jsTestInterfaceImplementsNodeGetter): (WebCore::jsTestInterfaceImplementsNode): (WebCore::setJSTestInterfaceImplementsNodeSetter): (WebCore::setJSTestInterfaceImplementsNode): (WebCore::jsTestInterfaceConstructorSupplementalStaticReadOnlyAttrGetter): (WebCore::jsTestInterfaceConstructorSupplementalStaticReadOnlyAttr): (WebCore::jsTestInterfaceConstructorSupplementalStaticAttrGetter): (WebCore::jsTestInterfaceConstructorSupplementalStaticAttr): (WebCore::setJSTestInterfaceConstructorSupplementalStaticAttrSetter): (WebCore::setJSTestInterfaceConstructorSupplementalStaticAttr): (WebCore::jsTestInterfaceSupplementalStr1Getter): (WebCore::jsTestInterfaceSupplementalStr1): (WebCore::jsTestInterfaceSupplementalStr2Getter): (WebCore::jsTestInterfaceSupplementalStr2): (WebCore::setJSTestInterfaceSupplementalStr2Setter): (WebCore::setJSTestInterfaceSupplementalStr2): (WebCore::jsTestInterfaceSupplementalStr3Getter): (WebCore::jsTestInterfaceSupplementalStr3): (WebCore::setJSTestInterfaceSupplementalStr3Setter): (WebCore::setJSTestInterfaceSupplementalStr3): (WebCore::jsTestInterfaceSupplementalNodeGetter): (WebCore::jsTestInterfaceSupplementalNode): (WebCore::setJSTestInterfaceSupplementalNodeSetter): (WebCore::setJSTestInterfaceSupplementalNode): (WebCore::jsTestInterfaceReflectAttributeGetter): (WebCore::jsTestInterfaceReflectAttribute): (WebCore::setJSTestInterfaceReflectAttributeSetter): (WebCore::setJSTestInterfaceReflectAttribute): (WebCore::jsTestInterfacePrototypeFunctionImplementsMethod1Body): (WebCore::jsTestInterfacePrototypeFunctionImplementsMethod1): (WebCore::jsTestInterfacePrototypeFunctionImplementsMethod2Body): (WebCore::jsTestInterfacePrototypeFunctionImplementsMethod2): (WebCore::jsTestInterfacePrototypeFunctionImplementsMethod3Body): (WebCore::jsTestInterfacePrototypeFunctionImplementsMethod3): (WebCore::jsTestInterfaceConstructorFunctionImplementsMethod4Body): (WebCore::jsTestInterfaceConstructorFunctionImplementsMethod4): (WebCore::jsTestInterfacePrototypeFunctionTakeNodesBody): (WebCore::jsTestInterfacePrototypeFunctionTakeNodes): (WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod1Body): (WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod1): (WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2Body): (WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2): (WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod3Body): (WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod3): (WebCore::jsTestInterfaceConstructorFunctionSupplementalMethod4Body): (WebCore::jsTestInterfaceConstructorFunctionSupplementalMethod4): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestInterface.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp: (WebCore::IDLAttribute<JSTestInterfaceLeadingUnderscore>::cast): (WebCore::jsTestInterfaceLeadingUnderscoreConstructor): (WebCore::setJSTestInterfaceLeadingUnderscoreConstructor): (WebCore::jsTestInterfaceLeadingUnderscoreReadonlyGetter): (WebCore::jsTestInterfaceLeadingUnderscoreReadonly): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestIterable.cpp: (WebCore::IDLOperation<JSTestIterable>::cast): (WebCore::jsTestIterableConstructor): (WebCore::setJSTestIterableConstructor): (WebCore::jsTestIterablePrototypeFunctionEntriesCaller): (WebCore::jsTestIterablePrototypeFunctionEntries): (WebCore::jsTestIterablePrototypeFunctionKeysCaller): (WebCore::jsTestIterablePrototypeFunctionKeys): (WebCore::jsTestIterablePrototypeFunctionValuesCaller): (WebCore::jsTestIterablePrototypeFunctionValues): (WebCore::jsTestIterablePrototypeFunctionForEachCaller): (WebCore::jsTestIterablePrototypeFunctionForEach): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestIterable.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp: (WebCore::IDLAttribute<JSTestJSBuiltinConstructor>::cast): (WebCore::IDLOperation<JSTestJSBuiltinConstructor>::cast): (WebCore::jsTestJSBuiltinConstructorConstructor): (WebCore::setJSTestJSBuiltinConstructorConstructor): (WebCore::jsTestJSBuiltinConstructorTestAttributeCustomGetter): (WebCore::jsTestJSBuiltinConstructorTestAttributeCustom): (WebCore::jsTestJSBuiltinConstructorTestAttributeRWCustomGetter): (WebCore::jsTestJSBuiltinConstructorTestAttributeRWCustom): (WebCore::setJSTestJSBuiltinConstructorTestAttributeRWCustomSetter): (WebCore::setJSTestJSBuiltinConstructorTestAttributeRWCustom): (WebCore::jsTestJSBuiltinConstructorPrototypeFunctionTestCustomFunctionBody): (WebCore::jsTestJSBuiltinConstructorPrototypeFunctionTestCustomFunction): * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h: * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: (WebCore::IDLOperation<JSTestMediaQueryListListener>::cast): (WebCore::jsTestMediaQueryListListenerConstructor): (WebCore::setJSTestMediaQueryListListenerConstructor): (WebCore::jsTestMediaQueryListListenerPrototypeFunctionMethodBody): (WebCore::jsTestMediaQueryListListenerPrototypeFunctionMethod): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestMediaQueryListListener.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::getOwnPropertySlot): (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::getOwnPropertySlotByIndex): (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::getOwnPropertyNames): (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::put): (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::putByIndex): (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::defineOwnProperty): (WebCore::jsTestNamedAndIndexedSetterNoIdentifierConstructor): (WebCore::setJSTestNamedAndIndexedSetterNoIdentifierConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: (WebCore::JSTestNamedAndIndexedSetterThrowingException::getOwnPropertySlot): (WebCore::JSTestNamedAndIndexedSetterThrowingException::getOwnPropertySlotByIndex): (WebCore::JSTestNamedAndIndexedSetterThrowingException::getOwnPropertyNames): (WebCore::JSTestNamedAndIndexedSetterThrowingException::put): (WebCore::JSTestNamedAndIndexedSetterThrowingException::putByIndex): (WebCore::JSTestNamedAndIndexedSetterThrowingException::defineOwnProperty): (WebCore::jsTestNamedAndIndexedSetterThrowingExceptionConstructor): (WebCore::setJSTestNamedAndIndexedSetterThrowingExceptionConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::getOwnPropertySlot): (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::getOwnPropertySlotByIndex): (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::getOwnPropertyNames): (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::put): (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::putByIndex): (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::defineOwnProperty): (WebCore::IDLOperation<JSTestNamedAndIndexedSetterWithIdentifier>::cast): (WebCore::jsTestNamedAndIndexedSetterWithIdentifierConstructor): (WebCore::setJSTestNamedAndIndexedSetterWithIdentifierConstructor): (WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionNamedSetterBody): (WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionNamedSetter): (WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionIndexedSetterBody): (WebCore::jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionIndexedSetter): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: (WebCore::JSTestNamedConstructorNamedConstructor::construct): (WebCore::jsTestNamedConstructorConstructor): (WebCore::setJSTestNamedConstructorConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedConstructor.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp: (WebCore::JSTestNamedDeleterNoIdentifier::getOwnPropertySlot): (WebCore::JSTestNamedDeleterNoIdentifier::getOwnPropertySlotByIndex): (WebCore::JSTestNamedDeleterNoIdentifier::getOwnPropertyNames): (WebCore::JSTestNamedDeleterNoIdentifier::deleteProperty): (WebCore::JSTestNamedDeleterNoIdentifier::deletePropertyByIndex): (WebCore::jsTestNamedDeleterNoIdentifierConstructor): (WebCore::setJSTestNamedDeleterNoIdentifierConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp: (WebCore::JSTestNamedDeleterThrowingException::getOwnPropertySlot): (WebCore::JSTestNamedDeleterThrowingException::getOwnPropertySlotByIndex): (WebCore::JSTestNamedDeleterThrowingException::getOwnPropertyNames): (WebCore::JSTestNamedDeleterThrowingException::deleteProperty): (WebCore::JSTestNamedDeleterThrowingException::deletePropertyByIndex): (WebCore::jsTestNamedDeleterThrowingExceptionConstructor): (WebCore::setJSTestNamedDeleterThrowingExceptionConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: (WebCore::JSTestNamedDeleterWithIdentifier::getOwnPropertySlot): (WebCore::JSTestNamedDeleterWithIdentifier::getOwnPropertySlotByIndex): (WebCore::JSTestNamedDeleterWithIdentifier::getOwnPropertyNames): (WebCore::JSTestNamedDeleterWithIdentifier::deleteProperty): (WebCore::JSTestNamedDeleterWithIdentifier::deletePropertyByIndex): (WebCore::IDLOperation<JSTestNamedDeleterWithIdentifier>::cast): (WebCore::jsTestNamedDeleterWithIdentifierConstructor): (WebCore::setJSTestNamedDeleterWithIdentifierConstructor): (WebCore::jsTestNamedDeleterWithIdentifierPrototypeFunctionNamedDeleterBody): (WebCore::jsTestNamedDeleterWithIdentifierPrototypeFunctionNamedDeleter): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp: (WebCore::JSTestNamedDeleterWithIndexedGetter::getOwnPropertySlot): (WebCore::JSTestNamedDeleterWithIndexedGetter::getOwnPropertySlotByIndex): (WebCore::JSTestNamedDeleterWithIndexedGetter::getOwnPropertyNames): (WebCore::JSTestNamedDeleterWithIndexedGetter::deleteProperty): (WebCore::JSTestNamedDeleterWithIndexedGetter::deletePropertyByIndex): (WebCore::jsTestNamedDeleterWithIndexedGetterConstructor): (WebCore::setJSTestNamedDeleterWithIndexedGetterConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: (WebCore::JSTestNamedGetterCallWith::getOwnPropertySlot): (WebCore::JSTestNamedGetterCallWith::getOwnPropertySlotByIndex): (WebCore::JSTestNamedGetterCallWith::getOwnPropertyNames): (WebCore::jsTestNamedGetterCallWithConstructor): (WebCore::setJSTestNamedGetterCallWithConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedGetterCallWith.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp: (WebCore::JSTestNamedGetterNoIdentifier::getOwnPropertySlot): (WebCore::JSTestNamedGetterNoIdentifier::getOwnPropertySlotByIndex): (WebCore::JSTestNamedGetterNoIdentifier::getOwnPropertyNames): (WebCore::jsTestNamedGetterNoIdentifierConstructor): (WebCore::setJSTestNamedGetterNoIdentifierConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: (WebCore::JSTestNamedGetterWithIdentifier::getOwnPropertySlot): (WebCore::JSTestNamedGetterWithIdentifier::getOwnPropertySlotByIndex): (WebCore::JSTestNamedGetterWithIdentifier::getOwnPropertyNames): (WebCore::IDLOperation<JSTestNamedGetterWithIdentifier>::cast): (WebCore::jsTestNamedGetterWithIdentifierConstructor): (WebCore::setJSTestNamedGetterWithIdentifierConstructor): (WebCore::jsTestNamedGetterWithIdentifierPrototypeFunctionGetterNameBody): (WebCore::jsTestNamedGetterWithIdentifierPrototypeFunctionGetterName): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: (WebCore::JSTestNamedSetterNoIdentifier::getOwnPropertySlot): (WebCore::JSTestNamedSetterNoIdentifier::getOwnPropertySlotByIndex): (WebCore::JSTestNamedSetterNoIdentifier::getOwnPropertyNames): (WebCore::JSTestNamedSetterNoIdentifier::put): (WebCore::JSTestNamedSetterNoIdentifier::putByIndex): (WebCore::JSTestNamedSetterNoIdentifier::defineOwnProperty): (WebCore::jsTestNamedSetterNoIdentifierConstructor): (WebCore::setJSTestNamedSetterNoIdentifierConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: (WebCore::JSTestNamedSetterThrowingException::getOwnPropertySlot): (WebCore::JSTestNamedSetterThrowingException::getOwnPropertySlotByIndex): (WebCore::JSTestNamedSetterThrowingException::getOwnPropertyNames): (WebCore::JSTestNamedSetterThrowingException::put): (WebCore::JSTestNamedSetterThrowingException::putByIndex): (WebCore::JSTestNamedSetterThrowingException::defineOwnProperty): (WebCore::jsTestNamedSetterThrowingExceptionConstructor): (WebCore::setJSTestNamedSetterThrowingExceptionConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: (WebCore::JSTestNamedSetterWithIdentifier::getOwnPropertySlot): (WebCore::JSTestNamedSetterWithIdentifier::getOwnPropertySlotByIndex): (WebCore::JSTestNamedSetterWithIdentifier::getOwnPropertyNames): (WebCore::JSTestNamedSetterWithIdentifier::put): (WebCore::JSTestNamedSetterWithIdentifier::putByIndex): (WebCore::JSTestNamedSetterWithIdentifier::defineOwnProperty): (WebCore::IDLOperation<JSTestNamedSetterWithIdentifier>::cast): (WebCore::jsTestNamedSetterWithIdentifierConstructor): (WebCore::setJSTestNamedSetterWithIdentifierConstructor): (WebCore::jsTestNamedSetterWithIdentifierPrototypeFunctionNamedSetterBody): (WebCore::jsTestNamedSetterWithIdentifierPrototypeFunctionNamedSetter): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: (WebCore::JSTestNamedSetterWithIndexedGetter::getOwnPropertySlot): (WebCore::JSTestNamedSetterWithIndexedGetter::getOwnPropertySlotByIndex): (WebCore::JSTestNamedSetterWithIndexedGetter::getOwnPropertyNames): (WebCore::JSTestNamedSetterWithIndexedGetter::put): (WebCore::JSTestNamedSetterWithIndexedGetter::putByIndex): (WebCore::JSTestNamedSetterWithIndexedGetter::defineOwnProperty): (WebCore::IDLOperation<JSTestNamedSetterWithIndexedGetter>::cast): (WebCore::jsTestNamedSetterWithIndexedGetterConstructor): (WebCore::setJSTestNamedSetterWithIndexedGetterConstructor): (WebCore::jsTestNamedSetterWithIndexedGetterPrototypeFunctionNamedSetterBody): (WebCore::jsTestNamedSetterWithIndexedGetterPrototypeFunctionNamedSetter): (WebCore::jsTestNamedSetterWithIndexedGetterPrototypeFunctionIndexedSetterBody): (WebCore::jsTestNamedSetterWithIndexedGetterPrototypeFunctionIndexedSetter): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::getOwnPropertySlot): (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::getOwnPropertySlotByIndex): (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::getOwnPropertyNames): (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::put): (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::putByIndex): (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::defineOwnProperty): (WebCore::IDLOperation<JSTestNamedSetterWithIndexedGetterAndSetter>::cast): (WebCore::jsTestNamedSetterWithIndexedGetterAndSetterConstructor): (WebCore::setJSTestNamedSetterWithIndexedGetterAndSetterConstructor): (WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionNamedSetterBody): (WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionNamedSetter): (WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionIndexedSetter1Body): (WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionIndexedSetter2Body): (WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionIndexedSetterOverloadDispatcher): (WebCore::jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionIndexedSetter): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp: (WebCore::JSTestNamedSetterWithOverrideBuiltins::getOwnPropertySlot): (WebCore::JSTestNamedSetterWithOverrideBuiltins::getOwnPropertySlotByIndex): (WebCore::JSTestNamedSetterWithOverrideBuiltins::getOwnPropertyNames): (WebCore::JSTestNamedSetterWithOverrideBuiltins::put): (WebCore::JSTestNamedSetterWithOverrideBuiltins::putByIndex): (WebCore::JSTestNamedSetterWithOverrideBuiltins::defineOwnProperty): (WebCore::jsTestNamedSetterWithOverrideBuiltinsConstructor): (WebCore::setJSTestNamedSetterWithOverrideBuiltinsConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp: (WebCore::JSTestNamedSetterWithUnforgableProperties::getOwnPropertySlot): (WebCore::JSTestNamedSetterWithUnforgableProperties::getOwnPropertySlotByIndex): (WebCore::JSTestNamedSetterWithUnforgableProperties::getOwnPropertyNames): (WebCore::JSTestNamedSetterWithUnforgableProperties::put): (WebCore::JSTestNamedSetterWithUnforgableProperties::putByIndex): (WebCore::JSTestNamedSetterWithUnforgableProperties::defineOwnProperty): (WebCore::IDLAttribute<JSTestNamedSetterWithUnforgableProperties>::cast): (WebCore::IDLOperation<JSTestNamedSetterWithUnforgableProperties>::cast): (WebCore::jsTestNamedSetterWithUnforgablePropertiesConstructor): (WebCore::setJSTestNamedSetterWithUnforgablePropertiesConstructor): (WebCore::jsTestNamedSetterWithUnforgablePropertiesUnforgeableAttributeGetter): (WebCore::jsTestNamedSetterWithUnforgablePropertiesUnforgeableAttribute): (WebCore::jsTestNamedSetterWithUnforgablePropertiesInstanceFunctionUnforgeableOperationBody): (WebCore::jsTestNamedSetterWithUnforgablePropertiesInstanceFunctionUnforgeableOperation): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp: (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::getOwnPropertySlot): (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::getOwnPropertySlotByIndex): (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::getOwnPropertyNames): (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::put): (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::putByIndex): (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::defineOwnProperty): (WebCore::IDLAttribute<JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins>::cast): (WebCore::IDLOperation<JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins>::cast): (WebCore::jsTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor): (WebCore::setJSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor): (WebCore::jsTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsUnforgeableAttributeGetter): (WebCore::jsTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsUnforgeableAttribute): (WebCore::jsTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsInstanceFunctionUnforgeableOperationBody): (WebCore::jsTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsInstanceFunctionUnforgeableOperation): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestNode.cpp: (WebCore::JSTestNodeConstructor::construct): (WebCore::JSTestNodePrototype::finishCreation): (WebCore::IDLAttribute<JSTestNode>::cast): (WebCore::IDLOperation<JSTestNode>::cast): (WebCore::jsTestNodeConstructor): (WebCore::setJSTestNodeConstructor): (WebCore::jsTestNodeNameGetter): (WebCore::jsTestNodeName): (WebCore::setJSTestNodeNameSetter): (WebCore::setJSTestNodeName): (WebCore::jsTestNodePrototypeFunctionTestWorkerPromiseBody): (WebCore::jsTestNodePrototypeFunctionTestWorkerPromise): (WebCore::jsTestNodePrototypeFunctionCalculateSecretResultBody): (WebCore::jsTestNodePrototypeFunctionCalculateSecretResult): (WebCore::jsTestNodePrototypeFunctionGetSecretBooleanBody): (WebCore::jsTestNodePrototypeFunctionGetSecretBoolean): (WebCore::jsTestNodePrototypeFunctionTestFeatureGetSecretBooleanBody): (WebCore::jsTestNodePrototypeFunctionTestFeatureGetSecretBoolean): (WebCore::jsTestNodePrototypeFunctionEntriesCaller): (WebCore::jsTestNodePrototypeFunctionEntries): (WebCore::jsTestNodePrototypeFunctionKeysCaller): (WebCore::jsTestNodePrototypeFunctionKeys): (WebCore::jsTestNodePrototypeFunctionValuesCaller): (WebCore::jsTestNodePrototypeFunctionValues): (WebCore::jsTestNodePrototypeFunctionForEachCaller): (WebCore::jsTestNodePrototypeFunctionForEach): (WebCore::JSTestNode::serialize): (WebCore::jsTestNodePrototypeFunctionToJSONBody): (WebCore::jsTestNodePrototypeFunctionToJSON): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestNode.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestObj.cpp: (WebCore::convertEnumerationToJS): (WebCore::parseEnumeration<TestObj::EnumType>): (WebCore::parseEnumeration<TestObj::Optional>): (WebCore::parseEnumeration<AlternateEnumName>): (WebCore::parseEnumeration<TestObj::EnumA>): (WebCore::parseEnumeration<TestObj::EnumB>): (WebCore::parseEnumeration<TestObj::EnumC>): (WebCore::parseEnumeration<TestObj::Kind>): (WebCore::parseEnumeration<TestObj::Size>): (WebCore::parseEnumeration<TestObj::Confidence>): (WebCore::convertDictionary<TestObj::Dictionary>): (WebCore::convertDictionaryToJS): (WebCore::convertDictionary<TestObj::DictionaryThatShouldNotTolerateNull>): (WebCore::convertDictionary<TestObj::DictionaryThatShouldTolerateNull>): (WebCore::convertDictionary<AlternateDictionaryName>): (WebCore::convertDictionary<TestObj::ParentDictionary>): (WebCore::convertDictionary<TestObj::ChildDictionary>): (WebCore::convertDictionary<TestObj::ConditionalDictionaryA>): (WebCore::convertDictionary<TestObj::ConditionalDictionaryB>): (WebCore::convertDictionary<TestObj::ConditionalDictionaryC>): (WebCore::JSTestObjConstructor::construct): (WebCore::JSTestObjConstructor::initializeProperties): (WebCore::JSTestObjPrototype::finishCreation): (WebCore::JSTestObj::getOwnPropertySlot): (WebCore::JSTestObj::getOwnPropertySlotByIndex): (WebCore::JSTestObj::getOwnPropertyNames): (WebCore::callJSTestObj1): (WebCore::callJSTestObj2): (WebCore::callJSTestObj3): (WebCore::callJSTestObj): (WebCore::IDLAttribute<JSTestObj>::cast): (WebCore::IDLOperation<JSTestObj>::cast): (WebCore::jsTestObjConstructor): (WebCore::setJSTestObjConstructor): (WebCore::jsTestObjReadOnlyLongAttrGetter): (WebCore::jsTestObjReadOnlyLongAttr): (WebCore::jsTestObjReadOnlyStringAttrGetter): (WebCore::jsTestObjReadOnlyStringAttr): (WebCore::jsTestObjReadOnlyTestObjAttrGetter): (WebCore::jsTestObjReadOnlyTestObjAttr): (WebCore::jsTestObjConstructorStaticReadOnlyLongAttrGetter): (WebCore::jsTestObjConstructorStaticReadOnlyLongAttr): (WebCore::jsTestObjConstructorStaticStringAttrGetter): (WebCore::jsTestObjConstructorStaticStringAttr): (WebCore::setJSTestObjConstructorStaticStringAttrSetter): (WebCore::setJSTestObjConstructorStaticStringAttr): (WebCore::jsTestObjConstructorTestSubObjGetter): (WebCore::jsTestObjConstructorTestSubObj): (WebCore::jsTestObjConstructorTestStaticReadonlyObjGetter): (WebCore::jsTestObjConstructorTestStaticReadonlyObj): (WebCore::jsTestObjEnumAttrGetter): (WebCore::jsTestObjEnumAttr): (WebCore::setJSTestObjEnumAttrSetter): (WebCore::setJSTestObjEnumAttr): (WebCore::jsTestObjByteAttrGetter): (WebCore::jsTestObjByteAttr): (WebCore::setJSTestObjByteAttrSetter): (WebCore::setJSTestObjByteAttr): (WebCore::jsTestObjOctetAttrGetter): (WebCore::jsTestObjOctetAttr): (WebCore::setJSTestObjOctetAttrSetter): (WebCore::setJSTestObjOctetAttr): (WebCore::jsTestObjShortAttrGetter): (WebCore::jsTestObjShortAttr): (WebCore::setJSTestObjShortAttrSetter): (WebCore::setJSTestObjShortAttr): (WebCore::jsTestObjClampedShortAttrGetter): (WebCore::jsTestObjClampedShortAttr): (WebCore::setJSTestObjClampedShortAttrSetter): (WebCore::setJSTestObjClampedShortAttr): (WebCore::jsTestObjEnforceRangeShortAttrGetter): (WebCore::jsTestObjEnforceRangeShortAttr): (WebCore::setJSTestObjEnforceRangeShortAttrSetter): (WebCore::setJSTestObjEnforceRangeShortAttr): (WebCore::jsTestObjUnsignedShortAttrGetter): (WebCore::jsTestObjUnsignedShortAttr): (WebCore::setJSTestObjUnsignedShortAttrSetter): (WebCore::setJSTestObjUnsignedShortAttr): (WebCore::jsTestObjLongAttrGetter): (WebCore::jsTestObjLongAttr): (WebCore::setJSTestObjLongAttrSetter): (WebCore::setJSTestObjLongAttr): (WebCore::jsTestObjLongLongAttrGetter): (WebCore::jsTestObjLongLongAttr): (WebCore::setJSTestObjLongLongAttrSetter): (WebCore::setJSTestObjLongLongAttr): (WebCore::jsTestObjUnsignedLongLongAttrGetter): (WebCore::jsTestObjUnsignedLongLongAttr): (WebCore::setJSTestObjUnsignedLongLongAttrSetter): (WebCore::setJSTestObjUnsignedLongLongAttr): (WebCore::jsTestObjStringAttrGetter): (WebCore::jsTestObjStringAttr): (WebCore::setJSTestObjStringAttrSetter): (WebCore::setJSTestObjStringAttr): (WebCore::jsTestObjUsvstringAttrGetter): (WebCore::jsTestObjUsvstringAttr): (WebCore::setJSTestObjUsvstringAttrSetter): (WebCore::setJSTestObjUsvstringAttr): (WebCore::jsTestObjTestObjAttrGetter): (WebCore::jsTestObjTestObjAttr): (WebCore::setJSTestObjTestObjAttrSetter): (WebCore::setJSTestObjTestObjAttr): (WebCore::jsTestObjTestNullableObjAttrGetter): (WebCore::jsTestObjTestNullableObjAttr): (WebCore::setJSTestObjTestNullableObjAttrSetter): (WebCore::setJSTestObjTestNullableObjAttr): (WebCore::jsTestObjLenientTestObjAttrGetter): (WebCore::jsTestObjLenientTestObjAttr): (WebCore::setJSTestObjLenientTestObjAttrSetter): (WebCore::setJSTestObjLenientTestObjAttr): (WebCore::jsTestObjUnforgeableAttrGetter): (WebCore::jsTestObjUnforgeableAttr): (WebCore::jsTestObjStringAttrTreatingNullAsEmptyStringGetter): (WebCore::jsTestObjStringAttrTreatingNullAsEmptyString): (WebCore::setJSTestObjStringAttrTreatingNullAsEmptyStringSetter): (WebCore::setJSTestObjStringAttrTreatingNullAsEmptyString): (WebCore::jsTestObjUsvstringAttrTreatingNullAsEmptyStringGetter): (WebCore::jsTestObjUsvstringAttrTreatingNullAsEmptyString): (WebCore::setJSTestObjUsvstringAttrTreatingNullAsEmptyStringSetter): (WebCore::setJSTestObjUsvstringAttrTreatingNullAsEmptyString): (WebCore::jsTestObjByteStringAttrTreatingNullAsEmptyStringGetter): (WebCore::jsTestObjByteStringAttrTreatingNullAsEmptyString): (WebCore::setJSTestObjByteStringAttrTreatingNullAsEmptyStringSetter): (WebCore::setJSTestObjByteStringAttrTreatingNullAsEmptyString): (WebCore::jsTestObjStringLongRecordAttrGetter): (WebCore::jsTestObjStringLongRecordAttr): (WebCore::setJSTestObjStringLongRecordAttrSetter): (WebCore::setJSTestObjStringLongRecordAttr): (WebCore::jsTestObjUsvstringLongRecordAttrGetter): (WebCore::jsTestObjUsvstringLongRecordAttr): (WebCore::setJSTestObjUsvstringLongRecordAttrSetter): (WebCore::setJSTestObjUsvstringLongRecordAttr): (WebCore::jsTestObjStringObjRecordAttrGetter): (WebCore::jsTestObjStringObjRecordAttr): (WebCore::setJSTestObjStringObjRecordAttrSetter): (WebCore::setJSTestObjStringObjRecordAttr): (WebCore::jsTestObjStringNullableObjRecordAttrGetter): (WebCore::jsTestObjStringNullableObjRecordAttr): (WebCore::setJSTestObjStringNullableObjRecordAttrSetter): (WebCore::setJSTestObjStringNullableObjRecordAttr): (WebCore::jsTestObjStringVoidCallbackRecordAttrGetter): (WebCore::jsTestObjStringVoidCallbackRecordAttr): (WebCore::setJSTestObjStringVoidCallbackRecordAttrSetter): (WebCore::setJSTestObjStringVoidCallbackRecordAttr): (WebCore::jsTestObjDictionaryAttrGetter): (WebCore::jsTestObjDictionaryAttr): (WebCore::setJSTestObjDictionaryAttrSetter): (WebCore::setJSTestObjDictionaryAttr): (WebCore::jsTestObjNullableDictionaryAttrGetter): (WebCore::jsTestObjNullableDictionaryAttr): (WebCore::setJSTestObjNullableDictionaryAttrSetter): (WebCore::setJSTestObjNullableDictionaryAttr): (WebCore::jsTestObjAnnotatedTypeInUnionAttrGetter): (WebCore::jsTestObjAnnotatedTypeInUnionAttr): (WebCore::setJSTestObjAnnotatedTypeInUnionAttrSetter): (WebCore::setJSTestObjAnnotatedTypeInUnionAttr): (WebCore::jsTestObjAnnotatedTypeInSequenceAttrGetter): (WebCore::jsTestObjAnnotatedTypeInSequenceAttr): (WebCore::setJSTestObjAnnotatedTypeInSequenceAttrSetter): (WebCore::setJSTestObjAnnotatedTypeInSequenceAttr): (WebCore::jsTestObjImplementationEnumAttrGetter): (WebCore::jsTestObjImplementationEnumAttr): (WebCore::setJSTestObjImplementationEnumAttrSetter): (WebCore::setJSTestObjImplementationEnumAttr): (WebCore::jsTestObjMediaDevicesGetter): (WebCore::jsTestObjMediaDevices): (WebCore::jsTestObjServiceWorkersGetter): (WebCore::jsTestObjServiceWorkers): (WebCore::jsTestObjXMLObjAttrGetter): (WebCore::jsTestObjXMLObjAttr): (WebCore::setJSTestObjXMLObjAttrSetter): (WebCore::setJSTestObjXMLObjAttr): (WebCore::jsTestObjCreateGetter): (WebCore::jsTestObjCreate): (WebCore::setJSTestObjCreateSetter): (WebCore::setJSTestObjCreate): (WebCore::jsTestObjReflectedStringAttrGetter): (WebCore::jsTestObjReflectedStringAttr): (WebCore::setJSTestObjReflectedStringAttrSetter): (WebCore::setJSTestObjReflectedStringAttr): (WebCore::jsTestObjReflectedUSVStringAttrGetter): (WebCore::jsTestObjReflectedUSVStringAttr): (WebCore::setJSTestObjReflectedUSVStringAttrSetter): (WebCore::setJSTestObjReflectedUSVStringAttr): (WebCore::jsTestObjReflectedIntegralAttrGetter): (WebCore::jsTestObjReflectedIntegralAttr): (WebCore::setJSTestObjReflectedIntegralAttrSetter): (WebCore::setJSTestObjReflectedIntegralAttr): (WebCore::jsTestObjReflectedUnsignedIntegralAttrGetter): (WebCore::jsTestObjReflectedUnsignedIntegralAttr): (WebCore::setJSTestObjReflectedUnsignedIntegralAttrSetter): (WebCore::setJSTestObjReflectedUnsignedIntegralAttr): (WebCore::jsTestObjReflectedBooleanAttrGetter): (WebCore::jsTestObjReflectedBooleanAttr): (WebCore::setJSTestObjReflectedBooleanAttrSetter): (WebCore::setJSTestObjReflectedBooleanAttr): (WebCore::jsTestObjReflectedURLAttrGetter): (WebCore::jsTestObjReflectedURLAttr): (WebCore::setJSTestObjReflectedURLAttrSetter): (WebCore::setJSTestObjReflectedURLAttr): (WebCore::jsTestObjReflectedUSVURLAttrGetter): (WebCore::jsTestObjReflectedUSVURLAttr): (WebCore::setJSTestObjReflectedUSVURLAttrSetter): (WebCore::setJSTestObjReflectedUSVURLAttr): (WebCore::jsTestObjReflectedCustomIntegralAttrGetter): (WebCore::jsTestObjReflectedCustomIntegralAttr): (WebCore::setJSTestObjReflectedCustomIntegralAttrSetter): (WebCore::setJSTestObjReflectedCustomIntegralAttr): (WebCore::jsTestObjReflectedCustomBooleanAttrGetter): (WebCore::jsTestObjReflectedCustomBooleanAttr): (WebCore::setJSTestObjReflectedCustomBooleanAttrSetter): (WebCore::setJSTestObjReflectedCustomBooleanAttr): (WebCore::jsTestObjReflectedCustomURLAttrGetter): (WebCore::jsTestObjReflectedCustomURLAttr): (WebCore::setJSTestObjReflectedCustomURLAttrSetter): (WebCore::setJSTestObjReflectedCustomURLAttr): (WebCore::jsTestObjEnabledAtRuntimeAttributeGetter): (WebCore::jsTestObjEnabledAtRuntimeAttribute): (WebCore::setJSTestObjEnabledAtRuntimeAttributeSetter): (WebCore::setJSTestObjEnabledAtRuntimeAttribute): (WebCore::jsTestObjConstructorEnabledAtRuntimeAttributeStaticGetter): (WebCore::jsTestObjConstructorEnabledAtRuntimeAttributeStatic): (WebCore::setJSTestObjConstructorEnabledAtRuntimeAttributeStaticSetter): (WebCore::setJSTestObjConstructorEnabledAtRuntimeAttributeStatic): (WebCore::jsTestObjTypedArrayAttrGetter): (WebCore::jsTestObjTypedArrayAttr): (WebCore::setJSTestObjTypedArrayAttrSetter): (WebCore::setJSTestObjTypedArrayAttr): (WebCore::jsTestObjCustomAttrGetter): (WebCore::jsTestObjCustomAttr): (WebCore::setJSTestObjCustomAttrSetter): (WebCore::setJSTestObjCustomAttr): (WebCore::jsTestObjOnfooGetter): (WebCore::jsTestObjOnfoo): (WebCore::setJSTestObjOnfooSetter): (WebCore::setJSTestObjOnfoo): (WebCore::jsTestObjOnwebkitfooGetter): (WebCore::jsTestObjOnwebkitfoo): (WebCore::setJSTestObjOnwebkitfooSetter): (WebCore::setJSTestObjOnwebkitfoo): (WebCore::jsTestObjWithExecStateAttributeGetter): (WebCore::jsTestObjWithExecStateAttribute): (WebCore::setJSTestObjWithExecStateAttributeSetter): (WebCore::setJSTestObjWithExecStateAttribute): (WebCore::jsTestObjWithCallWithAndSetterCallWithAttributeGetter): (WebCore::jsTestObjWithCallWithAndSetterCallWithAttribute): (WebCore::setJSTestObjWithCallWithAndSetterCallWithAttributeSetter): (WebCore::setJSTestObjWithCallWithAndSetterCallWithAttribute): (WebCore::jsTestObjWithScriptExecutionContextAttributeGetter): (WebCore::jsTestObjWithScriptExecutionContextAttribute): (WebCore::setJSTestObjWithScriptExecutionContextAttributeSetter): (WebCore::setJSTestObjWithScriptExecutionContextAttribute): (WebCore::jsTestObjWithScriptExecutionContextAndExecStateAttributeGetter): (WebCore::jsTestObjWithScriptExecutionContextAndExecStateAttribute): (WebCore::setJSTestObjWithScriptExecutionContextAndExecStateAttributeSetter): (WebCore::setJSTestObjWithScriptExecutionContextAndExecStateAttribute): (WebCore::jsTestObjWithScriptExecutionContextAndExecStateWithSpacesAttributeGetter): (WebCore::jsTestObjWithScriptExecutionContextAndExecStateWithSpacesAttribute): (WebCore::setJSTestObjWithScriptExecutionContextAndExecStateWithSpacesAttributeSetter): (WebCore::setJSTestObjWithScriptExecutionContextAndExecStateWithSpacesAttribute): (WebCore::jsTestObjConditionalAttr1Getter): (WebCore::jsTestObjConditionalAttr1): (WebCore::setJSTestObjConditionalAttr1Setter): (WebCore::setJSTestObjConditionalAttr1): (WebCore::jsTestObjConditionalAttr2Getter): (WebCore::jsTestObjConditionalAttr2): (WebCore::setJSTestObjConditionalAttr2Setter): (WebCore::setJSTestObjConditionalAttr2): (WebCore::jsTestObjConditionalAttr3Getter): (WebCore::jsTestObjConditionalAttr3): (WebCore::setJSTestObjConditionalAttr3Setter): (WebCore::setJSTestObjConditionalAttr3): (WebCore::jsTestObjConditionalAttr4ConstructorGetter): (WebCore::jsTestObjConditionalAttr4Constructor): (WebCore::setJSTestObjConditionalAttr4ConstructorSetter): (WebCore::setJSTestObjConditionalAttr4Constructor): (WebCore::jsTestObjConditionalAttr5ConstructorGetter): (WebCore::jsTestObjConditionalAttr5Constructor): (WebCore::setJSTestObjConditionalAttr5ConstructorSetter): (WebCore::setJSTestObjConditionalAttr5Constructor): (WebCore::jsTestObjConditionalAttr6ConstructorGetter): (WebCore::jsTestObjConditionalAttr6Constructor): (WebCore::setJSTestObjConditionalAttr6ConstructorSetter): (WebCore::setJSTestObjConditionalAttr6Constructor): (WebCore::jsTestObjCachedAttribute1Getter): (WebCore::jsTestObjCachedAttribute1): (WebCore::jsTestObjCachedAttribute2Getter): (WebCore::jsTestObjCachedAttribute2): (WebCore::jsTestObjCachedAttribute3Getter): (WebCore::jsTestObjCachedAttribute3): (WebCore::jsTestObjAnyAttributeGetter): (WebCore::jsTestObjAnyAttribute): (WebCore::setJSTestObjAnyAttributeSetter): (WebCore::setJSTestObjAnyAttribute): (WebCore::jsTestObjObjectAttributeGetter): (WebCore::jsTestObjObjectAttribute): (WebCore::setJSTestObjObjectAttributeSetter): (WebCore::setJSTestObjObjectAttribute): (WebCore::jsTestObjContentDocumentGetter): (WebCore::jsTestObjContentDocument): (WebCore::jsTestObjMutablePointGetter): (WebCore::jsTestObjMutablePoint): (WebCore::setJSTestObjMutablePointSetter): (WebCore::setJSTestObjMutablePoint): (WebCore::jsTestObjStrawberryGetter): (WebCore::jsTestObjStrawberry): (WebCore::setJSTestObjStrawberrySetter): (WebCore::setJSTestObjStrawberry): (WebCore::jsTestObjDescriptionGetter): (WebCore::jsTestObjDescription): (WebCore::jsTestObjIdGetter): (WebCore::jsTestObjId): (WebCore::setJSTestObjIdSetter): (WebCore::setJSTestObjId): (WebCore::jsTestObjHashGetter): (WebCore::jsTestObjHash): (WebCore::jsTestObjReplaceableAttributeGetter): (WebCore::jsTestObjReplaceableAttribute): (WebCore::setJSTestObjReplaceableAttributeSetter): (WebCore::setJSTestObjReplaceableAttribute): (WebCore::jsTestObjNullableDoubleAttributeGetter): (WebCore::jsTestObjNullableDoubleAttribute): (WebCore::jsTestObjNullableLongAttributeGetter): (WebCore::jsTestObjNullableLongAttribute): (WebCore::jsTestObjNullableBooleanAttributeGetter): (WebCore::jsTestObjNullableBooleanAttribute): (WebCore::jsTestObjNullableStringAttributeGetter): (WebCore::jsTestObjNullableStringAttribute): (WebCore::jsTestObjNullableLongSettableAttributeGetter): (WebCore::jsTestObjNullableLongSettableAttribute): (WebCore::setJSTestObjNullableLongSettableAttributeSetter): (WebCore::setJSTestObjNullableLongSettableAttribute): (WebCore::jsTestObjNullableStringSettableAttributeGetter): (WebCore::jsTestObjNullableStringSettableAttribute): (WebCore::setJSTestObjNullableStringSettableAttributeSetter): (WebCore::setJSTestObjNullableStringSettableAttribute): (WebCore::jsTestObjNullableUSVStringSettableAttributeGetter): (WebCore::jsTestObjNullableUSVStringSettableAttribute): (WebCore::setJSTestObjNullableUSVStringSettableAttributeSetter): (WebCore::setJSTestObjNullableUSVStringSettableAttribute): (WebCore::jsTestObjNullableByteStringSettableAttributeGetter): (WebCore::jsTestObjNullableByteStringSettableAttribute): (WebCore::setJSTestObjNullableByteStringSettableAttributeSetter): (WebCore::setJSTestObjNullableByteStringSettableAttribute): (WebCore::jsTestObjAttributeGetter): (WebCore::jsTestObjAttribute): (WebCore::jsTestObjAttributeWithReservedEnumTypeGetter): (WebCore::jsTestObjAttributeWithReservedEnumType): (WebCore::setJSTestObjAttributeWithReservedEnumTypeSetter): (WebCore::setJSTestObjAttributeWithReservedEnumType): (WebCore::jsTestObjTestReadOnlyVoidPromiseAttributeGetter): (WebCore::jsTestObjTestReadOnlyVoidPromiseAttribute): (WebCore::jsTestObjTestReadOnlyPromiseAttributeGetter): (WebCore::jsTestObjTestReadOnlyPromiseAttribute): (WebCore::jsTestObjPutForwardsAttributeGetter): (WebCore::jsTestObjPutForwardsAttribute): (WebCore::setJSTestObjPutForwardsAttributeSetter): (WebCore::setJSTestObjPutForwardsAttribute): (WebCore::jsTestObjPutForwardsNullableAttributeGetter): (WebCore::jsTestObjPutForwardsNullableAttribute): (WebCore::setJSTestObjPutForwardsNullableAttributeSetter): (WebCore::setJSTestObjPutForwardsNullableAttribute): (WebCore::jsTestObjStringifierAttributeGetter): (WebCore::jsTestObjStringifierAttribute): (WebCore::setJSTestObjStringifierAttributeSetter): (WebCore::setJSTestObjStringifierAttribute): (WebCore::jsTestObjConditionallyReadWriteAttributeGetter): (WebCore::jsTestObjConditionallyReadWriteAttribute): (WebCore::setJSTestObjConditionallyReadWriteAttributeSetter): (WebCore::setJSTestObjConditionallyReadWriteAttribute): (WebCore::jsTestObjConditionalAndConditionallyReadWriteAttributeGetter): (WebCore::jsTestObjConditionalAndConditionallyReadWriteAttribute): (WebCore::setJSTestObjConditionalAndConditionallyReadWriteAttributeSetter): (WebCore::setJSTestObjConditionalAndConditionallyReadWriteAttribute): (WebCore::jsTestObjConditionallyExposedToWindowAttributeGetter): (WebCore::jsTestObjConditionallyExposedToWindowAttribute): (WebCore::setJSTestObjConditionallyExposedToWindowAttributeSetter): (WebCore::setJSTestObjConditionallyExposedToWindowAttribute): (WebCore::jsTestObjConditionallyExposedToWorkerAttributeGetter): (WebCore::jsTestObjConditionallyExposedToWorkerAttribute): (WebCore::setJSTestObjConditionallyExposedToWorkerAttributeSetter): (WebCore::setJSTestObjConditionallyExposedToWorkerAttribute): (WebCore::jsTestObjConditionallyExposedToWindowAndWorkerAttributeGetter): (WebCore::jsTestObjConditionallyExposedToWindowAndWorkerAttribute): (WebCore::setJSTestObjConditionallyExposedToWindowAndWorkerAttributeSetter): (WebCore::setJSTestObjConditionallyExposedToWindowAndWorkerAttribute): (WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation1Body): (WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation2Body): (WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperationOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionEnabledAtRuntimeOperation): (WebCore::jsTestObjConstructorFunctionEnabledAtRuntimeOperationStaticBody): (WebCore::jsTestObjConstructorFunctionEnabledAtRuntimeOperationStatic): (WebCore::jsTestObjPrototypeFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabledBody): (WebCore::jsTestObjPrototypeFunctionEnabledInSpecificWorldWhenRuntimeFeatureEnabled): (WebCore::jsTestObjPrototypeFunctionWorldSpecificMethodBody): (WebCore::jsTestObjPrototypeFunctionWorldSpecificMethod): (WebCore::jsTestObjPrototypeFunctionCalculateSecretResultBody): (WebCore::jsTestObjPrototypeFunctionCalculateSecretResult): (WebCore::jsTestObjPrototypeFunctionGetSecretBooleanBody): (WebCore::jsTestObjPrototypeFunctionGetSecretBoolean): (WebCore::jsTestObjPrototypeFunctionTestFeatureGetSecretBooleanBody): (WebCore::jsTestObjPrototypeFunctionTestFeatureGetSecretBoolean): (WebCore::jsTestObjPrototypeFunctionVoidMethodBody): (WebCore::jsTestObjPrototypeFunctionVoidMethod): (WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgsBody): (WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgs): (WebCore::jsTestObjPrototypeFunctionByteMethodBody): (WebCore::jsTestObjPrototypeFunctionByteMethod): (WebCore::jsTestObjPrototypeFunctionByteMethodWithArgsBody): (WebCore::jsTestObjPrototypeFunctionByteMethodWithArgs): (WebCore::jsTestObjPrototypeFunctionOctetMethodBody): (WebCore::jsTestObjPrototypeFunctionOctetMethod): (WebCore::jsTestObjPrototypeFunctionOctetMethodWithArgsBody): (WebCore::jsTestObjPrototypeFunctionOctetMethodWithArgs): (WebCore::jsTestObjPrototypeFunctionLongMethodBody): (WebCore::jsTestObjPrototypeFunctionLongMethod): (WebCore::jsTestObjPrototypeFunctionLongMethodWithArgsBody): (WebCore::jsTestObjPrototypeFunctionLongMethodWithArgs): (WebCore::jsTestObjPrototypeFunctionObjMethodBody): (WebCore::jsTestObjPrototypeFunctionObjMethod): (WebCore::jsTestObjPrototypeFunctionObjMethodWithArgsBody): (WebCore::jsTestObjPrototypeFunctionObjMethodWithArgs): (WebCore::jsTestObjInstanceFunctionUnforgeableMethodBody): (WebCore::jsTestObjInstanceFunctionUnforgeableMethod): (WebCore::jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyStringBody): (WebCore::jsTestObjPrototypeFunctionMethodWithArgTreatingNullAsEmptyString): (WebCore::jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameterBody): (WebCore::jsTestObjPrototypeFunctionMethodWithXPathNSResolverParameter): (WebCore::jsTestObjPrototypeFunctionNullableStringMethodBody): (WebCore::jsTestObjPrototypeFunctionNullableStringMethod): (WebCore::jsTestObjConstructorFunctionNullableStringStaticMethodBody): (WebCore::jsTestObjConstructorFunctionNullableStringStaticMethod): (WebCore::jsTestObjPrototypeFunctionNullableStringSpecialMethodBody): (WebCore::jsTestObjPrototypeFunctionNullableStringSpecialMethod): (WebCore::jsTestObjPrototypeFunctionMethodWithEnumArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithEnumArg): (WebCore::jsTestObjPrototypeFunctionMethodWithStandaloneEnumArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithStandaloneEnumArg): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArg): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgAndDefaultValueBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgAndDefaultValue): (WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrowsBody): (WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows): (WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArg): (WebCore::jsTestObjPrototypeFunctionMethodWithNullableUSVStringArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithNullableUSVStringArg): (WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyStringBody): (WebCore::jsTestObjPrototypeFunctionMethodWithUSVStringArgTreatingNullAsEmptyString): (WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArg): (WebCore::jsTestObjPrototypeFunctionMethodWithNullableByteStringArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithNullableByteStringArg): (WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArgTreatingNullAsEmptyStringBody): (WebCore::jsTestObjPrototypeFunctionMethodWithByteStringArgTreatingNullAsEmptyString): (WebCore::jsTestObjPrototypeFunctionSerializedValueBody): (WebCore::jsTestObjPrototypeFunctionSerializedValue): (WebCore::jsTestObjPrototypeFunctionMethodWithRecordBody): (WebCore::jsTestObjPrototypeFunctionMethodWithRecord): (WebCore::jsTestObjPrototypeFunctionMethodWithExceptionBody): (WebCore::jsTestObjPrototypeFunctionMethodWithException): (WebCore::jsTestObjPrototypeFunctionMethodWithExceptionReturningLongBody): (WebCore::jsTestObjPrototypeFunctionMethodWithExceptionReturningLong): (WebCore::jsTestObjPrototypeFunctionMethodWithExceptionReturningObjectBody): (WebCore::jsTestObjPrototypeFunctionMethodWithExceptionReturningObject): (WebCore::jsTestObjPrototypeFunctionCustomMethodBody): (WebCore::jsTestObjPrototypeFunctionCustomMethod): (WebCore::jsTestObjPrototypeFunctionCustomMethodWithArgsBody): (WebCore::jsTestObjPrototypeFunctionCustomMethodWithArgs): (WebCore::jsTestObjPrototypeFunctionPrivateMethodBody): (WebCore::jsTestObjPrototypeFunctionPrivateMethod): (WebCore::jsTestObjPrototypeFunctionPublicAndPrivateMethodBody): (WebCore::jsTestObjPrototypeFunctionPublicAndPrivateMethod): (WebCore::jsTestObjPrototypeFunctionAddEventListenerBody): (WebCore::jsTestObjPrototypeFunctionAddEventListener): (WebCore::jsTestObjPrototypeFunctionRemoveEventListenerBody): (WebCore::jsTestObjPrototypeFunctionRemoveEventListener): (WebCore::jsTestObjPrototypeFunctionWithExecStateVoidBody): (WebCore::jsTestObjPrototypeFunctionWithExecStateVoid): (WebCore::jsTestObjPrototypeFunctionWithExecStateObjBody): (WebCore::jsTestObjPrototypeFunctionWithExecStateObj): (WebCore::jsTestObjPrototypeFunctionWithExecStateVoidExceptionBody): (WebCore::jsTestObjPrototypeFunctionWithExecStateVoidException): (WebCore::jsTestObjPrototypeFunctionWithExecStateObjExceptionBody): (WebCore::jsTestObjPrototypeFunctionWithExecStateObjException): (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextBody): (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContext): (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateBody): (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecState): (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateObjExceptionBody): (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateObjException): (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateWithSpacesBody): (WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndExecStateWithSpaces): (WebCore::jsTestObjPrototypeFunctionWithDocumentArgumentBody): (WebCore::jsTestObjPrototypeFunctionWithDocumentArgument): (WebCore::jsTestObjPrototypeFunctionWithCallerDocumentArgumentBody): (WebCore::jsTestObjPrototypeFunctionWithCallerDocumentArgument): (WebCore::jsTestObjPrototypeFunctionWithCallerWindowArgumentBody): (WebCore::jsTestObjPrototypeFunctionWithCallerWindowArgument): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArg): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArgAndDefaultValueBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalArgAndDefaultValue): (WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg): (WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgsBody): (WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalString): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVStringBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVString): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomString): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringAndDefaultValueBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringAndDefaultValue): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringAndDefaultValueBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringAndDefaultValue): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsNullBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsNull): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefinedBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsUndefined): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsNullBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsNull): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsEmptyStringBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalStringIsEmptyString): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVStringIsEmptyStringBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUSVStringIsEmptyString): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsEmptyStringBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAtomStringIsEmptyString): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalDoubleIsNaNBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalDoubleIsNaN): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalFloatIsNaNBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalFloatIsNaN): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLongBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLong): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLongIsZeroBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalLongLongIsZero): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLongBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLong): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLongIsZeroBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalUnsignedLongLongIsZero): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequence): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceIsEmptyBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalSequenceIsEmpty): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBooleanBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBoolean): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBooleanIsFalseBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalBooleanIsFalse): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAnyBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalAny): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalObjectBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalObject): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapper): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperIsNullBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalNullableWrapperIsNull): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalXPathNSResolverBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalXPathNSResolver): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalRecordBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalRecord): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalPromiseBody): (WebCore::jsTestObjPrototypeFunctionMethodWithOptionalPromise): (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArg): (WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg): (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackAndOptionalArg): (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionArg): (WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackFunctionArg): (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionAndOptionalArgBody): (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackFunctionAndOptionalArg): (WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArgBody): (WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackAndOptionalArg): (WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackArgBody): (WebCore::jsTestObjConstructorFunctionStaticMethodWithCallbackArg): (WebCore::jsTestObjPrototypeFunctionConditionalMethod1Body): (WebCore::jsTestObjPrototypeFunctionConditionalMethod1): (WebCore::jsTestObjPrototypeFunctionConditionalMethod2Body): (WebCore::jsTestObjPrototypeFunctionConditionalMethod2): (WebCore::jsTestObjPrototypeFunctionConditionalMethod3Body): (WebCore::jsTestObjPrototypeFunctionConditionalMethod3): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod1Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod2Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod3Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod4Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod5Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod6Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod7Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod8Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod9Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod10Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod11Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod12Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod13Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter1Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameterOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion1Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion2Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnionOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions1Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions2Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnionsOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion1Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion2Body): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnionOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion): (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion1Body): (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion2Body): (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnionOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion): (WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnion1Body): (WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnion2Body): (WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnionOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnion): (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter1Body): (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter2Body): (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameterOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter): (WebCore::jsTestObjConstructorFunctionClassMethodBody): (WebCore::jsTestObjConstructorFunctionClassMethod): (WebCore::jsTestObjConstructorFunctionClassMethodWithOptionalBody): (WebCore::jsTestObjConstructorFunctionClassMethodWithOptional): (WebCore::jsTestObjConstructorFunctionClassMethod2Body): (WebCore::jsTestObjConstructorFunctionClassMethod2): (WebCore::jsTestObjConstructorFunctionOverloadedMethod11Body): (WebCore::jsTestObjConstructorFunctionOverloadedMethod12Body): (WebCore::jsTestObjConstructorFunctionOverloadedMethod1OverloadDispatcher): (WebCore::jsTestObjConstructorFunctionOverloadedMethod1): (WebCore::jsTestObjPrototypeFunctionClassMethodWithClampBody): (WebCore::jsTestObjPrototypeFunctionClassMethodWithClamp): (WebCore::jsTestObjPrototypeFunctionClassMethodWithClampOnOptionalBody): (WebCore::jsTestObjPrototypeFunctionClassMethodWithClampOnOptional): (WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRangeBody): (WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRange): (WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRangeOnOptionalBody): (WebCore::jsTestObjPrototypeFunctionClassMethodWithEnforceRangeOnOptional): (WebCore::jsTestObjPrototypeFunctionMethodWithUnsignedLongSequenceBody): (WebCore::jsTestObjPrototypeFunctionMethodWithUnsignedLongSequence): (WebCore::jsTestObjPrototypeFunctionStringArrayFunctionBody): (WebCore::jsTestObjPrototypeFunctionStringArrayFunction): (WebCore::jsTestObjPrototypeFunctionDomStringListFunctionBody): (WebCore::jsTestObjPrototypeFunctionDomStringListFunction): (WebCore::jsTestObjPrototypeFunctionOperationWithOptionalUnionParameterBody): (WebCore::jsTestObjPrototypeFunctionOperationWithOptionalUnionParameter): (WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequenceBody): (WebCore::jsTestObjPrototypeFunctionMethodWithAndWithoutNullableSequence): (WebCore::jsTestObjPrototypeFunctionGetElementByIdBody): (WebCore::jsTestObjPrototypeFunctionGetElementById): (WebCore::jsTestObjPrototypeFunctionGetSVGDocumentBody): (WebCore::jsTestObjPrototypeFunctionGetSVGDocument): (WebCore::jsTestObjPrototypeFunctionConvert1Body): (WebCore::jsTestObjPrototypeFunctionConvert1): (WebCore::jsTestObjPrototypeFunctionConvert2Body): (WebCore::jsTestObjPrototypeFunctionConvert2): (WebCore::jsTestObjPrototypeFunctionConvert3Body): (WebCore::jsTestObjPrototypeFunctionConvert3): (WebCore::jsTestObjPrototypeFunctionConvert4Body): (WebCore::jsTestObjPrototypeFunctionConvert4): (WebCore::jsTestObjPrototypeFunctionMutablePointFunctionBody): (WebCore::jsTestObjPrototypeFunctionMutablePointFunction): (WebCore::jsTestObjPrototypeFunctionOrangeBody): (WebCore::jsTestObjPrototypeFunctionOrange): (WebCore::jsTestObjPrototypeFunctionVariadicStringMethodBody): (WebCore::jsTestObjPrototypeFunctionVariadicStringMethod): (WebCore::jsTestObjPrototypeFunctionVariadicDoubleMethodBody): (WebCore::jsTestObjPrototypeFunctionVariadicDoubleMethod): (WebCore::jsTestObjPrototypeFunctionVariadicNodeMethodBody): (WebCore::jsTestObjPrototypeFunctionVariadicNodeMethod): (WebCore::jsTestObjPrototypeFunctionVariadicUnionMethodBody): (WebCore::jsTestObjPrototypeFunctionVariadicUnionMethod): (WebCore::jsTestObjPrototypeFunctionAnyBody): (WebCore::jsTestObjPrototypeFunctionAny): (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionBody): (WebCore::jsTestObjPrototypeFunctionTestPromiseFunction): (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentBody): (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgument): (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionBody): (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithException): (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgumentBody): (WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithOptionalIntArgument): (WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Body): (WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Body): (WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunctionOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction): (WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionBody): (WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunction): (WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionBody): (WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithException): (WebCore::jsTestObjPrototypeFunctionTestCustomPromiseFunctionBody): (WebCore::jsTestObjPrototypeFunctionTestCustomPromiseFunction): (WebCore::jsTestObjConstructorFunctionTestStaticCustomPromiseFunctionBody): (WebCore::jsTestObjConstructorFunctionTestStaticCustomPromiseFunction): (WebCore::jsTestObjPrototypeFunctionTestCustomReturnsOwnPromiseFunctionBody): (WebCore::jsTestObjPrototypeFunctionTestCustomReturnsOwnPromiseFunction): (WebCore::jsTestObjPrototypeFunctionTestReturnsOwnPromiseAndPromiseProxyFunctionBody): (WebCore::jsTestObjPrototypeFunctionTestReturnsOwnPromiseAndPromiseProxyFunction): (WebCore::jsTestObjPrototypeFunctionConditionalOverload1Body): (WebCore::jsTestObjPrototypeFunctionConditionalOverload2Body): (WebCore::jsTestObjPrototypeFunctionConditionalOverloadOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionConditionalOverload): (WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload1Body): (WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload2Body): (WebCore::jsTestObjPrototypeFunctionSingleConditionalOverloadOverloadDispatcher): (WebCore::jsTestObjPrototypeFunctionSingleConditionalOverload): (WebCore::jsTestObjPrototypeFunctionAttachShadowRootBody): (WebCore::jsTestObjPrototypeFunctionAttachShadowRoot): (WebCore::jsTestObjPrototypeFunctionOperationWithExternalDictionaryParameterBody): (WebCore::jsTestObjPrototypeFunctionOperationWithExternalDictionaryParameter): (WebCore::jsTestObjPrototypeFunctionBufferSourceParameterBody): (WebCore::jsTestObjPrototypeFunctionBufferSourceParameter): (WebCore::jsTestObjPrototypeFunctionLegacyCallerNamedBody): (WebCore::jsTestObjPrototypeFunctionLegacyCallerNamed): (WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimizationBody): (WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimization): (WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimizationWithExceptionBody): (WebCore::jsTestObjPrototypeFunctionTestReturnValueOptimizationWithException): (WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWindowFunctionBody): (WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWindowFunction): (WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWorkerFunctionBody): (WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWorkerFunction): (WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWindowAndWorkerFunctionBody): (WebCore::jsTestObjPrototypeFunctionConditionallyExposedToWindowAndWorkerFunction): (WebCore::jsTestObjPrototypeFunctionToStringBody): (WebCore::jsTestObjPrototypeFunctionToString): (WebCore::JSTestObj::serialize): (WebCore::jsTestObjPrototypeFunctionToJSONBody): (WebCore::jsTestObjPrototypeFunctionToJSON): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestObj.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: (WebCore::constructJSTestOverloadedConstructors1): (WebCore::constructJSTestOverloadedConstructors2): (WebCore::constructJSTestOverloadedConstructors3): (WebCore::constructJSTestOverloadedConstructors4): (WebCore::constructJSTestOverloadedConstructors5): (WebCore::JSTestOverloadedConstructorsConstructor::construct): (WebCore::jsTestOverloadedConstructorsConstructor): (WebCore::setJSTestOverloadedConstructorsConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestOverloadedConstructors.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: (WebCore::constructJSTestOverloadedConstructorsWithSequence1): (WebCore::constructJSTestOverloadedConstructorsWithSequence2): (WebCore::JSTestOverloadedConstructorsWithSequenceConstructor::construct): (WebCore::jsTestOverloadedConstructorsWithSequenceConstructor): (WebCore::setJSTestOverloadedConstructorsWithSequenceConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: (WebCore::JSTestOverrideBuiltins::getOwnPropertySlot): (WebCore::JSTestOverrideBuiltins::getOwnPropertySlotByIndex): (WebCore::JSTestOverrideBuiltins::getOwnPropertyNames): (WebCore::IDLOperation<JSTestOverrideBuiltins>::cast): (WebCore::jsTestOverrideBuiltinsConstructor): (WebCore::setJSTestOverrideBuiltinsConstructor): (WebCore::jsTestOverrideBuiltinsPrototypeFunctionNamedItemBody): (WebCore::jsTestOverrideBuiltinsPrototypeFunctionNamedItem): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestOverrideBuiltins.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestPluginInterface.cpp: (WebCore::JSTestPluginInterface::getOwnPropertySlot): (WebCore::JSTestPluginInterface::getOwnPropertySlotByIndex): (WebCore::JSTestPluginInterface::put): (WebCore::JSTestPluginInterface::putByIndex): (WebCore::jsTestPluginInterfaceConstructor): (WebCore::setJSTestPluginInterfaceConstructor): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestPluginInterface.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: (WebCore::convertDictionary<TestPromiseRejectionEvent::Init>): (WebCore::JSTestPromiseRejectionEventConstructor::construct): (WebCore::IDLAttribute<JSTestPromiseRejectionEvent>::cast): (WebCore::jsTestPromiseRejectionEventConstructor): (WebCore::setJSTestPromiseRejectionEventConstructor): (WebCore::jsTestPromiseRejectionEventPromiseGetter): (WebCore::jsTestPromiseRejectionEventPromise): (WebCore::jsTestPromiseRejectionEventReasonGetter): (WebCore::jsTestPromiseRejectionEventReason): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestSerialization.cpp: (WebCore::IDLAttribute<JSTestSerialization>::cast): (WebCore::IDLOperation<JSTestSerialization>::cast): (WebCore::jsTestSerializationConstructor): (WebCore::setJSTestSerializationConstructor): (WebCore::jsTestSerializationFirstStringAttributeGetter): (WebCore::jsTestSerializationFirstStringAttribute): (WebCore::setJSTestSerializationFirstStringAttributeSetter): (WebCore::setJSTestSerializationFirstStringAttribute): (WebCore::jsTestSerializationSecondLongAttributeGetter): (WebCore::jsTestSerializationSecondLongAttribute): (WebCore::setJSTestSerializationSecondLongAttributeSetter): (WebCore::setJSTestSerializationSecondLongAttribute): (WebCore::jsTestSerializationThirdUnserializableAttributeGetter): (WebCore::jsTestSerializationThirdUnserializableAttribute): (WebCore::setJSTestSerializationThirdUnserializableAttributeSetter): (WebCore::setJSTestSerializationThirdUnserializableAttribute): (WebCore::jsTestSerializationFourthUnrestrictedDoubleAttributeGetter): (WebCore::jsTestSerializationFourthUnrestrictedDoubleAttribute): (WebCore::setJSTestSerializationFourthUnrestrictedDoubleAttributeSetter): (WebCore::setJSTestSerializationFourthUnrestrictedDoubleAttribute): (WebCore::jsTestSerializationFifthLongAttributeGetter): (WebCore::jsTestSerializationFifthLongAttribute): (WebCore::setJSTestSerializationFifthLongAttributeSetter): (WebCore::setJSTestSerializationFifthLongAttribute): (WebCore::jsTestSerializationSixthTypedefAttributeGetter): (WebCore::jsTestSerializationSixthTypedefAttribute): (WebCore::setJSTestSerializationSixthTypedefAttributeSetter): (WebCore::setJSTestSerializationSixthTypedefAttribute): (WebCore::jsTestSerializationSeventhDirectlySerializableAttributeGetter): (WebCore::jsTestSerializationSeventhDirectlySerializableAttribute): (WebCore::setJSTestSerializationSeventhDirectlySerializableAttributeSetter): (WebCore::setJSTestSerializationSeventhDirectlySerializableAttribute): (WebCore::jsTestSerializationEighthIndirectlyAttributeGetter): (WebCore::jsTestSerializationEighthIndirectlyAttribute): (WebCore::setJSTestSerializationEighthIndirectlyAttributeSetter): (WebCore::setJSTestSerializationEighthIndirectlyAttribute): (WebCore::jsTestSerializationNinthOptionalDirectlySerializableAttributeGetter): (WebCore::jsTestSerializationNinthOptionalDirectlySerializableAttribute): (WebCore::setJSTestSerializationNinthOptionalDirectlySerializableAttributeSetter): (WebCore::setJSTestSerializationNinthOptionalDirectlySerializableAttribute): (WebCore::jsTestSerializationTenthFrozenArrayAttributeGetter): (WebCore::jsTestSerializationTenthFrozenArrayAttribute): (WebCore::setJSTestSerializationTenthFrozenArrayAttributeSetter): (WebCore::setJSTestSerializationTenthFrozenArrayAttribute): (WebCore::jsTestSerializationEleventhSequenceAttributeGetter): (WebCore::jsTestSerializationEleventhSequenceAttribute): (WebCore::setJSTestSerializationEleventhSequenceAttributeSetter): (WebCore::setJSTestSerializationEleventhSequenceAttribute): (WebCore::jsTestSerializationTwelfthInterfaceSequenceAttributeGetter): (WebCore::jsTestSerializationTwelfthInterfaceSequenceAttribute): (WebCore::setJSTestSerializationTwelfthInterfaceSequenceAttributeSetter): (WebCore::setJSTestSerializationTwelfthInterfaceSequenceAttribute): (WebCore::JSTestSerialization::serialize): (WebCore::jsTestSerializationPrototypeFunctionToJSONBody): (WebCore::jsTestSerializationPrototypeFunctionToJSON): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestSerialization.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp: (WebCore::jsTestSerializationIndirectInheritanceConstructor): (WebCore::setJSTestSerializationIndirectInheritanceConstructor): * bindings/scripts/test/JS/JSTestSerializationInherit.cpp: (WebCore::IDLAttribute<JSTestSerializationInherit>::cast): (WebCore::IDLOperation<JSTestSerializationInherit>::cast): (WebCore::jsTestSerializationInheritConstructor): (WebCore::setJSTestSerializationInheritConstructor): (WebCore::jsTestSerializationInheritInheritLongAttributeGetter): (WebCore::jsTestSerializationInheritInheritLongAttribute): (WebCore::setJSTestSerializationInheritInheritLongAttributeSetter): (WebCore::setJSTestSerializationInheritInheritLongAttribute): (WebCore::JSTestSerializationInherit::serialize): (WebCore::jsTestSerializationInheritPrototypeFunctionToJSONBody): (WebCore::jsTestSerializationInheritPrototypeFunctionToJSON): * bindings/scripts/test/JS/JSTestSerializationInherit.h: * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp: (WebCore::IDLAttribute<JSTestSerializationInheritFinal>::cast): (WebCore::IDLOperation<JSTestSerializationInheritFinal>::cast): (WebCore::jsTestSerializationInheritFinalConstructor): (WebCore::setJSTestSerializationInheritFinalConstructor): (WebCore::jsTestSerializationInheritFinalFinalLongAttributeFooGetter): (WebCore::jsTestSerializationInheritFinalFinalLongAttributeFoo): (WebCore::setJSTestSerializationInheritFinalFinalLongAttributeFooSetter): (WebCore::setJSTestSerializationInheritFinalFinalLongAttributeFoo): (WebCore::jsTestSerializationInheritFinalFinalLongAttributeBarGetter): (WebCore::jsTestSerializationInheritFinalFinalLongAttributeBar): (WebCore::setJSTestSerializationInheritFinalFinalLongAttributeBarSetter): (WebCore::setJSTestSerializationInheritFinalFinalLongAttributeBar): (WebCore::JSTestSerializationInheritFinal::serialize): (WebCore::jsTestSerializationInheritFinalPrototypeFunctionToJSONBody): (WebCore::jsTestSerializationInheritFinalPrototypeFunctionToJSON): * bindings/scripts/test/JS/JSTestSerializationInheritFinal.h: * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: (WebCore::IDLAttribute<JSTestSerializedScriptValueInterface>::cast): (WebCore::IDLOperation<JSTestSerializedScriptValueInterface>::cast): (WebCore::jsTestSerializedScriptValueInterfaceConstructor): (WebCore::setJSTestSerializedScriptValueInterfaceConstructor): (WebCore::jsTestSerializedScriptValueInterfaceValueGetter): (WebCore::jsTestSerializedScriptValueInterfaceValue): (WebCore::setJSTestSerializedScriptValueInterfaceValueSetter): (WebCore::setJSTestSerializedScriptValueInterfaceValue): (WebCore::jsTestSerializedScriptValueInterfaceReadonlyValueGetter): (WebCore::jsTestSerializedScriptValueInterfaceReadonlyValue): (WebCore::jsTestSerializedScriptValueInterfaceCachedValueGetter): (WebCore::jsTestSerializedScriptValueInterfaceCachedValue): (WebCore::setJSTestSerializedScriptValueInterfaceCachedValueSetter): (WebCore::setJSTestSerializedScriptValueInterfaceCachedValue): (WebCore::jsTestSerializedScriptValueInterfacePortsGetter): (WebCore::jsTestSerializedScriptValueInterfacePorts): (WebCore::jsTestSerializedScriptValueInterfaceCachedReadonlyValueGetter): (WebCore::jsTestSerializedScriptValueInterfaceCachedReadonlyValue): (WebCore::jsTestSerializedScriptValueInterfacePrototypeFunctionFunctionBody): (WebCore::jsTestSerializedScriptValueInterfacePrototypeFunctionFunction): (WebCore::jsTestSerializedScriptValueInterfacePrototypeFunctionFunctionReturningBody): (WebCore::jsTestSerializedScriptValueInterfacePrototypeFunctionFunctionReturning): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp: (WebCore::convertDictionary<DictionaryImplName>): (WebCore::convertDictionaryToJS): (WebCore::convertEnumerationToJS): (WebCore::parseEnumeration<TestStandaloneDictionary::EnumInStandaloneDictionaryFile>): * bindings/scripts/test/JS/JSTestStandaloneDictionary.h: * bindings/scripts/test/JS/JSTestStandaloneEnumeration.cpp: (WebCore::convertEnumerationToJS): (WebCore::parseEnumeration<TestStandaloneEnumeration>): * bindings/scripts/test/JS/JSTestStandaloneEnumeration.h: * bindings/scripts/test/JS/JSTestStringifier.cpp: (WebCore::IDLOperation<JSTestStringifier>::cast): (WebCore::jsTestStringifierConstructor): (WebCore::setJSTestStringifierConstructor): (WebCore::jsTestStringifierPrototypeFunctionToStringBody): (WebCore::jsTestStringifierPrototypeFunctionToString): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestStringifier.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: (WebCore::IDLOperation<JSTestStringifierAnonymousOperation>::cast): (WebCore::jsTestStringifierAnonymousOperationConstructor): (WebCore::setJSTestStringifierAnonymousOperationConstructor): (WebCore::jsTestStringifierAnonymousOperationPrototypeFunctionToStringBody): (WebCore::jsTestStringifierAnonymousOperationPrototypeFunctionToString): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: (WebCore::IDLOperation<JSTestStringifierNamedOperation>::cast): (WebCore::jsTestStringifierNamedOperationConstructor): (WebCore::setJSTestStringifierNamedOperationConstructor): (WebCore::jsTestStringifierNamedOperationPrototypeFunctionIdentifierBody): (WebCore::jsTestStringifierNamedOperationPrototypeFunctionIdentifier): (WebCore::jsTestStringifierNamedOperationPrototypeFunctionToStringBody): (WebCore::jsTestStringifierNamedOperationPrototypeFunctionToString): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestStringifierNamedOperation.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: (WebCore::IDLOperation<JSTestStringifierOperationImplementedAs>::cast): (WebCore::jsTestStringifierOperationImplementedAsConstructor): (WebCore::setJSTestStringifierOperationImplementedAsConstructor): (WebCore::jsTestStringifierOperationImplementedAsPrototypeFunctionIdentifierBody): (WebCore::jsTestStringifierOperationImplementedAsPrototypeFunctionIdentifier): (WebCore::jsTestStringifierOperationImplementedAsPrototypeFunctionToStringBody): (WebCore::jsTestStringifierOperationImplementedAsPrototypeFunctionToString): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: (WebCore::IDLOperation<JSTestStringifierOperationNamedToString>::cast): (WebCore::jsTestStringifierOperationNamedToStringConstructor): (WebCore::setJSTestStringifierOperationNamedToStringConstructor): (WebCore::jsTestStringifierOperationNamedToStringPrototypeFunctionToStringBody): (WebCore::jsTestStringifierOperationNamedToStringPrototypeFunctionToString): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: (WebCore::IDLAttribute<JSTestStringifierReadOnlyAttribute>::cast): (WebCore::IDLOperation<JSTestStringifierReadOnlyAttribute>::cast): (WebCore::jsTestStringifierReadOnlyAttributeConstructor): (WebCore::setJSTestStringifierReadOnlyAttributeConstructor): (WebCore::jsTestStringifierReadOnlyAttributeIdentifierGetter): (WebCore::jsTestStringifierReadOnlyAttributeIdentifier): (WebCore::jsTestStringifierReadOnlyAttributePrototypeFunctionToStringBody): (WebCore::jsTestStringifierReadOnlyAttributePrototypeFunctionToString): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: (WebCore::IDLAttribute<JSTestStringifierReadWriteAttribute>::cast): (WebCore::IDLOperation<JSTestStringifierReadWriteAttribute>::cast): (WebCore::jsTestStringifierReadWriteAttributeConstructor): (WebCore::setJSTestStringifierReadWriteAttributeConstructor): (WebCore::jsTestStringifierReadWriteAttributeIdentifierGetter): (WebCore::jsTestStringifierReadWriteAttributeIdentifier): (WebCore::setJSTestStringifierReadWriteAttributeIdentifierSetter): (WebCore::setJSTestStringifierReadWriteAttributeIdentifier): (WebCore::jsTestStringifierReadWriteAttributePrototypeFunctionToStringBody): (WebCore::jsTestStringifierReadWriteAttributePrototypeFunctionToString): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestTypedefs.cpp: (WebCore::JSTestTypedefsConstructor::construct): (WebCore::IDLAttribute<JSTestTypedefs>::cast): (WebCore::IDLOperation<JSTestTypedefs>::cast): (WebCore::jsTestTypedefsConstructor): (WebCore::setJSTestTypedefsConstructor): (WebCore::jsTestTypedefsUnsignedLongLongAttrGetter): (WebCore::jsTestTypedefsUnsignedLongLongAttr): (WebCore::setJSTestTypedefsUnsignedLongLongAttrSetter): (WebCore::setJSTestTypedefsUnsignedLongLongAttr): (WebCore::jsTestTypedefsSerializedScriptValueGetter): (WebCore::jsTestTypedefsSerializedScriptValue): (WebCore::setJSTestTypedefsSerializedScriptValueSetter): (WebCore::setJSTestTypedefsSerializedScriptValue): (WebCore::jsTestTypedefsConstructorTestSubObjGetter): (WebCore::jsTestTypedefsConstructorTestSubObj): (WebCore::jsTestTypedefsAttributeWithClampGetter): (WebCore::jsTestTypedefsAttributeWithClamp): (WebCore::setJSTestTypedefsAttributeWithClampSetter): (WebCore::setJSTestTypedefsAttributeWithClamp): (WebCore::jsTestTypedefsAttributeWithClampInTypedefGetter): (WebCore::jsTestTypedefsAttributeWithClampInTypedef): (WebCore::setJSTestTypedefsAttributeWithClampInTypedefSetter): (WebCore::setJSTestTypedefsAttributeWithClampInTypedef): (WebCore::jsTestTypedefsBufferSourceAttrGetter): (WebCore::jsTestTypedefsBufferSourceAttr): (WebCore::setJSTestTypedefsBufferSourceAttrSetter): (WebCore::setJSTestTypedefsBufferSourceAttr): (WebCore::jsTestTypedefsDomTimeStampAttrGetter): (WebCore::jsTestTypedefsDomTimeStampAttr): (WebCore::setJSTestTypedefsDomTimeStampAttrSetter): (WebCore::setJSTestTypedefsDomTimeStampAttr): (WebCore::jsTestTypedefsPrototypeFunctionFuncBody): (WebCore::jsTestTypedefsPrototypeFunctionFunc): (WebCore::jsTestTypedefsPrototypeFunctionSetShadowBody): (WebCore::jsTestTypedefsPrototypeFunctionSetShadow): (WebCore::jsTestTypedefsPrototypeFunctionMethodWithSequenceArgBody): (WebCore::jsTestTypedefsPrototypeFunctionMethodWithSequenceArg): (WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceArgBody): (WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceArg): (WebCore::jsTestTypedefsPrototypeFunctionSequenceOfNullablesArgBody): (WebCore::jsTestTypedefsPrototypeFunctionSequenceOfNullablesArg): (WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfNullablesArgBody): (WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfNullablesArg): (WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfUnionsArgBody): (WebCore::jsTestTypedefsPrototypeFunctionNullableSequenceOfUnionsArg): (WebCore::jsTestTypedefsPrototypeFunctionUnionArgBody): (WebCore::jsTestTypedefsPrototypeFunctionUnionArg): (WebCore::jsTestTypedefsPrototypeFunctionFuncWithClampBody): (WebCore::jsTestTypedefsPrototypeFunctionFuncWithClamp): (WebCore::jsTestTypedefsPrototypeFunctionFuncWithClampInTypedefBody): (WebCore::jsTestTypedefsPrototypeFunctionFuncWithClampInTypedef): (WebCore::jsTestTypedefsPrototypeFunctionPointFunctionBody): (WebCore::jsTestTypedefsPrototypeFunctionPointFunction): (WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunctionBody): (WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction): (WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction2Body): (WebCore::jsTestTypedefsPrototypeFunctionStringSequenceFunction2): (WebCore::jsTestTypedefsPrototypeFunctionCallWithSequenceThatRequiresIncludeBody): (WebCore::jsTestTypedefsPrototypeFunctionCallWithSequenceThatRequiresInclude): (WebCore::jsTestTypedefsPrototypeFunctionMethodWithExceptionBody): (WebCore::jsTestTypedefsPrototypeFunctionMethodWithException): (WebCore::toJSNewlyCreated): (WebCore::toJS): * bindings/scripts/test/JS/JSTestTypedefs.h: (WebCore::toJS): (WebCore::toJSNewlyCreated): * bindings/scripts/test/JS/JSTestVoidCallbackFunction.cpp: (WebCore::JSTestVoidCallbackFunction::handleEvent): * bindings/scripts/test/TestObj.idl: * bindings/scripts/test/TestPromiseRejectionEvent.idl: * bridge/NP_jsobject.cpp: (JSC::getListFromVariantArgs): * bridge/c/c_instance.cpp: (JSC::Bindings::CInstance::moveGlobalExceptionToExecState): (JSC::Bindings::CInstance::newRuntimeObject): (JSC::Bindings::CRuntimeMethod::create): (JSC::Bindings::CInstance::getMethod): (JSC::Bindings::CInstance::invokeMethod): (JSC::Bindings::CInstance::invokeDefaultMethod): (JSC::Bindings::CInstance::invokeConstruct): (JSC::Bindings::CInstance::defaultValue const): (JSC::Bindings::CInstance::stringValue const): (JSC::Bindings::CInstance::numberValue const): (JSC::Bindings::CInstance::valueOf const): (JSC::Bindings::CInstance::toJSPrimitive const): (JSC::Bindings::CInstance::getPropertyNames): * bridge/c/c_instance.h: * bridge/c/c_runtime.cpp: (JSC::Bindings::CField::valueFromInstance const): (JSC::Bindings::CField::setValueToInstance const): * bridge/c/c_runtime.h: * bridge/c/c_utility.cpp: (JSC::Bindings::convertValueToNPVariant): (JSC::Bindings::convertNPVariantToValue): (JSC::Bindings::identifierFromNPIdentifier): * bridge/c/c_utility.h: * bridge/jsc/BridgeJSC.cpp: (JSC::Bindings::Instance::createRuntimeObject): (JSC::Bindings::Instance::newRuntimeObject): * bridge/jsc/BridgeJSC.h: (JSC::Bindings::Class::fallbackObject): (JSC::Bindings::Instance::setValueOfUndefinedField): (JSC::Bindings::Instance::invokeDefaultMethod): (JSC::Bindings::Instance::invokeConstruct): (JSC::Bindings::Instance::getPropertyNames): (JSC::Bindings::Instance::getOwnPropertySlot): (JSC::Bindings::Instance::put): * bridge/objc/WebScriptObject.mm: (WebCore::addExceptionToConsole): (-[WebScriptObject _isSafeScript]): (-[WebScriptObject _globalContextRef]): (getListFromNSArray): (-[WebScriptObject callWebScriptMethod:withArguments:]): (-[WebScriptObject evaluateWebScript:]): (-[WebScriptObject setValue:forKey:]): (-[WebScriptObject valueForKey:]): (-[WebScriptObject removeWebScriptKey:]): (-[WebScriptObject hasWebScriptKey:]): (-[WebScriptObject stringRepresentation]): (-[WebScriptObject webScriptValueAtIndex:]): (-[WebScriptObject setWebScriptValueAtIndex:value:]): (-[WebScriptObject JSObject]): (+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]): * bridge/objc/objc_class.h: * bridge/objc/objc_class.mm: (JSC::Bindings::ObjcClass::fallbackObject): * bridge/objc/objc_instance.h: * bridge/objc/objc_instance.mm: (ObjcInstance::newRuntimeObject): (ObjcInstance::moveGlobalExceptionToExecState): (ObjCRuntimeMethod::create): (ObjcInstance::invokeMethod): (ObjcInstance::invokeObjcMethod): (ObjcInstance::invokeDefaultMethod): (ObjcInstance::setValueOfUndefinedField): (ObjcInstance::getValueOfUndefinedField const): (ObjcInstance::defaultValue const): (ObjcInstance::stringValue const): (ObjcInstance::numberValue const): (ObjcInstance::valueOf const): * bridge/objc/objc_runtime.h: (JSC::Bindings::ObjcFallbackObjectImp::create): * bridge/objc/objc_runtime.mm: (JSC::Bindings::ObjcField::valueFromInstance const): (JSC::Bindings::convertValueToObjcObject): (JSC::Bindings::ObjcField::setValueToInstance const): (JSC::Bindings::ObjcArray::setValueAt const): (JSC::Bindings::ObjcArray::valueAt const): (JSC::Bindings::ObjcFallbackObjectImp::getOwnPropertySlot): (JSC::Bindings::ObjcFallbackObjectImp::put): (JSC::Bindings::callObjCFallbackObject): (JSC::Bindings::ObjcFallbackObjectImp::deleteProperty): (JSC::Bindings::ObjcFallbackObjectImp::defaultValue): (JSC::Bindings::ObjcFallbackObjectImp::toBoolean const): * bridge/objc/objc_utility.h: * bridge/objc/objc_utility.mm: (JSC::Bindings::convertValueToObjcValue): (JSC::Bindings::convertNSStringToString): (JSC::Bindings::convertObjcValueToValue): (JSC::Bindings::throwError): * bridge/runtime_array.cpp: (JSC::RuntimeArray::RuntimeArray): (JSC::RuntimeArray::lengthGetter): (JSC::RuntimeArray::getOwnPropertyNames): (JSC::RuntimeArray::getOwnPropertySlot): (JSC::RuntimeArray::getOwnPropertySlotByIndex): (JSC::RuntimeArray::put): (JSC::RuntimeArray::putByIndex): (JSC::RuntimeArray::deleteProperty): (JSC::RuntimeArray::deletePropertyByIndex): * bridge/runtime_array.h: (JSC::RuntimeArray::create): * bridge/runtime_method.cpp: (JSC::RuntimeMethod::lengthGetter): (JSC::RuntimeMethod::getOwnPropertySlot): (JSC::callRuntimeMethod): * bridge/runtime_method.h: * bridge/runtime_object.cpp: (JSC::Bindings::RuntimeObject::fallbackObjectGetter): (JSC::Bindings::RuntimeObject::fieldGetter): (JSC::Bindings::RuntimeObject::methodGetter): (JSC::Bindings::RuntimeObject::getOwnPropertySlot): (JSC::Bindings::RuntimeObject::put): (JSC::Bindings::RuntimeObject::deleteProperty): (JSC::Bindings::RuntimeObject::defaultValue): (JSC::Bindings::callRuntimeObject): (JSC::Bindings::callRuntimeConstructor): (JSC::Bindings::RuntimeObject::getOwnPropertyNames): (JSC::Bindings::RuntimeObject::throwInvalidAccessError): * bridge/runtime_object.h: * bridge/testbindings.cpp: (main): * bridge/testbindings.mm: (main): * contentextensions/ContentExtensionParser.cpp: (WebCore::ContentExtensions::getStringList): (WebCore::ContentExtensions::getDomainList): (WebCore::ContentExtensions::getTypeFlags): (WebCore::ContentExtensions::loadTrigger): (WebCore::ContentExtensions::loadAction): (WebCore::ContentExtensions::loadRule): (WebCore::ContentExtensions::loadEncodedRules): (WebCore::ContentExtensions::parseRuleList): * crypto/SubtleCrypto.cpp: (WebCore::toHashIdentifier): (WebCore::normalizeCryptoAlgorithmParameters): (WebCore::SubtleCrypto::encrypt): (WebCore::SubtleCrypto::decrypt): (WebCore::SubtleCrypto::sign): (WebCore::SubtleCrypto::verify): (WebCore::SubtleCrypto::digest): (WebCore::SubtleCrypto::generateKey): (WebCore::SubtleCrypto::deriveKey): (WebCore::SubtleCrypto::deriveBits): (WebCore::SubtleCrypto::importKey): (WebCore::SubtleCrypto::wrapKey): (WebCore::SubtleCrypto::unwrapKey): * crypto/SubtleCrypto.h: * crypto/SubtleCrypto.idl: * css/CSSFontFace.h: * dom/CustomElementReactionQueue.cpp: (WebCore::CustomElementReactionQueue::ElementQueue::processQueue): (WebCore::CustomElementReactionStack::processQueue): * dom/CustomElementReactionQueue.h: (WebCore::CustomElementReactionStack::CustomElementReactionStack): * dom/Document.cpp: (WebCore::Document::shouldBypassMainWorldContentSecurityPolicy const): (WebCore::Document::addMessage): * dom/Document.h: * dom/Element.cpp: (WebCore::Element::shadowRootForBindings const): (WebCore::Element::animate): * dom/Element.h: * dom/Element.idl: * dom/ErrorEvent.cpp: (WebCore::ErrorEvent::error): (WebCore::ErrorEvent::trySerializeError): * dom/ErrorEvent.h: * dom/ErrorEvent.idl: * dom/MessagePort.cpp: (WebCore::MessagePort::postMessage): * dom/MessagePort.h: * dom/MessagePort.idl: * dom/MouseEvent.cpp: (WebCore::MouseEvent::initMouseEventQuirk): * dom/MouseEvent.h: * dom/MouseEvent.idl: * dom/PopStateEvent.cpp: (WebCore::PopStateEvent::trySerializeState): * dom/PopStateEvent.h: * dom/RejectedPromiseTracker.cpp: (WebCore::createScriptCallStackFromReason): (WebCore::RejectedPromiseTracker::promiseRejected): (WebCore::RejectedPromiseTracker::promiseHandled): (WebCore::RejectedPromiseTracker::reportUnhandledRejections): * dom/RejectedPromiseTracker.h: * dom/ScriptExecutionContext.cpp: (WebCore::ScriptExecutionContext::reportUnhandledPromiseRejection): (WebCore::ScriptExecutionContext::addConsoleMessage): (WebCore::ScriptExecutionContext::execState): * dom/ScriptExecutionContext.h: * dom/make_event_factory.pl: (generateImplementation): * domjit/DOMJITHelpers.h: (WebCore::DOMJIT::toWrapperSlow): * domjit/DOMJITIDLConvert.h: (WebCore::DOMJIT::DirectConverter<IDLDOMString>::directConvert): (WebCore::DOMJIT::DirectConverter<IDLAtomStringAdaptor<IDLDOMString>>::directConvert): (WebCore::DOMJIT::DirectConverter<IDLRequiresExistingAtomStringAdaptor<IDLDOMString>>::directConvert): * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::getContext): * html/HTMLCanvasElement.h: * html/HTMLCanvasElement.idl: * html/HTMLFrameElement.idl: * html/HTMLFrameElementBase.cpp: (WebCore::HTMLFrameElementBase::setLocation): * html/HTMLFrameElementBase.h: * html/HTMLMediaElement.cpp: (WebCore::controllerJSValue): (WebCore::HTMLMediaElement::setupAndCallJS): (WebCore::HTMLMediaElement::updateCaptionContainer): (WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript): (WebCore::HTMLMediaElement::setControllerJSProperty): (WebCore::HTMLMediaElement::didAddUserAgentShadowRoot): (WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange): (WebCore::HTMLMediaElement::getCurrentMediaControlsStatus): * html/HTMLMediaElement.h: * html/HTMLPlugInImageElement.cpp: (WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot): * html/OffscreenCanvas.cpp: (WebCore::OffscreenCanvas::getContext): * html/OffscreenCanvas.h: * html/OffscreenCanvas.idl: * html/canvas/WebGLAny.h: * html/track/DataCue.cpp: (WebCore::DataCue::value const): (WebCore::DataCue::setValue): * html/track/DataCue.h: * html/track/DataCue.idl: * inspector/CommandLineAPIHost.cpp: (WebCore::CommandLineAPIHost::inspect): (WebCore::CommandLineAPIHost::getEventListeners): (WebCore::CommandLineAPIHost::InspectableObject::get): (WebCore::CommandLineAPIHost::inspectedObject): (WebCore::CommandLineAPIHost::wrapper): * inspector/CommandLineAPIHost.h: * inspector/CommandLineAPIHost.idl: * inspector/CommandLineAPIModule.cpp: (WebCore::CommandLineAPIModule::host const): * inspector/CommandLineAPIModule.h: * inspector/InspectorCanvas.cpp: (WebCore::InspectorCanvas::resolveContext const): * inspector/InspectorCanvas.h: * inspector/InspectorController.cpp: (WebCore::InspectorController::canAccessInspectedScriptState const): * inspector/InspectorController.h: * inspector/InspectorFrontendHost.cpp: (WebCore::InspectorFrontendHost::addSelfToGlobalObjectInWorld): (WebCore::InspectorFrontendHost::showContextMenu): * inspector/InspectorInstrumentation.cpp: (WebCore::InspectorInstrumentation::didPostMessageImpl): (WebCore::InspectorInstrumentation::consoleCountImpl): (WebCore::InspectorInstrumentation::consoleCountResetImpl): (WebCore::InspectorInstrumentation::startConsoleTimingImpl): (WebCore::InspectorInstrumentation::logConsoleTimingImpl): (WebCore::InspectorInstrumentation::stopConsoleTimingImpl): (WebCore::InspectorInstrumentation::startProfilingImpl): (WebCore::InspectorInstrumentation::stopProfilingImpl): (WebCore::InspectorInstrumentation::consoleStartRecordingCanvasImpl): * inspector/InspectorInstrumentation.h: (WebCore::InspectorInstrumentation::didPostMessage): (WebCore::InspectorInstrumentation::consoleCount): (WebCore::InspectorInstrumentation::consoleCountReset): (WebCore::InspectorInstrumentation::startConsoleTiming): (WebCore::InspectorInstrumentation::logConsoleTiming): (WebCore::InspectorInstrumentation::stopConsoleTiming): (WebCore::InspectorInstrumentation::startProfiling): (WebCore::InspectorInstrumentation::stopProfiling): (WebCore::InspectorInstrumentation::consoleStartRecordingCanvas): * inspector/PageScriptDebugServer.cpp: (WebCore::PageScriptDebugServer::isContentScript const): (WebCore::PageScriptDebugServer::reportException const): * inspector/PageScriptDebugServer.h: * inspector/WebInjectedScriptHost.cpp: (WebCore::WebInjectedScriptHost::subtype): (WebCore::constructInternalProperty): (WebCore::objectForPaymentOptions): (WebCore::objectForPaymentCurrencyAmount): (WebCore::objectForPaymentItem): (WebCore::objectForPaymentShippingOption): (WebCore::objectForPaymentDetailsModifier): (WebCore::objectForPaymentDetails): (WebCore::WebInjectedScriptHost::getInternalProperties): * inspector/WebInjectedScriptHost.h: * inspector/WebInjectedScriptManager.cpp: (WebCore::WebInjectedScriptManager::discardInjectedScriptsFor): * inspector/WorkerInspectorController.h: * inspector/WorkerScriptDebugServer.cpp: (WebCore::WorkerScriptDebugServer::reportException const): * inspector/WorkerScriptDebugServer.h: * inspector/agents/InspectorCanvasAgent.cpp: (WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas): * inspector/agents/InspectorCanvasAgent.h: * inspector/agents/InspectorDOMAgent.cpp: (WebCore::InspectorDOMAgent::focusNode): (WebCore::InspectorDOMAgent::buildObjectForEventListener): (WebCore::InspectorDOMAgent::nodeAsScriptValue): * inspector/agents/InspectorDOMAgent.h: * inspector/agents/InspectorIndexedDBAgent.cpp: * inspector/agents/InspectorNetworkAgent.cpp: (WebCore::webSocketAsScriptValue): * inspector/agents/InspectorTimelineAgent.cpp: (WebCore::InspectorTimelineAgent::startFromConsole): (WebCore::InspectorTimelineAgent::stopFromConsole): (WebCore::InspectorTimelineAgent::breakpointActionProbe): * inspector/agents/InspectorTimelineAgent.h: * inspector/agents/WebConsoleAgent.cpp: (WebCore::WebConsoleAgent::frameWindowDiscarded): * inspector/agents/WebDebuggerAgent.cpp: (WebCore::WebDebuggerAgent::didAddEventListener): (WebCore::WebDebuggerAgent::didPostMessage): * inspector/agents/WebDebuggerAgent.h: * inspector/agents/page/PageAuditAgent.cpp: (WebCore::PageAuditAgent::injectedScriptForEval): (WebCore::PageAuditAgent::populateAuditObject): * inspector/agents/page/PageAuditAgent.h: * inspector/agents/page/PageDebuggerAgent.cpp: (WebCore::PageDebuggerAgent::breakpointActionLog): (WebCore::PageDebuggerAgent::injectedScriptForEval): (WebCore::PageDebuggerAgent::didRequestAnimationFrame): * inspector/agents/page/PageDebuggerAgent.h: * inspector/agents/page/PageRuntimeAgent.cpp: (WebCore::PageRuntimeAgent::injectedScriptForEval): (WebCore::PageRuntimeAgent::reportExecutionContextCreation): (WebCore::PageRuntimeAgent::notifyContextCreated): * inspector/agents/page/PageRuntimeAgent.h: * inspector/agents/worker/WorkerAuditAgent.cpp: (WebCore::WorkerAuditAgent::injectedScriptForEval): * inspector/agents/worker/WorkerDebuggerAgent.cpp: (WebCore::WorkerDebuggerAgent::breakpointActionLog): (WebCore::WorkerDebuggerAgent::injectedScriptForEval): * inspector/agents/worker/WorkerDebuggerAgent.h: * inspector/agents/worker/WorkerRuntimeAgent.cpp: (WebCore::WorkerRuntimeAgent::injectedScriptForEval): * page/DOMWindow.cpp: (WebCore::DOMWindow::postMessage): (WebCore::DOMWindow::setTimeout): (WebCore::DOMWindow::setInterval): * page/DOMWindow.h: * page/DOMWindow.idl: * page/PageConsoleClient.cpp: (WebCore::PageConsoleClient::addMessage): (WebCore::PageConsoleClient::messageWithTypeAndLevel): (WebCore::PageConsoleClient::count): (WebCore::PageConsoleClient::countReset): (WebCore::PageConsoleClient::profile): (WebCore::PageConsoleClient::profileEnd): (WebCore::PageConsoleClient::takeHeapSnapshot): (WebCore::PageConsoleClient::time): (WebCore::PageConsoleClient::timeLog): (WebCore::PageConsoleClient::timeEnd): (WebCore::PageConsoleClient::timeStamp): (WebCore::PageConsoleClient::record): (WebCore::PageConsoleClient::recordEnd): (WebCore::PageConsoleClient::screenshot): * page/PageConsoleClient.h: * page/RemoteDOMWindow.cpp: (WebCore::RemoteDOMWindow::postMessage): * page/RemoteDOMWindow.h: * page/RemoteDOMWindow.idl: * page/WindowOrWorkerGlobalScope.idl: * page/csp/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::allowEval const): (WebCore::ContentSecurityPolicy::reportViolation const): (WebCore::ContentSecurityPolicy::logToConsole const): * page/csp/ContentSecurityPolicy.h: * platform/SerializedPlatformRepresentation.h: * platform/ThreadGlobalData.h: (WebCore::ThreadGlobalData::ThreadGlobalData::currentState const): (WebCore::ThreadGlobalData::ThreadGlobalData::setCurrentState): * platform/graphics/CustomPaintImage.cpp: (WebCore::CustomPaintImage::doCustomPaint): * platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm: * platform/mac/SerializedPlatformRepresentationMac.h: * platform/mac/SerializedPlatformRepresentationMac.mm: (WebCore::SerializedPlatformRepresentationMac::deserialize const): (WebCore::jsValueWithDataInContext): * platform/mock/mediasource/MockBox.cpp: * plugins/PluginViewBase.h: * testing/Internals.cpp: (WebCore::Internals::parserMetaData): (WebCore::Internals::isFromCurrentWorld const): (WebCore::Internals::isReadableStreamDisturbed): (WebCore::Internals::cloneArrayBuffer): * testing/Internals.h: * testing/Internals.idl: * testing/js/WebCoreTestSupport.cpp: (WebCoreTestSupport::injectInternalsObject): (WebCoreTestSupport::resetInternalsObject): * workers/DedicatedWorkerGlobalScope.cpp: (WebCore::DedicatedWorkerGlobalScope::postMessage): * workers/DedicatedWorkerGlobalScope.h: * workers/DedicatedWorkerGlobalScope.idl: * workers/Worker.cpp: (WebCore::Worker::postMessage): * workers/Worker.h: * workers/Worker.idl: * workers/WorkerConsoleClient.cpp: (WebCore::WorkerConsoleClient::messageWithTypeAndLevel): (WebCore::WorkerConsoleClient::count): (WebCore::WorkerConsoleClient::countReset): (WebCore::WorkerConsoleClient::time): (WebCore::WorkerConsoleClient::timeLog): (WebCore::WorkerConsoleClient::timeEnd): (WebCore::WorkerConsoleClient::profile): (WebCore::WorkerConsoleClient::profileEnd): (WebCore::WorkerConsoleClient::takeHeapSnapshot): (WebCore::WorkerConsoleClient::timeStamp): (WebCore::WorkerConsoleClient::record): (WebCore::WorkerConsoleClient::recordEnd): (WebCore::WorkerConsoleClient::screenshot): * workers/WorkerConsoleClient.h: * workers/WorkerGlobalScope.cpp: (WebCore::WorkerGlobalScope::setTimeout): (WebCore::WorkerGlobalScope::setInterval): (WebCore::WorkerGlobalScope::addMessage): * workers/WorkerGlobalScope.h: * workers/service/ExtendableEvent.cpp: * workers/service/ExtendableMessageEvent.cpp: (WebCore::ExtendableMessageEvent::ExtendableMessageEvent): * workers/service/ExtendableMessageEvent.h: * workers/service/FetchEvent.cpp: (WebCore::FetchEvent::promiseIsSettled): * worklets/PaintWorkletGlobalScope.cpp: (WebCore::PaintWorkletGlobalScope::registerPaint): * worklets/PaintWorkletGlobalScope.h: * worklets/PaintWorkletGlobalScope.idl: * worklets/WorkletConsoleClient.cpp: (WebCore::WorkletConsoleClient::messageWithTypeAndLevel): (WebCore::WorkletConsoleClient::count): (WebCore::WorkletConsoleClient::countReset): (WebCore::WorkletConsoleClient::time): (WebCore::WorkletConsoleClient::timeLog): (WebCore::WorkletConsoleClient::timeEnd): (WebCore::WorkletConsoleClient::profile): (WebCore::WorkletConsoleClient::profileEnd): (WebCore::WorkletConsoleClient::takeHeapSnapshot): (WebCore::WorkletConsoleClient::timeStamp): (WebCore::WorkletConsoleClient::record): (WebCore::WorkletConsoleClient::recordEnd): (WebCore::WorkletConsoleClient::screenshot): * worklets/WorkletConsoleClient.h: * worklets/WorkletGlobalScope.cpp: (WebCore::WorkletGlobalScope::addMessage): * worklets/WorkletGlobalScope.h: * worklets/WorkletScriptController.cpp: (WebCore::WorkletScriptController::evaluate): (WebCore::WorkletScriptController::setException): Source/WebKit: * WebProcess/InjectedBundle/API/glib/WebKitFrame.cpp: (webkit_frame_get_js_value_for_dom_object_in_script_world): * WebProcess/InjectedBundle/InjectedBundle.cpp: (WebKit::InjectedBundle::reportException): (WebKit::InjectedBundle::createWebDataFromUint8Array): * WebProcess/Plugins/Netscape/JSNPMethod.cpp: (WebKit::callMethod): * WebProcess/Plugins/Netscape/JSNPMethod.h: * WebProcess/Plugins/Netscape/JSNPObject.cpp: (WebKit::JSNPObject::callMethod): (WebKit::JSNPObject::callObject): (WebKit::JSNPObject::callConstructor): (WebKit::callNPJSObject): (WebKit::constructWithConstructor): (WebKit::JSNPObject::getOwnPropertySlot): (WebKit::JSNPObject::put): (WebKit::JSNPObject::deleteProperty): (WebKit::JSNPObject::deletePropertyByIndex): (WebKit::JSNPObject::getOwnPropertyNames): (WebKit::JSNPObject::propertyGetter): (WebKit::JSNPObject::methodGetter): (WebKit::JSNPObject::throwInvalidAccessError): * WebProcess/Plugins/Netscape/JSNPObject.h: * WebProcess/Plugins/Netscape/NPJSObject.cpp: (WebKit::identifierFromIdentifierRep): (WebKit::NPJSObject::hasMethod): (WebKit::NPJSObject::invoke): (WebKit::NPJSObject::invokeDefault): (WebKit::NPJSObject::hasProperty): (WebKit::NPJSObject::getProperty): (WebKit::NPJSObject::setProperty): (WebKit::NPJSObject::removeProperty): (WebKit::NPJSObject::enumerate): (WebKit::NPJSObject::construct): * WebProcess/Plugins/Netscape/NPJSObject.h: * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: (WebKit::NPRuntimeObjectMap::convertNPVariantToJSValue): (WebKit::NPRuntimeObjectMap::convertJSValueToNPVariant): (WebKit::NPRuntimeObjectMap::evaluate): (WebKit::NPRuntimeObjectMap::moveGlobalExceptionToExecState): (WebKit::NPRuntimeObjectMap::globalExec const): Deleted. * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.h: * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::performJavaScriptURLRequest): * WebProcess/WebPage/WebFrame.cpp: (WebKit::WebFrame::jsContext): (WebKit::WebFrame::jsContextForWorld): (WebKit::WebFrame::frameForContext): (WebKit::WebFrame::jsWrapperForWorld): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::freezeLayerTree): (WebKit::WebPage::unfreezeLayerTree): (WebKit::WebPage::runJavaScript): * WebProcess/WebProcess.cpp: (WebKit::WebProcess::networkProcessConnectionClosed): Source/WebKitLegacy/mac: * DOM/DOMInternal.mm: (-[WebScriptObject _initializeScriptDOMNodeImp]): * DOM/WebDOMOperations.mm: * Plugins/Hosted/NetscapePluginInstanceProxy.h: * Plugins/Hosted/NetscapePluginInstanceProxy.mm: (WebKit::NetscapePluginInstanceProxy::evaluate): (WebKit::NetscapePluginInstanceProxy::invoke): (WebKit::NetscapePluginInstanceProxy::invokeDefault): (WebKit::NetscapePluginInstanceProxy::construct): (WebKit::NetscapePluginInstanceProxy::getProperty): (WebKit::NetscapePluginInstanceProxy::setProperty): (WebKit::NetscapePluginInstanceProxy::removeProperty): (WebKit::NetscapePluginInstanceProxy::hasProperty): (WebKit::NetscapePluginInstanceProxy::hasMethod): (WebKit::NetscapePluginInstanceProxy::enumerate): (WebKit::NetscapePluginInstanceProxy::addValueToArray): (WebKit::NetscapePluginInstanceProxy::marshalValue): (WebKit::NetscapePluginInstanceProxy::marshalValues): (WebKit::NetscapePluginInstanceProxy::demarshalValueFromArray): (WebKit::NetscapePluginInstanceProxy::demarshalValue): (WebKit::NetscapePluginInstanceProxy::demarshalValues): (WebKit::NetscapePluginInstanceProxy::moveGlobalExceptionToExecState): * Plugins/Hosted/ProxyInstance.h: * Plugins/Hosted/ProxyInstance.mm: (WebKit::ProxyField::valueFromInstance const): (WebKit::ProxyField::setValueToInstance const): (WebKit::ProxyInstance::newRuntimeObject): (WebKit::ProxyInstance::invoke): (WebKit::ProxyRuntimeMethod::create): (WebKit::ProxyInstance::getMethod): (WebKit::ProxyInstance::invokeMethod): (WebKit::ProxyInstance::invokeDefaultMethod): (WebKit::ProxyInstance::invokeConstruct): (WebKit::ProxyInstance::defaultValue const): (WebKit::ProxyInstance::stringValue const): (WebKit::ProxyInstance::numberValue const): (WebKit::ProxyInstance::valueOf const): (WebKit::ProxyInstance::getPropertyNames): (WebKit::ProxyInstance::fieldValue const): (WebKit::ProxyInstance::setFieldValue const): * WebView/WebFrame.mm: (-[WebFrame _stringByEvaluatingJavaScriptFromString:forceUserGesture:]): (-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]): (-[WebFrame _globalContextForScriptWorld:]): (-[WebFrame jsWrapperForNode:inScriptWorld:]): (-[WebFrame globalContext]): * WebView/WebScriptDebugger.h: * WebView/WebScriptDebugger.mm: (WebScriptDebugger::sourceParsed): * WebView/WebView.mm: (+[WebView _reportException:inContext:]): (aeDescFromJSValue): (-[WebView aeDescByEvaluatingJavaScriptFromString:]): Source/WebKitLegacy/win: * Plugins/PluginPackage.cpp: (WebCore::getListFromVariantArgs): (WebCore::NPN_Evaluate): (WebCore::NPN_Invoke): * Plugins/PluginView.cpp: (WebCore::PluginView::performRequest): * WebCoreSupport/WebFrameLoaderClient.cpp: (WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld): * WebFrame.cpp: (WebFrame::globalContext): (WebFrame::globalContextForScriptWorld): (WebFrame::stringByEvaluatingJavaScriptInScriptWorld): * WebView.cpp: (WebView::stringByEvaluatingJavaScriptFromString): (WebView::reportException): (WebView::elementFromJS): Tools: * DumpRenderTree/TestRunner.cpp: Canonical link: https://commits.webkit.org/216662@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251425 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-10-22 09:24:48 +00:00
CallFrame* callerFrame, CallLinkInfo&, const Vector<PolymorphicCallCase>&,
Fix std::make_unique / new[] using system malloc https://bugs.webkit.org/show_bug.cgi?id=182975 Reviewed by JF Bastien. Source/JavaScriptCore: Use Vector, FAST_ALLOCATED, or UniqueArray instead. * API/JSStringRefCF.cpp: (JSStringCreateWithCFString): * bytecode/BytecodeKills.h: * bytecode/BytecodeLivenessAnalysis.cpp: (JSC::BytecodeLivenessAnalysis::computeKills): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::dumpDisassembly): * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): * jit/PolymorphicCallStubRoutine.h: * jit/Repatch.cpp: (JSC::linkPolymorphicCall): * jsc.cpp: (currentWorkingDirectory): * llint/LLIntData.cpp: (JSC::LLInt::initialize): * llint/LLIntData.h: * runtime/ArgList.h: * runtime/StructureChain.h: * runtime/StructureIDTable.cpp: (JSC::StructureIDTable::StructureIDTable): (JSC::StructureIDTable::resize): * runtime/StructureIDTable.h: * runtime/TypeProfilerLog.cpp: (JSC::TypeProfilerLog::TypeProfilerLog): (JSC::TypeProfilerLog::initializeLog): Deleted. * runtime/TypeProfilerLog.h: (JSC::TypeProfilerLog::TypeProfilerLog): Deleted. * runtime/VM.cpp: (JSC::VM::~VM): (JSC::VM::acquireRegExpPatternContexBuffer): * runtime/VM.h: * testRegExp.cpp: (runFromFiles): * tools/HeapVerifier.cpp: (JSC::HeapVerifier::HeapVerifier): * tools/HeapVerifier.h: Source/WebCore: Use Vector, FAST_ALLOCATED, or UniqueArray instead. * Modules/webaudio/AudioBufferSourceNode.cpp: (WebCore::AudioBufferSourceNode::setBuffer): * Modules/webaudio/AudioBufferSourceNode.h: * css/StyleRule.h: * cssjit/CompiledSelector.h: * html/HTMLFrameSetElement.h: * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::copyTexSubImage2D): (WebCore::WebGLRenderingContextBase::simulateVertexAttrib0): (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::LRUImageBufferCache): (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer): (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::bubbleToFront): * html/canvas/WebGLRenderingContextBase.h: * platform/Length.cpp: (WebCore::newCoordsArray): (WebCore::newLengthArray): (): Deleted. * platform/Length.h: * platform/audio/DynamicsCompressor.cpp: (WebCore::DynamicsCompressor::setNumberOfChannels): * platform/audio/DynamicsCompressor.h: * platform/audio/FFTFrame.h: * platform/audio/gstreamer/FFTFrameGStreamer.cpp: (WebCore::FFTFrame::FFTFrame): * platform/graphics/FormatConverter.h: (WebCore::FormatConverter::FormatConverter): * platform/graphics/GraphicsContext3D.cpp: (WebCore::GraphicsContext3D::texImage2DResourceSafe): * platform/graphics/GraphicsContext3D.h: * platform/graphics/ca/win/CACFLayerTreeHost.cpp: (WebCore::getDirtyRects): * platform/graphics/cairo/CairoUtilities.cpp: (WebCore::flipImageSurfaceVertically): * platform/graphics/cg/GraphicsContext3DCG.cpp: (WebCore::GraphicsContext3D::ImageExtractor::extractImage): * platform/graphics/gpu/Texture.cpp: (WebCore::Texture::updateSubRect): * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: (WebCore::GraphicsContext3D::paintRenderingResultsToCanvas): (WebCore::GraphicsContext3D::compileShader): (WebCore::GraphicsContext3D::getActiveAttribImpl): (WebCore::GraphicsContext3D::getActiveUniformImpl): (WebCore::GraphicsContext3D::getProgramInfoLog): (WebCore::GraphicsContext3D::getShaderInfoLog): * platform/graphics/texmap/TextureMapperShaderProgram.cpp: (WebCore::getShaderLog): (WebCore::getProgramLog): * platform/graphics/win/ImageBufferDataDirect2D.cpp: (WebCore::ImageBufferData::putData): * platform/image-decoders/png/PNGImageDecoder.cpp: (WebCore::PNGImageReader::PNGImageReader): (WebCore::PNGImageReader::close): (WebCore::PNGImageReader::interlaceBuffer const): (WebCore::PNGImageReader::createInterlaceBuffer): * platform/image-decoders/webp/WEBPImageDecoder.cpp: (WebCore::WEBPImageDecoder::decodeFrame): * platform/network/curl/SocketStreamHandleImpl.h: (WebCore::SocketStreamHandleImpl::SocketData::SocketData): * platform/network/curl/SocketStreamHandleImplCurl.cpp: (WebCore::createCopy): (WebCore::SocketStreamHandleImpl::readData): (): Deleted. * platform/network/soup/SocketStreamHandleImpl.h: * platform/network/soup/SocketStreamHandleImplSoup.cpp: (WebCore::SocketStreamHandleImpl::connected): * platform/win/LoggingWin.cpp: (WebCore::logLevelString): Source/WebCore/PAL: Use Vector instead. * pal/win/LoggingWin.cpp: (PAL::logLevelString): Source/WebKit: Use Vector instead. * NetworkProcess/win/SystemProxyWin.cpp: (WindowsSystemProxy::getSystemHttpProxy): * Platform/IPC/unix/ConnectionUnix.cpp: (IPC::Connection::processMessage): (IPC::Connection::sendOutputMessage): * Platform/win/LoggingWin.cpp: (WebKit::logLevelString): * Shared/SandboxExtension.h: * Shared/mac/SandboxExtensionMac.mm: (WebKit::SandboxExtension::HandleArray::allocate): (WebKit::SandboxExtension::HandleArray::operator[]): (WebKit::SandboxExtension::HandleArray::operator[] const): (WebKit::SandboxExtension::HandleArray::size const): (WebKit::SandboxExtension::HandleArray::encode const): Source/WebKitLegacy/win: Use Vector instead. * MarshallingHelpers.cpp: (MarshallingHelpers::safeArrayToStringArray): (MarshallingHelpers::safeArrayToIntArray): * Plugins/PluginPackageWin.cpp: (WebCore::PluginPackage::fetchInfo): * WebPreferences.cpp: (WebPreferences::copyWebKitPreferencesToCFPreferences): * WebView.cpp: (WebView::onMenuCommand): Source/WTF: If we use `make_unique<char[]>(num)` or `new char[num]`, allocation is done by the system malloc instead of bmalloc. This patch fixes this issue by following three changes. 1. Introduce UniqueArray<T>. It allocates memory from FastMalloc. While C++ array with `new` need to hold the size to call destructor correctly, our UniqueArray only supports type T which does not have a non trivial destructor. It reduces the allocation size since we do not need to track the size of the array compared to standard `new T[]`. This is basically usable if we want to have raw array which pointer won't be changed even if the container is moved. In addition, we also extend UniqueArray<T> for types which have non trivial destructors. 2. Use Vector<T> instead. 3. Annotate allocated types with MAKE_FAST_ALLOCATED. Since it introduces new[] and delete[] operators, make_unique<T[]>(num) will allocate memory from FastMalloc. * WTF.xcodeproj/project.pbxproj: * wtf/Assertions.cpp: * wtf/CMakeLists.txt: * wtf/FastMalloc.h: (WTF::FastFree::operator() const): (WTF::FastFree<T::operator() const): * wtf/MallocPtr.h: (WTF::MallocPtr::operator bool const): * wtf/StackShot.h: (WTF::StackShot::StackShot): (WTF::StackShot::operator=): * wtf/SystemFree.h: (WTF::SystemFree<T::operator() const): * wtf/UniqueArray.h: Copied from Source/WebKit/Platform/win/LoggingWin.cpp. (WTF::makeUniqueArray): * wtf/Vector.h: (WTF::VectorTypeOperations::forceInitialize): Tools: * TestWebKitAPI/CMakeLists.txt: * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WTF/UniqueArray.cpp: Copied from Source/WebKit/Platform/win/LoggingWin.cpp. (TestWebKitAPI::NonTrivialDestructor::NonTrivialDestructor): (TestWebKitAPI::NonTrivialDestructor::~NonTrivialDestructor): (TestWebKitAPI::NonTrivialDestructor::setLog): (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/199024@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@229309 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-03-06 07:25:14 +00:00
UniqueArray<uint32_t>&& fastCounts);
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
[clang-tidy] Run modernize-use-override over JSC, then ensure as much as possible is final https://bugs.webkit.org/show_bug.cgi?id=211743 Reviewed by Saam Barati. * API/JSScriptRef.cpp: * b3/B3ArgumentRegValue.h: * b3/B3AtomicValue.h: * b3/B3CCallValue.h: * b3/B3CheckSpecial.h: * b3/B3CheckValue.h: * b3/B3Const32Value.h: * b3/B3Const64Value.h: * b3/B3ConstDoubleValue.h: * b3/B3ConstFloatValue.h: * b3/B3DataSection.h: * b3/B3ExtractValue.h: * b3/B3FenceValue.h: * b3/B3MemoryValue.h: * b3/B3PatchpointSpecial.h: * b3/B3PatchpointValue.h: * b3/B3SlotBaseValue.h: * b3/B3StackmapSpecial.h: * b3/B3StackmapValue.h: * b3/B3SwitchValue.h: * b3/B3UpsilonValue.h: * b3/B3VariableValue.h: * b3/B3WasmAddressValue.h: * b3/B3WasmBoundsCheckValue.h: * b3/air/AirCCallSpecial.h: * b3/air/AirPrintSpecial.h: * bytecode/BytecodeDumper.h: * bytecode/GetterSetterAccessCase.h: * bytecode/InstanceOfAccessCase.h: * bytecode/IntrinsicGetterAccessCase.h: * bytecode/ModuleNamespaceAccessCase.h: * bytecode/ProxyableAccessCase.h: * bytecode/Watchpoint.h: * dfg/DFGFailedFinalizer.h: * dfg/DFGGraph.h: * dfg/DFGJITCode.h: * dfg/DFGJITFinalizer.h: * dfg/DFGToFTLDeferredCompilationCallback.h: * dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h: * ftl/FTLForOSREntryJITCode.h: * ftl/FTLJITCode.h: * ftl/FTLJITFinalizer.h: * heap/CompleteSubspace.h: * heap/FastMallocAlignedMemoryAllocator.h: * heap/GigacageAlignedMemoryAllocator.h: * heap/HeapSnapshotBuilder.h: * heap/IsoAlignedMemoryAllocator.h: * heap/IsoSubspace.h: * heap/IsoSubspacePerVM.cpp: * heap/IsoSubspacePerVM.h: * heap/MarkStackMergingConstraint.h: * heap/SimpleMarkingConstraint.h: * heap/SpaceTimeMutatorScheduler.h: * heap/StochasticSpaceTimeMutatorScheduler.h: * heap/SynchronousStopTheWorldMutatorScheduler.h: * jit/GCAwareJITStubRoutine.h: * jit/JITCode.h: * jit/JITThunks.h: * jit/JITToDFGDeferredCompilationCallback.h: * jit/PolymorphicCallStubRoutine.h: * jsc.cpp: * parser/Lexer.cpp: Address warning. * runtime/JSDestructibleObjectHeapCellType.h: * runtime/SimpleTypedArrayController.h: * runtime/Structure.h: * runtime/WeakGCMap.h: * wasm/WasmEntryPlan.h: Canonical link: https://commits.webkit.org/224681@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@261567 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-05-12 18:48:02 +00:00
~PolymorphicCallStubRoutine() final;
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
CallVariantList variants() const;
We should support CreateThis in the FTL https://bugs.webkit.org/show_bug.cgi?id=164904 Reviewed by Yusuke Suzuki. JSTests: * microbenchmarks/polyvariant-get-by-id-shorter-tower.js: Added. (polyvariant): (Foo.prototype.func): (Foo): (foo): (Bar.prototype.func): (Bar): (bar): * microbenchmarks/polyvariant-get-by-id-tower.js: Added. (polyvariant): (Foo.prototype.func): (Foo): (foo): (Bar.prototype.func): (Bar): (bar): (Baz.prototype.func): (Baz): (baz): Source/JavaScriptCore: This started with Saam's patch to implement CreateThis in the FTL, but turned into a type inference adventure. CreateThis in the FTL was a massive regression in raytrace because it disturbed that benchmark's extremely perverse way of winning at type inference: - The benchmark wanted polyvariant devirtualization of an object construction helper. But, the polyvariant profiler wasn't powerful enough to reliably devirtualize that code. So, the benchmark was falling back to other mechanisms... - The construction helper could not tier up into the FTL. When the DFG compiled it, it would see that the IC had 4 cases. That's too polymorphic for the DFG. So, the DFG would emit a GetById. Shortly after the DFG compile, that get_by_id would see many more cases, but now that the helper was compiled by the DFG, the baseline get_by_id would not see those cases. The DFG's GetById would "hide" those cases. The number of cases the DFG's GetById would see is larger than our polymorphic list limit (limit = 8, case count = 13, I think). Note that if the FTL compiles that construction helper, it sees the 4 cases, turns them into a MultiGetByOffset, then suffers from exits when the new cases hit, and then exits to baseline, which then sees those cases. Luckily, the FTL was not compiling the construction helper because it had a CreateThis. - Compilations that inlined the construction helper would have gotten super lucky with parse-time constant folding, so they knew what structure the input to the get_by_id would have at parse time. This is only profitable if the get_by_id parsing computed a GetByIdStatus that had a finite number of cases. Because the 13 cases were being hidden by the DFG GetById and GetByIdStatus would only look at the baseline get_by_id, which had 4 cases, we would indeed get a finite number of cases. The parser would then prune those cases to just one - based on its knowledge of the structure - and that would result in that get_by_id being folded at parse time to a constant. - The subsequent op_call would inline based on parse-time knowledge of that constant. This patch comprehensively fixes these issues, as well as other issues that come up along the way. The short version is that raytrace was revealing sloppiness in our use of profiling for type inference. This patch fixes the sloppiness by vastly expanding *polyvariant* profiling, i.e. the profiling that considers call context. I was encouraged to do this by the fact that even the old version of polyvariant profiling was a speed-up on JetStream, ARES-6, and Speedometer 2 (it's easy to measure since it's a runtime flag). So, it seemed worthwhile to attack raytrace's problem as a shortcoming of polyvariant profiling. - Polyvariant profiling now consults every DFG or FTL code block that participated in any subset of the inline stack that includes the IC we're profiling. For example, if we have an inline stack like foo->bar->baz, with baz on top, then we will consult DFG or FTL compilations for foo, bar, and baz. In foo, we'll look up foo->bar->baz; in bar we'll look up bar->baz; etc. This fixes two problems encountered in raytrace. First, it ensures that a DFG GetById cannot hide anything from the profiling of that get_by_id, since the polyvariant profiling code will always consult it. Second, it enables raytrace to benefit from polyvariant profling. Previously, the polyvariant profiler would only look at the previous DFG compilation of foo and look up foo->bar->baz. But that only works if DFG-foo had inlined bar and then baz. It may not have done that, because those calls could have required polyvariant profiling that was only available in the FTL. - A particularly interesting case is when some IC in foo-baseline is also available in foo-DFG. This case is encountered by the polyvariant profiler as it walks the inline stack. In the case of gathering profiling for foo-FTL, the polyvariant profiler finds foo-DFG via the trivial case of no inline stack. This also means that if foo ever gets inlined, we will find foo-DFG or foo-FTL in the final case of polyvariant profiling. In those cases, we now merge the IC of foo-baseline and foo-DFG. This avoids lots of unnecessary recompilations, because it warns us of historical polymorphism. Historical polymorphism usually means future polymorphism. IC status code already had some merging functionality, but I needed to beef it up a lot to make this work right. - Inlining an inline cache now preserves as much information as profiling. One challenge of polyvariant profiling is that the FTL compile for bar (that includes bar->baz) could have inlined an inline cache based on polyvariant profiling. So, when the FTL compile for foo (that includes foo->bar->baz) asks bar what it knows about that IC inside bar->baz, it will say "I don't have such an IC". At this point the DFG compilation that included that IC that gave us the information that we used to inline the IC is no longer alive. To keep us from losing the information we learned about the IC, there is now a RecordedStatuses data structure that preserves the statuses we use for inlining ICs. We also filter those statuses according to things we learn from AI. This further reduces the risk of information about an IC being forgotten. - Exit profiling now considers whether or not an exit happened from inline code. This protects us in the case where the not-inlined version of an IC exited a lot because of polymorphism that doesn't exist in the inlined version. So, when using polyvariant profiling data, we consider only inlined exits. - CallLinkInfo now records when it's repatched to the virtual call thunk. Previously, this would clear the CallLinkInfo, so CallLinkStatus would fall back to the lastSeenCallee. It's surprising that we've had this bug. Altogether this patch is performance-neutral in run-jsc-benchmarks, except for speed-ups in microbenchmarks and a compile time regression. Octane/deltablue speeds up by ~5%. Octane/raytrace is regressed by a minuscule amount, which we could make up by implementing prototype access folding in the bytecode parser and constant folder. That would require some significant new logic in GetByIdStatus. That would also require a new benchmark - we want to have a test that captures raytrace's behavior in the case that the parser cannot fold the get_by_id. This change is a 1.2% regression on V8Spider-CompileTime. That's a smaller regression than recent compile time progressions, so I think that's an OK trade-off. Also, I would expect a compile time regression anytime we fill in FTL coverage. This is neutral on JetStream, ARES-6, and Speedometer2. JetStream agrees that deltablue speeds up and that raytrace slows down, but these changes balance out and don't affect the overall score. In ARES-6, it looks like individual tests have some significant 1-2% speed-ups or slow-downs. Air-steady is definitely ~1.5% faster. Basic-worst is probably 2% slower (p ~ 0.1, so it's not very certain). The JetStream, ARES-6, and Speedometer2 overall scores don't see a significant difference. In all three cases the difference is <0.5% with a high p value, with JetStream and Speedometer2 being insignificant infinitesimal speed-ups and ARES-6 being an insignificant infinitesimal slow-down. Oh, and this change means that the FTL now has 100% coverage of JavaScript. You could do an eval in a for-in loop in a for-of loop inside a with block that uses try/catch for control flow in a polymorphic constructor while having a bad time, and we'll still compile it. * CMakeLists.txt: * JavaScriptCore.xcodeproj/project.pbxproj: * Sources.txt: * bytecode/ByValInfo.h: * bytecode/BytecodeDumper.cpp: (JSC::BytecodeDumper<Block>::printGetByIdCacheStatus): (JSC::BytecodeDumper<Block>::printPutByIdCacheStatus): (JSC::BytecodeDumper<Block>::printInByIdCacheStatus): (JSC::BytecodeDumper<Block>::dumpCallLinkStatus): (JSC::BytecodeDumper<CodeBlock>::dumpCallLinkStatus): (JSC::BytecodeDumper<Block>::printCallOp): (JSC::BytecodeDumper<Block>::dumpBytecode): (JSC::BytecodeDumper<Block>::dumpBlock): * bytecode/BytecodeDumper.h: * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeExitSiteData): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::accountForExits): (JSC::CallLinkStatus::finalize): (JSC::CallLinkStatus::filter): (JSC::CallLinkStatus::computeDFGStatuses): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::operator bool const): (JSC::CallLinkStatus::operator! const): Deleted. * bytecode/CallVariant.cpp: (JSC::CallVariant::finalize): (JSC::CallVariant::filter): * bytecode/CallVariant.h: (JSC::CallVariant::operator bool const): (JSC::CallVariant::operator! const): Deleted. * bytecode/CodeBlock.cpp: (JSC::CodeBlock::dumpBytecode): (JSC::CodeBlock::propagateTransitions): (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::getICStatusMap): (JSC::CodeBlock::resetJITData): (JSC::CodeBlock::getStubInfoMap): Deleted. (JSC::CodeBlock::getCallLinkInfoMap): Deleted. (JSC::CodeBlock::getByValInfoMap): Deleted. * bytecode/CodeBlock.h: * bytecode/CodeOrigin.cpp: (JSC::CodeOrigin::isApproximatelyEqualTo const): (JSC::CodeOrigin::approximateHash const): * bytecode/CodeOrigin.h: (JSC::CodeOrigin::exitingInlineKind const): * bytecode/DFGExitProfile.cpp: (JSC::DFG::FrequentExitSite::dump const): (JSC::DFG::ExitProfile::add): * bytecode/DFGExitProfile.h: (JSC::DFG::FrequentExitSite::FrequentExitSite): (JSC::DFG::FrequentExitSite::operator== const): (JSC::DFG::FrequentExitSite::subsumes const): (JSC::DFG::FrequentExitSite::hash const): (JSC::DFG::FrequentExitSite::inlineKind const): (JSC::DFG::FrequentExitSite::withInlineKind const): (JSC::DFG::QueryableExitProfile::hasExitSite const): (JSC::DFG::QueryableExitProfile::hasExitSiteWithSpecificJITType const): (JSC::DFG::QueryableExitProfile::hasExitSiteWithSpecificInlineKind const): * bytecode/ExitFlag.cpp: Added. (JSC::ExitFlag::dump const): * bytecode/ExitFlag.h: Added. (JSC::ExitFlag::ExitFlag): (JSC::ExitFlag::operator| const): (JSC::ExitFlag::operator|=): (JSC::ExitFlag::operator& const): (JSC::ExitFlag::operator&=): (JSC::ExitFlag::operator bool const): (JSC::ExitFlag::isSet const): * bytecode/ExitingInlineKind.cpp: Added. (WTF::printInternal): * bytecode/ExitingInlineKind.h: Added. * bytecode/GetByIdStatus.cpp: (JSC::GetByIdStatus::computeFor): (JSC::GetByIdStatus::computeForStubInfo): (JSC::GetByIdStatus::slowVersion const): (JSC::GetByIdStatus::markIfCheap): (JSC::GetByIdStatus::finalize): (JSC::GetByIdStatus::hasExitSite): Deleted. * bytecode/GetByIdStatus.h: * bytecode/GetByIdVariant.cpp: (JSC::GetByIdVariant::markIfCheap): (JSC::GetByIdVariant::finalize): * bytecode/GetByIdVariant.h: * bytecode/ICStatusMap.cpp: Added. (JSC::ICStatusContext::get const): (JSC::ICStatusContext::isInlined const): (JSC::ICStatusContext::inlineKind const): * bytecode/ICStatusMap.h: Added. * bytecode/ICStatusUtils.cpp: Added. (JSC::hasBadCacheExitSite): * bytecode/ICStatusUtils.h: * bytecode/InstanceOfStatus.cpp: (JSC::InstanceOfStatus::computeFor): * bytecode/InstanceOfStatus.h: * bytecode/PolyProtoAccessChain.h: * bytecode/PutByIdStatus.cpp: (JSC::PutByIdStatus::hasExitSite): (JSC::PutByIdStatus::computeFor): (JSC::PutByIdStatus::slowVersion const): (JSC::PutByIdStatus::markIfCheap): (JSC::PutByIdStatus::finalize): (JSC::PutByIdStatus::filter): * bytecode/PutByIdStatus.h: * bytecode/PutByIdVariant.cpp: (JSC::PutByIdVariant::markIfCheap): (JSC::PutByIdVariant::finalize): * bytecode/PutByIdVariant.h: (JSC::PutByIdVariant::structureSet const): * bytecode/RecordedStatuses.cpp: Added. (JSC::RecordedStatuses::operator=): (JSC::RecordedStatuses::RecordedStatuses): (JSC::RecordedStatuses::addCallLinkStatus): (JSC::RecordedStatuses::addGetByIdStatus): (JSC::RecordedStatuses::addPutByIdStatus): (JSC::RecordedStatuses::markIfCheap): (JSC::RecordedStatuses::finalizeWithoutDeleting): (JSC::RecordedStatuses::finalize): (JSC::RecordedStatuses::shrinkToFit): * bytecode/RecordedStatuses.h: Added. (JSC::RecordedStatuses::RecordedStatuses): (JSC::RecordedStatuses::forEachVector): * bytecode/StructureSet.cpp: (JSC::StructureSet::markIfCheap const): (JSC::StructureSet::isStillAlive const): * bytecode/StructureSet.h: * bytecode/TerminatedCodeOrigin.h: Added. (JSC::TerminatedCodeOrigin::TerminatedCodeOrigin): (JSC::TerminatedCodeOriginHashTranslator::hash): (JSC::TerminatedCodeOriginHashTranslator::equal): * bytecode/Watchpoint.cpp: (WTF::printInternal): * bytecode/Watchpoint.h: * dfg/DFGAbstractInterpreter.h: * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): (JSC::DFG::AbstractInterpreter<AbstractStateType>::filterICStatus): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleVarargsCall): (JSC::DFG::ByteCodeParser::handleDOMJITGetter): (JSC::DFG::ByteCodeParser::handleModuleNamespaceLoad): (JSC::DFG::ByteCodeParser::handleGetById): (JSC::DFG::ByteCodeParser::handlePutById): (JSC::DFG::ByteCodeParser::parseBlock): (JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry): (JSC::DFG::ByteCodeParser::InlineStackEntry::~InlineStackEntry): (JSC::DFG::ByteCodeParser::parse): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGClobbersExitState.cpp: (JSC::DFG::clobbersExitState): * dfg/DFGCommonData.h: * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDesiredWatchpoints.h: (JSC::DFG::SetPointerAdaptor::hasBeenInvalidated): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::dump): * dfg/DFGMayExit.cpp: * dfg/DFGNode.h: (JSC::DFG::Node::hasCallLinkStatus): (JSC::DFG::Node::callLinkStatus): (JSC::DFG::Node::hasGetByIdStatus): (JSC::DFG::Node::getByIdStatus): (JSC::DFG::Node::hasPutByIdStatus): (JSC::DFG::Node::putByIdStatus): * dfg/DFGNodeType.h: * dfg/DFGOSRExitBase.cpp: (JSC::DFG::OSRExitBase::considerAddingAsFrequentExitSiteSlow): * dfg/DFGObjectAllocationSinkingPhase.cpp: * dfg/DFGPlan.cpp: (JSC::DFG::Plan::reallyAdd): (JSC::DFG::Plan::checkLivenessAndVisitChildren): (JSC::DFG::Plan::finalizeInGC): * dfg/DFGPlan.h: * dfg/DFGPredictionPropagationPhase.cpp: * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGStrengthReductionPhase.cpp: (JSC::DFG::StrengthReductionPhase::handleNode): * dfg/DFGWorklist.cpp: (JSC::DFG::Worklist::removeDeadPlans): * ftl/FTLAbstractHeapRepository.h: * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * ftl/FTLLowerDFGToB3.cpp: (JSC::FTL::DFG::LowerDFGToB3::compileNode): (JSC::FTL::DFG::LowerDFGToB3::compileCreateThis): (JSC::FTL::DFG::LowerDFGToB3::compileFilterICStatus): * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallStubRoutine::hasEdges const): (JSC::PolymorphicCallStubRoutine::edges const): * jit/PolymorphicCallStubRoutine.h: * profiler/ProfilerBytecodeSequence.cpp: (JSC::Profiler::BytecodeSequence::BytecodeSequence): * runtime/FunctionRareData.cpp: (JSC::FunctionRareData::initializeObjectAllocationProfile): * runtime/Options.h: Source/WTF: * wtf/TinyPtrSet.h: (WTF::TinyPtrSet::operator!= const): Canonical link: https://commits.webkit.org/203069@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234086 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-07-22 02:48:16 +00:00
bool hasEdges() const;
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
CallEdgeList edges() const;
void clearCallNodesFor(CallLinkInfo*);
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
AccessCase should strongly visit its dependencies while on stack https://bugs.webkit.org/show_bug.cgi?id=201986 <rdar://problem/55521953> Reviewed by Saam Barati and Yusuke Suzuki. JSTests: * stress/ftl-put-by-id-setter-exception-interesting-live-state-2.js: Added. (foo): (warmup): Source/JavaScriptCore: AccessCase::doesCalls is responsible for specifying the cells it depends on, so that MarkingGCAwareJITStubRoutine can strongly visit them while the stub is on stack. However, it was missing most of its dependencies, which led to it being collected while on stack. This manifested in the flaky test stress/ftl-put-by-id-setter-exception-interesting-live-state.js as the PolymorphicAccess being collected and removing its exception handler from the code block, which led to exception propagating past the try/catch. In order to fix this, we abstract the dependency gathering logic from AccessCase into forEachDependentCell and use it to implement visitWeak as well as doesCalls in order to guarantee that their implementation is consistent. * bytecode/AccessCase.cpp: (JSC::AccessCase::forEachDependentCell const): (JSC::AccessCase::doesCalls const): (JSC::AccessCase::visitWeak const): * bytecode/AccessCase.h: * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::lastSeenCallee const): (JSC::CallLinkInfo::haveLastSeenCallee const): (JSC::CallLinkInfo::lastSeenCallee): Deleted. (JSC::CallLinkInfo::haveLastSeenCallee): Deleted. * bytecode/CallLinkInfo.h: (JSC::CallLinkInfo::isDirect const): (JSC::CallLinkInfo::isLinked const): (JSC::CallLinkInfo::stub const): (JSC::CallLinkInfo::forEachDependentCell const): (JSC::CallLinkInfo::isLinked): Deleted. (JSC::CallLinkInfo::stub): Deleted. * bytecode/ObjectPropertyCondition.cpp: (JSC::ObjectPropertyCondition::isStillLive const): * bytecode/ObjectPropertyCondition.h: (JSC::ObjectPropertyCondition::forEachDependentCell const): * bytecode/ObjectPropertyConditionSet.cpp: (JSC::ObjectPropertyConditionSet::areStillLive const): * bytecode/ObjectPropertyConditionSet.h: (JSC::ObjectPropertyConditionSet::forEachDependentCell const): * bytecode/PropertyCondition.cpp: (JSC::PropertyCondition::isStillLive const): * bytecode/PropertyCondition.h: (JSC::PropertyCondition::forEachDependentCell const): * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallStubRoutine::visitWeak): * jit/PolymorphicCallStubRoutine.h: (JSC::PolymorphicCallStubRoutine::forEachDependentCell): Canonical link: https://commits.webkit.org/215681@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@250184 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-09-21 18:30:29 +00:00
template<typename Functor>
void forEachDependentCell(const Functor& functor)
{
for (auto& variant : m_variants)
functor(variant.get());
}
[clang-tidy] Run modernize-use-override over JSC, then ensure as much as possible is final https://bugs.webkit.org/show_bug.cgi?id=211743 Reviewed by Saam Barati. * API/JSScriptRef.cpp: * b3/B3ArgumentRegValue.h: * b3/B3AtomicValue.h: * b3/B3CCallValue.h: * b3/B3CheckSpecial.h: * b3/B3CheckValue.h: * b3/B3Const32Value.h: * b3/B3Const64Value.h: * b3/B3ConstDoubleValue.h: * b3/B3ConstFloatValue.h: * b3/B3DataSection.h: * b3/B3ExtractValue.h: * b3/B3FenceValue.h: * b3/B3MemoryValue.h: * b3/B3PatchpointSpecial.h: * b3/B3PatchpointValue.h: * b3/B3SlotBaseValue.h: * b3/B3StackmapSpecial.h: * b3/B3StackmapValue.h: * b3/B3SwitchValue.h: * b3/B3UpsilonValue.h: * b3/B3VariableValue.h: * b3/B3WasmAddressValue.h: * b3/B3WasmBoundsCheckValue.h: * b3/air/AirCCallSpecial.h: * b3/air/AirPrintSpecial.h: * bytecode/BytecodeDumper.h: * bytecode/GetterSetterAccessCase.h: * bytecode/InstanceOfAccessCase.h: * bytecode/IntrinsicGetterAccessCase.h: * bytecode/ModuleNamespaceAccessCase.h: * bytecode/ProxyableAccessCase.h: * bytecode/Watchpoint.h: * dfg/DFGFailedFinalizer.h: * dfg/DFGGraph.h: * dfg/DFGJITCode.h: * dfg/DFGJITFinalizer.h: * dfg/DFGToFTLDeferredCompilationCallback.h: * dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h: * ftl/FTLForOSREntryJITCode.h: * ftl/FTLJITCode.h: * ftl/FTLJITFinalizer.h: * heap/CompleteSubspace.h: * heap/FastMallocAlignedMemoryAllocator.h: * heap/GigacageAlignedMemoryAllocator.h: * heap/HeapSnapshotBuilder.h: * heap/IsoAlignedMemoryAllocator.h: * heap/IsoSubspace.h: * heap/IsoSubspacePerVM.cpp: * heap/IsoSubspacePerVM.h: * heap/MarkStackMergingConstraint.h: * heap/SimpleMarkingConstraint.h: * heap/SpaceTimeMutatorScheduler.h: * heap/StochasticSpaceTimeMutatorScheduler.h: * heap/SynchronousStopTheWorldMutatorScheduler.h: * jit/GCAwareJITStubRoutine.h: * jit/JITCode.h: * jit/JITThunks.h: * jit/JITToDFGDeferredCompilationCallback.h: * jit/PolymorphicCallStubRoutine.h: * jsc.cpp: * parser/Lexer.cpp: Address warning. * runtime/JSDestructibleObjectHeapCellType.h: * runtime/SimpleTypedArrayController.h: * runtime/Structure.h: * runtime/WeakGCMap.h: * wasm/WasmEntryPlan.h: Canonical link: https://commits.webkit.org/224681@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@261567 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-05-12 18:48:02 +00:00
bool visitWeak(VM&) final;
[clang-tidy] Run modernize-use-override over JSC, then ensure as much as possible is final https://bugs.webkit.org/show_bug.cgi?id=211743 Reviewed by Saam Barati. * API/JSScriptRef.cpp: * b3/B3ArgumentRegValue.h: * b3/B3AtomicValue.h: * b3/B3CCallValue.h: * b3/B3CheckSpecial.h: * b3/B3CheckValue.h: * b3/B3Const32Value.h: * b3/B3Const64Value.h: * b3/B3ConstDoubleValue.h: * b3/B3ConstFloatValue.h: * b3/B3DataSection.h: * b3/B3ExtractValue.h: * b3/B3FenceValue.h: * b3/B3MemoryValue.h: * b3/B3PatchpointSpecial.h: * b3/B3PatchpointValue.h: * b3/B3SlotBaseValue.h: * b3/B3StackmapSpecial.h: * b3/B3StackmapValue.h: * b3/B3SwitchValue.h: * b3/B3UpsilonValue.h: * b3/B3VariableValue.h: * b3/B3WasmAddressValue.h: * b3/B3WasmBoundsCheckValue.h: * b3/air/AirCCallSpecial.h: * b3/air/AirPrintSpecial.h: * bytecode/BytecodeDumper.h: * bytecode/GetterSetterAccessCase.h: * bytecode/InstanceOfAccessCase.h: * bytecode/IntrinsicGetterAccessCase.h: * bytecode/ModuleNamespaceAccessCase.h: * bytecode/ProxyableAccessCase.h: * bytecode/Watchpoint.h: * dfg/DFGFailedFinalizer.h: * dfg/DFGGraph.h: * dfg/DFGJITCode.h: * dfg/DFGJITFinalizer.h: * dfg/DFGToFTLDeferredCompilationCallback.h: * dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h: * ftl/FTLForOSREntryJITCode.h: * ftl/FTLJITCode.h: * ftl/FTLJITFinalizer.h: * heap/CompleteSubspace.h: * heap/FastMallocAlignedMemoryAllocator.h: * heap/GigacageAlignedMemoryAllocator.h: * heap/HeapSnapshotBuilder.h: * heap/IsoAlignedMemoryAllocator.h: * heap/IsoSubspace.h: * heap/IsoSubspacePerVM.cpp: * heap/IsoSubspacePerVM.h: * heap/MarkStackMergingConstraint.h: * heap/SimpleMarkingConstraint.h: * heap/SpaceTimeMutatorScheduler.h: * heap/StochasticSpaceTimeMutatorScheduler.h: * heap/SynchronousStopTheWorldMutatorScheduler.h: * jit/GCAwareJITStubRoutine.h: * jit/JITCode.h: * jit/JITThunks.h: * jit/JITToDFGDeferredCompilationCallback.h: * jit/PolymorphicCallStubRoutine.h: * jsc.cpp: * parser/Lexer.cpp: Address warning. * runtime/JSDestructibleObjectHeapCellType.h: * runtime/SimpleTypedArrayController.h: * runtime/Structure.h: * runtime/WeakGCMap.h: * wasm/WasmEntryPlan.h: Canonical link: https://commits.webkit.org/224660@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@261542 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-05-12 03:04:10 +00:00
private:
Implement a GC verifier. https://bugs.webkit.org/show_bug.cgi?id=217274 rdar://56255683 Reviewed by Filip Pizlo and Saam Barati. Source/JavaScriptCore: The idea behind the GC verifier is that in the GC End phase before we finalize and sweep, we'll do a simple stop the world synchronous full GC with the VerifierSlotVisitor. The VerifierSlotVisitor will collect it's own information on whether a JS cell should be marked or not. After this verifier GC pass, we'll compare the mark results. If the verifier GC says a cell should be marked, then the real GC should have marked the cell. The reverse is not true: if the verifier does not mark a cell, it is still OK for the real GC to mark it. For example, in an eden GC, all old generation cells would be considered mark by the real GC though the verifier would know better if they are already dead. Implementation details: 1. SlotVisitor (only used by the real GC) now inherits from a new abstract class, AbstractSlotVisitor. VerifierSlotVisitor (only used by the verifier GC) also inherits from AbstractSlotVisitor. 2. AbstractSlotVisitor declares many virtual methods. SlotVisitor implements some of these virtual methods as inline and final. If the client is invoking one these methods and knows that it will be operating on a SlotVisitor, the method being final allows it to be inlined into the client instead of going through the virtual dispatch. For the VerifierSlotVisitor, these methods will always be invoked by virtual dispatch via the AbstractSlotVisitor abstraction. 3. Almost all methods that takes a SlotVisitor previously (with a few exceptions) will now be templatized, and specialized to either take a SlotVisitor or an AbstractSlotVisitor. The cell MethodTable will now have 2 versions of visitChildren and visitOutputConstraints: one for SlotVisitor, and one for AbstractSlotVisitor. The reason we don't wire the 2nd version to VerifierSlotVisitor (instead of AbstractSlotVisitor) is because we don't need the GC verifier to run at top speed (though we don't want it to be too slow). Also, having hooks for using an AbstractSlotVisitor gives us more utility for implementing other types of GC checkers / analyzers in the future as subclasses of AbstractSlotVisitor. 4. Some minority of methods that used to take a SlotVisitor but are not critical to performance, will now just take an AbstractSlotVisitor instead. For example, see TypeProfilerLog::visit(). 5. isReachableFromOpaqueRoots() methods will also only take an AbstractSlotVisitor. The reason this is OK is because isReachableFromOpaqueRoots() only uses the visitor's addOpaqueRoot() and containsOpaqueRoot() methods, which are implemented in the AbstractSlotVisitor itself. For SlotVisitor, the m_opaqueRoot field will reference Heap::m_opaqueRoots. For VerifierSlotVisitor, the m_opaqueRoot field will reference its own opaque roots storage. This implementation of addOpaqueRoot() is perf neutral for SlotVisitor because where it would previously invoke m_heap.m_opaqueRoots.add(), it will now invoke m_opaqueRoot.add() instead where m_opaqueRoot points to m_heap.m_opaqueRoots. Ditto for AbstractSlotVisitor::containsOpaqueRoot(). 6. When reifying a templatized visit method, we do it in 2 ways: a. Implement the template method as an ALWAYS_INLINE Impl method, and have 2 visit methods (taking a SlotVisitor and an AbstractSlotVisitor respectively) inline the Impl method. For example, see JSObject::visitChildrenImpl(). b. Just templatize the visit method, and explicitly instantiate it with a SlotVisitor and an AbstractSlotVisitor. For example, see DesiredTransition::visitChildren(). The reason we need form (a) is if: i. we need to export the visit methods. For example, see JSObject:visitChildren(). Note: A Clang engineer told me that "there's no way to export an explicit instantiation that will make it a strong symbol." This is because "C++ does not provide any standard way to guarantee that an explicit instantiation is unique, and Clang hasn't added any extension to do so." ii. the visit method is an override of a virtual method. For example, see DFG::Scannable::visitChildren() and DFG::Graph::visitChildren(). Otherwise, we'll prefer form (b) as it is natural C++. 7. Because templatizing all the visit methods requires a lot of boiler plate code, we introduce some macros in SlotVisitorMacros.h to reduce some of the boiler plate burden. We especially try to do this for methods of form (a) (see (6) above) which require more boiler plate. 8. The driver of the real GC is MarkingConstraintSet::executeConvergence() which runs with the MarkingConstraintSolver. The driver of the verifier GC is Heap::verifyGC(), which has a loop to drain marked objects and execute contraints. 9. The GC verifier is built in by default but disabled. The relevant options are: JSC_verifyGC and JSC_verboseVerifyGC. JSC_verifyGC will enable the GC verifier. If JSC_verifyGC is true and the verifier finds a cell that is erroneously not marked by the real GC, it will dump an error message and then crash with a RELEASE_ASSERT. JSC_verboseVerifyGC will enable the GC verifier along with some more heavy weight record keeping (i.e. tracking the parent / owner cell that marked a cell, and capturing the call stack when the marked cell is appended to the mark stack). If JSC_verboseVerifyGC is true and the verifier finds a cell that is erroneously not marked by the real GC, it will dump the parent cell and captured stack along with an error message before crashing. This extra information provides the starting point for debugging GC bugs found by the verifier. Enabling JSC_verboseVerifyGC will automatically enable JSC_verifyGC. 10. Non-determinism in the real GC. The GC verifier's algorithm relies on the real GC being deterministic. However, there are a few places where this is not true: a. Marking conservative roots on the mutator stacks. By the time the verifier GC runs (in the GC End phase), the mutator stacks will look completely different than what the real GC saw. To work around this, if the verifier is enabled, then every conservative root captured by the real GC will also be added to the verifier's mark stack. When running verifyGC() in the End phase, the conservative root scans will be treated as no-ops. b. CodeBlock::shouldJettisonDueToOldAge() may return a different value. This is possible because the codeBlock may be in mid compilation while the real GC is in progress. CodeBlock::shouldVisitStrongly() calls shouldJettisonDueToOldAge(), and may see an old LLInt codeBlock whose timeToLive has expired. As a result, shouldJettisonDueToOldAge() returns true and shouldVisitStrongly() will return false for the real GC, leading to it not marking the codeBlock. However, before the verifier GC gets to run, baseline compilation on the codeBlock may finish. As a baseline codeBlock now, it gets a longer time to live. As a result, when the verifier GC runs, shouldJettisonDueToOldAge() will return false, and shouldVisitStrongly() in turn returns true. This results in the verifier GC marking the codeBlock (and its children) when the real GC did not, which leads to a false error. This is not a real error because if the real GC did not mark the code block, it will simply get jettisoned, and can be reinstantiated when needed later. There's no GC bug here. However, we do need to work around this to prevent the false error for the GC verifier. The work around is to introduce a CodeBlock::m_visitChildrenSkippedDueToOldAge flag that records what the real GC decided in shouldJettisonDueToOldAge(). This allows the verifier GC to replay the same decision and get a consistent result. c. CodeBlock::propagateTransitions() will only do a best effort at visiting cells in ICs, etc. If a cell is not already strongly marked by the time CodeBlock::propagateTransitions() checks it, propagateTransitions() will not mark other cells that are reachable from it. Since the real GC does marking on concurrent threads, marking order is not deterministic. CodeBlock::propagateTransitions() may or may not see a cell as already marked by the time it runs. The verifier GC may mark some of these cells in a different order than the real GC. As a result, in the verifier GC, CodeBlock::propagateTransitions() may see a cell as marked (and therefore, visit its children) when it did not for the real GC. To work around this, we currently add a SuppressGCVerifierScope to CodeBlock::propagateTransitions() to pessimize the verifier, and assume that propagateTransitions() will mark nothing. SuppressGCVerifierScope is a blunt hammer that stops the verifier GC from analyzing all cells potentially reachable via CodeBlock::propagateTransitions(). In the future, it may be possible to refine this and track which cells were actually skipped over (like we did for shouldJettisonDueToOldAge()). However, this decision tracking needs to be done in the real GC, and can be very expensive in terms of performance. The shouldJettisonDueToOldAge() case is rare, and as such lends itself to this more fine grain tracking without hurting performance. The decisions made in CodeBlock::propagateTransitions() are not as rare, and hence, it would hurt performance if we did fine grain decision tracking there (at least or now). 11. Marking in the verifier GC. The real GC tracks cell marks using a Bitmap in the MarkedBlocks. The verifier GC keeps tracks of MarkedBlock cell marks using a Bitmap on the side, stashed away in a HashMap. To improve the verifier marking performance, we reserve a void* m_verifierMemo pointer in the MarkedBlock, which the verifier will employ to cache its MarkedBlockData for that MarkedBlock. This allows the verifier to get to its side Bitmap without having to do a HashMap look up for every cell. Size-wise, in the current 16K MarkBlocks, there is previously room for 1005.5 atoms after reserving space for the MarkedBlock::Footer. Since we can never allocate half an atom anyway, that .5 atom gives us the 8 bytes we need for the m_verifierMemo pointer, which we'll put in the MarkedBlock::Footer. With this patch, each MarkedBlock will now have exactly 1005 atoms available for allocation. I ran JetStream2 and Speedometer2 locally on a MacBookAir10,1, MacBookPro16,1, and a 12.9” 4th Gen iPad Pro. The benchmark results for these were all neutral. The design of the GC verifier is such that it incurs almost no additional runtime memory overhead if not in use. Code size does increase significantly because there are now 2 variants of most of the methods that take a SlotVisitor. When in use, the additional runtime memory is encapsulated in the VerifierSlotVisitor, which is instantiated and destructed every GC cycle. Hence, it can affect peak memory usage during GCs, but the cost is transient. It does not persist past the GC End phase. * API/JSAPIWrapperObject.h: * API/JSAPIWrapperObject.mm: (JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots): (JSC::JSAPIWrapperObject::visitChildrenImpl): (JSC::JSAPIWrapperObject::visitChildren): Deleted. * API/JSCallbackObject.cpp: * API/JSCallbackObject.h: (JSC::JSCallbackObjectData::visitChildren): (JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren): (JSC::JSCallbackObject<Parent>::visitChildrenImpl): * API/JSManagedValue.mm: (JSManagedValueHandleOwner::isReachableFromOpaqueRoots): * API/JSMarkingConstraintPrivate.cpp: (JSC::isMarked): (JSContextGroupAddMarkingConstraint): * API/JSVirtualMachine.mm: (scanExternalObjectGraph): (scanExternalRememberedSet): * API/JSVirtualMachineInternal.h: * API/MarkedJSValueRefArray.cpp: (JSC::MarkedJSValueRefArray::visitAggregate): * API/MarkedJSValueRefArray.h: * API/glib/JSAPIWrapperGlobalObject.cpp: (JSC::JSAPIWrapperGlobalObject::visitChildren): Deleted. * API/glib/JSAPIWrapperGlobalObject.h: * API/glib/JSAPIWrapperObjectGLib.cpp: (JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots): (JSC::JSAPIWrapperObject::visitChildrenImpl): (JSC::JSAPIWrapperObject::visitChildren): Deleted. * CMakeLists.txt: * JavaScriptCore.xcodeproj/project.pbxproj: * Scripts/wkbuiltins/builtins_generate_internals_wrapper_header.py: (BuiltinsInternalsWrapperHeaderGenerator): * Scripts/wkbuiltins/builtins_generate_internals_wrapper_implementation.py: (BuiltinsInternalsWrapperImplementationGenerator.generate_visit_method): * Scripts/wkbuiltins/builtins_templates.py: * Sources.txt: * bytecode/AccessCase.cpp: (JSC::AccessCase::propagateTransitions const): (JSC::AccessCase::visitAggregateImpl const): (JSC::AccessCase::visitAggregate const): Deleted. * bytecode/AccessCase.h: * bytecode/ByValInfo.cpp: (JSC::ByValInfo::visitAggregateImpl): (JSC::ByValInfo::visitAggregate): Deleted. * bytecode/ByValInfo.h: * bytecode/CheckPrivateBrandStatus.cpp: (JSC::CheckPrivateBrandStatus::visitAggregateImpl): (JSC::CheckPrivateBrandStatus::markIfCheap): (JSC::CheckPrivateBrandStatus::visitAggregate): Deleted. * bytecode/CheckPrivateBrandStatus.h: * bytecode/CheckPrivateBrandVariant.cpp: (JSC::CheckPrivateBrandVariant::markIfCheap): (JSC::CheckPrivateBrandVariant::visitAggregateImpl): (JSC::CheckPrivateBrandVariant::visitAggregate): Deleted. * bytecode/CheckPrivateBrandVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::visitChildrenImpl): (JSC::CodeBlock::visitChildren): (JSC::CodeBlock::shouldVisitStrongly): (JSC::CodeBlock::shouldJettisonDueToOldAge): (JSC::shouldMarkTransition): (JSC::CodeBlock::propagateTransitions): (JSC::CodeBlock::determineLiveness): (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::visitOSRExitTargets): (JSC::CodeBlock::stronglyVisitStrongReferences): (JSC::CodeBlock::stronglyVisitWeakReferences): * bytecode/CodeBlock.h: * bytecode/DeleteByIdVariant.cpp: (JSC::DeleteByIdVariant::visitAggregateImpl): (JSC::DeleteByIdVariant::markIfCheap): (JSC::DeleteByIdVariant::visitAggregate): Deleted. * bytecode/DeleteByIdVariant.h: * bytecode/DeleteByStatus.cpp: (JSC::DeleteByStatus::visitAggregateImpl): (JSC::DeleteByStatus::markIfCheap): (JSC::DeleteByStatus::visitAggregate): Deleted. * bytecode/DeleteByStatus.h: * bytecode/DirectEvalCodeCache.cpp: (JSC::DirectEvalCodeCache::visitAggregateImpl): (JSC::DirectEvalCodeCache::visitAggregate): Deleted. * bytecode/DirectEvalCodeCache.h: * bytecode/ExecutableToCodeBlockEdge.cpp: (JSC::ExecutableToCodeBlockEdge::visitChildrenImpl): (JSC::ExecutableToCodeBlockEdge::visitOutputConstraintsImpl): (JSC::ExecutableToCodeBlockEdge::runConstraint): (JSC::ExecutableToCodeBlockEdge::visitChildren): Deleted. (JSC::ExecutableToCodeBlockEdge::visitOutputConstraints): Deleted. * bytecode/ExecutableToCodeBlockEdge.h: * bytecode/GetByIdVariant.cpp: (JSC::GetByIdVariant::visitAggregateImpl): (JSC::GetByIdVariant::markIfCheap): (JSC::GetByIdVariant::visitAggregate): Deleted. * bytecode/GetByIdVariant.h: * bytecode/GetByStatus.cpp: (JSC::GetByStatus::visitAggregateImpl): (JSC::GetByStatus::markIfCheap): (JSC::GetByStatus::visitAggregate): Deleted. * bytecode/GetByStatus.h: * bytecode/InByIdStatus.cpp: (JSC::InByIdStatus::markIfCheap): * bytecode/InByIdStatus.h: * bytecode/InByIdVariant.cpp: (JSC::InByIdVariant::markIfCheap): * bytecode/InByIdVariant.h: * bytecode/InternalFunctionAllocationProfile.h: (JSC::InternalFunctionAllocationProfile::visitAggregate): * bytecode/ObjectAllocationProfile.h: (JSC::ObjectAllocationProfileBase::visitAggregate): (JSC::ObjectAllocationProfileWithPrototype::visitAggregate): * bytecode/PolymorphicAccess.cpp: (JSC::PolymorphicAccess::propagateTransitions const): (JSC::PolymorphicAccess::visitAggregateImpl): (JSC::PolymorphicAccess::visitAggregate): Deleted. * bytecode/PolymorphicAccess.h: * bytecode/PutByIdStatus.cpp: (JSC::PutByIdStatus::markIfCheap): * bytecode/PutByIdStatus.h: * bytecode/PutByIdVariant.cpp: (JSC::PutByIdVariant::markIfCheap): * bytecode/PutByIdVariant.h: * bytecode/RecordedStatuses.cpp: (JSC::RecordedStatuses::visitAggregateImpl): (JSC::RecordedStatuses::markIfCheap): (JSC::RecordedStatuses::visitAggregate): Deleted. * bytecode/RecordedStatuses.h: * bytecode/SetPrivateBrandStatus.cpp: (JSC::SetPrivateBrandStatus::visitAggregateImpl): (JSC::SetPrivateBrandStatus::markIfCheap): (JSC::SetPrivateBrandStatus::visitAggregate): Deleted. * bytecode/SetPrivateBrandStatus.h: * bytecode/SetPrivateBrandVariant.cpp: (JSC::SetPrivateBrandVariant::markIfCheap): (JSC::SetPrivateBrandVariant::visitAggregateImpl): (JSC::SetPrivateBrandVariant::visitAggregate): Deleted. * bytecode/SetPrivateBrandVariant.h: * bytecode/StructureSet.cpp: (JSC::StructureSet::markIfCheap const): * bytecode/StructureSet.h: * bytecode/StructureStubInfo.cpp: (JSC::StructureStubInfo::visitAggregateImpl): (JSC::StructureStubInfo::propagateTransitions): (JSC::StructureStubInfo::visitAggregate): Deleted. * bytecode/StructureStubInfo.h: * bytecode/UnlinkedCodeBlock.cpp: (JSC::UnlinkedCodeBlock::visitChildrenImpl): (JSC::UnlinkedCodeBlock::visitChildren): Deleted. * bytecode/UnlinkedCodeBlock.h: * bytecode/UnlinkedFunctionExecutable.cpp: (JSC::UnlinkedFunctionExecutable::visitChildrenImpl): (JSC::UnlinkedFunctionExecutable::visitChildren): Deleted. * bytecode/UnlinkedFunctionExecutable.h: * debugger/DebuggerScope.cpp: (JSC::DebuggerScope::visitChildrenImpl): (JSC::DebuggerScope::visitChildren): Deleted. * debugger/DebuggerScope.h: * dfg/DFGDesiredTransitions.cpp: (JSC::DFG::DesiredTransition::visitChildren): (JSC::DFG::DesiredTransitions::visitChildren): * dfg/DFGDesiredTransitions.h: * dfg/DFGDesiredWeakReferences.cpp: (JSC::DFG::DesiredWeakReferences::visitChildren): * dfg/DFGDesiredWeakReferences.h: * dfg/DFGGraph.cpp: (JSC::DFG::Graph::visitChildrenImpl): (JSC::DFG::Graph::visitChildren): * dfg/DFGGraph.h: * dfg/DFGPlan.cpp: (JSC::DFG::Plan::checkLivenessAndVisitChildren): (JSC::DFG::Plan::isKnownToBeLiveDuringGC): (JSC::DFG::Plan::isKnownToBeLiveAfterGC): * dfg/DFGPlan.h: * dfg/DFGPlanInlines.h: (JSC::DFG::Plan::iterateCodeBlocksForGC): * dfg/DFGSafepoint.cpp: (JSC::DFG::Safepoint::checkLivenessAndVisitChildren): (JSC::DFG::Safepoint::isKnownToBeLiveDuringGC): (JSC::DFG::Safepoint::isKnownToBeLiveAfterGC): * dfg/DFGSafepoint.h: * dfg/DFGScannable.h: * dfg/DFGWorklist.cpp: (JSC::DFG::Worklist::visitWeakReferences): (JSC::DFG::Worklist::removeDeadPlans): * dfg/DFGWorklist.h: * dfg/DFGWorklistInlines.h: (JSC::DFG::iterateCodeBlocksForGC): (JSC::DFG::Worklist::iterateCodeBlocksForGC): * heap/AbstractSlotVisitor.h: Added. (JSC::AbstractSlotVisitor::Context::cell const): (JSC::AbstractSlotVisitor::SuppressGCVerifierScope::SuppressGCVerifierScope): (JSC::AbstractSlotVisitor::SuppressGCVerifierScope::~SuppressGCVerifierScope): (JSC::AbstractSlotVisitor::DefaultMarkingViolationAssertionScope::DefaultMarkingViolationAssertionScope): (JSC::AbstractSlotVisitor::collectorMarkStack): (JSC::AbstractSlotVisitor::mutatorMarkStack): (JSC::AbstractSlotVisitor::collectorMarkStack const): (JSC::AbstractSlotVisitor::mutatorMarkStack const): (JSC::AbstractSlotVisitor::isEmpty): (JSC::AbstractSlotVisitor::setIgnoreNewOpaqueRoots): (JSC::AbstractSlotVisitor::visitCount const): (JSC::AbstractSlotVisitor::addToVisitCount): (JSC::AbstractSlotVisitor::rootMarkReason const): (JSC::AbstractSlotVisitor::setRootMarkReason): (JSC::AbstractSlotVisitor::didRace): (JSC::AbstractSlotVisitor::codeName const): (JSC::SetRootMarkReasonScope::SetRootMarkReasonScope): (JSC::SetRootMarkReasonScope::~SetRootMarkReasonScope): * heap/AbstractSlotVisitorInlines.h: Added. (JSC::AbstractSlotVisitor::Context::Context): (JSC::AbstractSlotVisitor::Context::~Context): (JSC::AbstractSlotVisitor::AbstractSlotVisitor): (JSC::AbstractSlotVisitor::heap const): (JSC::AbstractSlotVisitor::vm): (JSC::AbstractSlotVisitor::vm const): (JSC::AbstractSlotVisitor::addOpaqueRoot): (JSC::AbstractSlotVisitor::containsOpaqueRoot const): (JSC::AbstractSlotVisitor::append): (JSC::AbstractSlotVisitor::appendHidden): (JSC::AbstractSlotVisitor::appendHiddenUnbarriered): (JSC::AbstractSlotVisitor::appendValues): (JSC::AbstractSlotVisitor::appendValuesHidden): (JSC::AbstractSlotVisitor::appendUnbarriered): (JSC::AbstractSlotVisitor::parentCell const): (JSC::AbstractSlotVisitor::reset): * heap/HandleSet.cpp: (JSC::HandleSet::visitStrongHandles): * heap/HandleSet.h: * heap/Heap.cpp: (JSC::Heap::iterateExecutingAndCompilingCodeBlocks): (JSC::Heap::iterateExecutingAndCompilingCodeBlocksWithoutHoldingLocks): (JSC::Heap::runEndPhase): (JSC::Heap::willStartCollection): (JSC::scanExternalRememberedSet): (JSC::serviceSamplingProfiler): (JSC::Heap::addCoreConstraints): (JSC::Heap::verifyGC): (JSC::Heap::isAnalyzingHeap const): Deleted. * heap/Heap.h: (JSC::Heap::isMarkingForGCVerifier const): (JSC::Heap::numOpaqueRoots const): Deleted. * heap/HeapInlines.h: (JSC::Heap::isMarked): * heap/HeapProfiler.cpp: (JSC::HeapProfiler::setActiveHeapAnalyzer): * heap/IsoCellSet.h: * heap/IsoCellSetInlines.h: (JSC::IsoCellSet::forEachMarkedCellInParallel): * heap/JITStubRoutineSet.cpp: (JSC::JITStubRoutineSet::traceMarkedStubRoutines): * heap/JITStubRoutineSet.h: (JSC::JITStubRoutineSet::traceMarkedStubRoutines): * heap/MarkStackMergingConstraint.cpp: (JSC::MarkStackMergingConstraint::prepareToExecuteImpl): (JSC::MarkStackMergingConstraint::executeImplImpl): (JSC::MarkStackMergingConstraint::executeImpl): * heap/MarkStackMergingConstraint.h: * heap/MarkedBlock.h: (JSC::MarkedBlock::Handle::atomAt const): (JSC::MarkedBlock::setVerifierMemo): (JSC::MarkedBlock::verifierMemo const): * heap/MarkedSpace.cpp: (JSC::MarkedSpace::visitWeakSets): * heap/MarkedSpace.h: * heap/MarkingConstraint.cpp: (JSC::MarkingConstraint::execute): (JSC::MarkingConstraint::executeSynchronously): (JSC::MarkingConstraint::prepareToExecute): (JSC::MarkingConstraint::doParallelWork): (JSC::MarkingConstraint::prepareToExecuteImpl): * heap/MarkingConstraint.h: * heap/MarkingConstraintExecutorPair.h: Added. (JSC::MarkingConstraintExecutorPair::MarkingConstraintExecutorPair): (JSC::MarkingConstraintExecutorPair::execute): * heap/MarkingConstraintSet.cpp: (JSC::MarkingConstraintSet::add): (JSC::MarkingConstraintSet::executeAllSynchronously): (JSC::MarkingConstraintSet::executeAll): Deleted. * heap/MarkingConstraintSet.h: (JSC::MarkingConstraintSet::add): * heap/MarkingConstraintSolver.cpp: * heap/MarkingConstraintSolver.h: * heap/SimpleMarkingConstraint.cpp: (JSC::SimpleMarkingConstraint::SimpleMarkingConstraint): (JSC::SimpleMarkingConstraint::executeImplImpl): (JSC::SimpleMarkingConstraint::executeImpl): * heap/SimpleMarkingConstraint.h: * heap/SlotVisitor.cpp: (JSC::SlotVisitor::SlotVisitor): (JSC::SlotVisitor::reset): (JSC::SlotVisitor::appendSlow): (JSC::SlotVisitor::addParallelConstraintTask): * heap/SlotVisitor.h: (JSC::SlotVisitor::collectorMarkStack): Deleted. (JSC::SlotVisitor::mutatorMarkStack): Deleted. (JSC::SlotVisitor::collectorMarkStack const): Deleted. (JSC::SlotVisitor::mutatorMarkStack const): Deleted. (JSC::SlotVisitor::isEmpty): Deleted. (JSC::SlotVisitor::isFirstVisit const): Deleted. (JSC::SlotVisitor::bytesVisited const): Deleted. (JSC::SlotVisitor::visitCount const): Deleted. (JSC::SlotVisitor::addToVisitCount): Deleted. (JSC::SlotVisitor::isAnalyzingHeap const): Deleted. (JSC::SlotVisitor::heapAnalyzer const): Deleted. (JSC::SlotVisitor::rootMarkReason const): Deleted. (JSC::SlotVisitor::setRootMarkReason): Deleted. (JSC::SlotVisitor::markingVersion const): Deleted. (JSC::SlotVisitor::mutatorIsStopped const): Deleted. (JSC::SlotVisitor::rightToRun): Deleted. (JSC::SlotVisitor::didRace): Deleted. (JSC::SlotVisitor::setIgnoreNewOpaqueRoots): Deleted. (JSC::SlotVisitor::codeName const): Deleted. (JSC::SetRootMarkReasonScope::SetRootMarkReasonScope): Deleted. (JSC::SetRootMarkReasonScope::~SetRootMarkReasonScope): Deleted. * heap/SlotVisitorInlines.h: (JSC::SlotVisitor::isMarked const): (JSC::SlotVisitor::addOpaqueRoot): Deleted. (JSC::SlotVisitor::containsOpaqueRoot const): Deleted. (JSC::SlotVisitor::heap const): Deleted. (JSC::SlotVisitor::vm): Deleted. (JSC::SlotVisitor::vm const): Deleted. * heap/SlotVisitorMacros.h: Added. * heap/Subspace.h: * heap/SubspaceInlines.h: (JSC::Subspace::forEachMarkedCellInParallel): * heap/VerifierSlotVisitor.cpp: Added. (JSC::MarkerData::MarkerData): (JSC::VerifierSlotVisitor::MarkedBlockData::MarkedBlockData): (JSC::VerifierSlotVisitor::MarkedBlockData::addMarkerData): (JSC::VerifierSlotVisitor::MarkedBlockData::markerData const): (JSC::VerifierSlotVisitor::PreciseAllocationData::PreciseAllocationData): (JSC::VerifierSlotVisitor::PreciseAllocationData::markerData const): (JSC::VerifierSlotVisitor::PreciseAllocationData::addMarkerData): (JSC::VerifierSlotVisitor::VerifierSlotVisitor): (JSC::VerifierSlotVisitor::~VerifierSlotVisitor): (JSC::VerifierSlotVisitor::addParallelConstraintTask): (JSC::VerifierSlotVisitor::executeConstraintTasks): (JSC::VerifierSlotVisitor::append): (JSC::VerifierSlotVisitor::appendToMarkStack): (JSC::VerifierSlotVisitor::appendUnbarriered): (JSC::VerifierSlotVisitor::appendHiddenUnbarriered): (JSC::VerifierSlotVisitor::drain): (JSC::VerifierSlotVisitor::dumpMarkerData): (JSC::VerifierSlotVisitor::isFirstVisit const): (JSC::VerifierSlotVisitor::isMarked const): (JSC::VerifierSlotVisitor::markAuxiliary): (JSC::VerifierSlotVisitor::mutatorIsStopped const): (JSC::VerifierSlotVisitor::testAndSetMarked): (JSC::VerifierSlotVisitor::setMarkedAndAppendToMarkStack): (JSC::VerifierSlotVisitor::visitAsConstraint): (JSC::VerifierSlotVisitor::visitChildren): * heap/VerifierSlotVisitor.h: Added. (JSC::VerifierSlotVisitor::MarkedBlockData::block const): (JSC::VerifierSlotVisitor::MarkedBlockData::atoms const): (JSC::VerifierSlotVisitor::MarkedBlockData::isMarked): (JSC::VerifierSlotVisitor::MarkedBlockData::testAndSetMarked): (JSC::VerifierSlotVisitor::PreciseAllocationData::allocation const): (JSC::VerifierSlotVisitor::appendSlow): * heap/VerifierSlotVisitorInlines.h: Added. (JSC::VerifierSlotVisitor::forEachLiveCell): (JSC::VerifierSlotVisitor::forEachLivePreciseAllocation): (JSC::VerifierSlotVisitor::forEachLiveMarkedBlockCell): * heap/VisitCounter.h: (JSC::VisitCounter::VisitCounter): (JSC::VisitCounter::visitor const): * heap/WeakBlock.cpp: (JSC::WeakBlock::specializedVisit): (JSC::WeakBlock::visitImpl): (JSC::WeakBlock::visit): * heap/WeakBlock.h: * heap/WeakHandleOwner.cpp: (JSC::WeakHandleOwner::isReachableFromOpaqueRoots): * heap/WeakHandleOwner.h: * heap/WeakSet.cpp: * heap/WeakSet.h: (JSC::WeakSet::visit): * interpreter/ShadowChicken.cpp: (JSC::ShadowChicken::visitChildren): * interpreter/ShadowChicken.h: * jit/GCAwareJITStubRoutine.cpp: (JSC::MarkingGCAwareJITStubRoutine::markRequiredObjectsInternalImpl): (JSC::MarkingGCAwareJITStubRoutine::markRequiredObjectsInternal): (JSC::GCAwareJITStubRoutine::markRequiredObjectsInternal): Deleted. * jit/GCAwareJITStubRoutine.h: (JSC::GCAwareJITStubRoutine::markRequiredObjects): (JSC::GCAwareJITStubRoutine::markRequiredObjectsInternal): * jit/JITWorklist.cpp: * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternalImpl): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: * runtime/AbstractModuleRecord.cpp: (JSC::AbstractModuleRecord::visitChildrenImpl): (JSC::AbstractModuleRecord::visitChildren): Deleted. * runtime/AbstractModuleRecord.h: * runtime/ArgList.cpp: (JSC::MarkedArgumentBuffer::markLists): * runtime/ArgList.h: * runtime/CacheableIdentifier.h: * runtime/CacheableIdentifierInlines.h: (JSC::CacheableIdentifier::visitAggregate const): * runtime/ClassInfo.h: (JSC::MethodTable::visitChildren const): (JSC::MethodTable::visitOutputConstraints const): * runtime/ClonedArguments.cpp: (JSC::ClonedArguments::visitChildrenImpl): (JSC::ClonedArguments::visitChildren): Deleted. * runtime/ClonedArguments.h: * runtime/DirectArguments.cpp: (JSC::DirectArguments::visitChildrenImpl): (JSC::DirectArguments::visitChildren): Deleted. * runtime/DirectArguments.h: * runtime/EvalExecutable.cpp: (JSC::EvalExecutable::visitChildrenImpl): (JSC::EvalExecutable::visitChildren): Deleted. * runtime/EvalExecutable.h: * runtime/Exception.cpp: (JSC::Exception::visitChildrenImpl): (JSC::Exception::visitChildren): Deleted. * runtime/Exception.h: * runtime/FunctionExecutable.cpp: (JSC::FunctionExecutable::visitChildrenImpl): (JSC::FunctionExecutable::visitChildren): Deleted. * runtime/FunctionExecutable.h: * runtime/FunctionRareData.cpp: (JSC::FunctionRareData::visitChildrenImpl): (JSC::FunctionRareData::visitChildren): Deleted. * runtime/FunctionRareData.h: * runtime/GenericArguments.h: * runtime/GenericArgumentsInlines.h: (JSC::GenericArguments<Type>::visitChildrenImpl): (JSC::GenericArguments<Type>::visitChildren): Deleted. * runtime/GetterSetter.cpp: (JSC::GetterSetter::visitChildrenImpl): (JSC::GetterSetter::visitChildren): Deleted. * runtime/GetterSetter.h: * runtime/HashMapImpl.cpp: (JSC::HashMapBucket<Data>::visitChildrenImpl): (JSC::HashMapImpl<HashMapBucket>::visitChildrenImpl): (JSC::HashMapBucket<Data>::visitChildren): Deleted. (JSC::HashMapImpl<HashMapBucket>::visitChildren): Deleted. * runtime/HashMapImpl.h: * runtime/InternalFunction.cpp: (JSC::InternalFunction::visitChildrenImpl): (JSC::InternalFunction::visitChildren): Deleted. * runtime/InternalFunction.h: * runtime/IntlCollator.cpp: (JSC::IntlCollator::visitChildrenImpl): (JSC::IntlCollator::visitChildren): Deleted. * runtime/IntlCollator.h: * runtime/IntlDateTimeFormat.cpp: (JSC::IntlDateTimeFormat::visitChildrenImpl): (JSC::IntlDateTimeFormat::visitChildren): Deleted. * runtime/IntlDateTimeFormat.h: * runtime/IntlLocale.cpp: (JSC::IntlLocale::visitChildrenImpl): (JSC::IntlLocale::visitChildren): Deleted. * runtime/IntlLocale.h: * runtime/IntlNumberFormat.cpp: (JSC::IntlNumberFormat::visitChildrenImpl): (JSC::IntlNumberFormat::visitChildren): Deleted. * runtime/IntlNumberFormat.h: * runtime/IntlPluralRules.cpp: (JSC::IntlPluralRules::visitChildrenImpl): (JSC::IntlPluralRules::visitChildren): Deleted. * runtime/IntlPluralRules.h: * runtime/IntlRelativeTimeFormat.cpp: (JSC::IntlRelativeTimeFormat::visitChildrenImpl): (JSC::IntlRelativeTimeFormat::visitChildren): Deleted. * runtime/IntlRelativeTimeFormat.h: * runtime/IntlSegmentIterator.cpp: (JSC::IntlSegmentIterator::visitChildrenImpl): (JSC::IntlSegmentIterator::visitChildren): Deleted. * runtime/IntlSegmentIterator.h: * runtime/IntlSegments.cpp: (JSC::IntlSegments::visitChildrenImpl): (JSC::IntlSegments::visitChildren): Deleted. * runtime/IntlSegments.h: * runtime/JSArrayBufferView.cpp: (JSC::JSArrayBufferView::visitChildrenImpl): (JSC::JSArrayBufferView::visitChildren): Deleted. * runtime/JSArrayBufferView.h: * runtime/JSArrayIterator.cpp: (JSC::JSArrayIterator::visitChildrenImpl): (JSC::JSArrayIterator::visitChildren): Deleted. * runtime/JSArrayIterator.h: * runtime/JSAsyncGenerator.cpp: (JSC::JSAsyncGenerator::visitChildrenImpl): (JSC::JSAsyncGenerator::visitChildren): Deleted. * runtime/JSAsyncGenerator.h: * runtime/JSBigInt.cpp: (JSC::JSBigInt::visitChildrenImpl): (JSC::JSBigInt::visitChildren): Deleted. * runtime/JSBigInt.h: * runtime/JSBoundFunction.cpp: (JSC::JSBoundFunction::visitChildrenImpl): (JSC::JSBoundFunction::visitChildren): Deleted. * runtime/JSBoundFunction.h: * runtime/JSCallee.cpp: (JSC::JSCallee::visitChildrenImpl): (JSC::JSCallee::visitChildren): Deleted. * runtime/JSCallee.h: * runtime/JSCell.h: * runtime/JSCellInlines.h: (JSC::JSCell::visitChildrenImpl): (JSC::JSCell::visitOutputConstraintsImpl): (JSC::JSCell::visitChildren): Deleted. (JSC::JSCell::visitOutputConstraints): Deleted. * runtime/JSFinalizationRegistry.cpp: (JSC::JSFinalizationRegistry::visitChildrenImpl): (JSC::JSFinalizationRegistry::visitChildren): Deleted. * runtime/JSFinalizationRegistry.h: * runtime/JSFunction.cpp: (JSC::JSFunction::visitChildrenImpl): (JSC::JSFunction::visitChildren): Deleted. * runtime/JSFunction.h: * runtime/JSGenerator.cpp: (JSC::JSGenerator::visitChildrenImpl): (JSC::JSGenerator::visitChildren): Deleted. * runtime/JSGenerator.h: * runtime/JSGenericTypedArrayView.h: * runtime/JSGenericTypedArrayViewInlines.h: (JSC::JSGenericTypedArrayView<Adaptor>::visitChildrenImpl): (JSC::JSGenericTypedArrayView<Adaptor>::visitChildren): Deleted. * runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::visitChildrenImpl): (JSC::JSGlobalObject::visitChildren): Deleted. * runtime/JSGlobalObject.h: * runtime/JSImmutableButterfly.cpp: (JSC::JSImmutableButterfly::visitChildrenImpl): (JSC::JSImmutableButterfly::visitChildren): Deleted. * runtime/JSImmutableButterfly.h: * runtime/JSInternalFieldObjectImpl.h: * runtime/JSInternalFieldObjectImplInlines.h: (JSC::JSInternalFieldObjectImpl<passedNumberOfInternalFields>::visitChildrenImpl): (JSC::JSInternalFieldObjectImpl<passedNumberOfInternalFields>::visitChildren): Deleted. * runtime/JSLexicalEnvironment.cpp: (JSC::JSLexicalEnvironment::visitChildrenImpl): (JSC::JSLexicalEnvironment::visitChildren): Deleted. * runtime/JSLexicalEnvironment.h: * runtime/JSMapIterator.cpp: (JSC::JSMapIterator::visitChildrenImpl): (JSC::JSMapIterator::visitChildren): Deleted. * runtime/JSMapIterator.h: * runtime/JSModuleEnvironment.cpp: (JSC::JSModuleEnvironment::visitChildrenImpl): (JSC::JSModuleEnvironment::visitChildren): Deleted. * runtime/JSModuleEnvironment.h: * runtime/JSModuleNamespaceObject.cpp: (JSC::JSModuleNamespaceObject::visitChildrenImpl): (JSC::JSModuleNamespaceObject::visitChildren): Deleted. * runtime/JSModuleNamespaceObject.h: * runtime/JSModuleRecord.cpp: (JSC::JSModuleRecord::visitChildrenImpl): (JSC::JSModuleRecord::visitChildren): Deleted. * runtime/JSModuleRecord.h: * runtime/JSNativeStdFunction.cpp: (JSC::JSNativeStdFunction::visitChildrenImpl): (JSC::JSNativeStdFunction::visitChildren): Deleted. * runtime/JSNativeStdFunction.h: * runtime/JSObject.cpp: (JSC::JSObject::markAuxiliaryAndVisitOutOfLineProperties): (JSC::JSObject::visitButterfly): (JSC::JSObject::visitButterflyImpl): (JSC::JSObject::visitChildrenImpl): (JSC::JSFinalObject::visitChildrenImpl): (JSC::JSObject::visitChildren): Deleted. (JSC::JSFinalObject::visitChildren): Deleted. * runtime/JSObject.h: * runtime/JSPromise.cpp: (JSC::JSPromise::visitChildrenImpl): (JSC::JSPromise::visitChildren): Deleted. * runtime/JSPromise.h: * runtime/JSPropertyNameEnumerator.cpp: (JSC::JSPropertyNameEnumerator::visitChildrenImpl): (JSC::JSPropertyNameEnumerator::visitChildren): Deleted. * runtime/JSPropertyNameEnumerator.h: * runtime/JSProxy.cpp: (JSC::JSProxy::visitChildrenImpl): (JSC::JSProxy::visitChildren): Deleted. * runtime/JSProxy.h: * runtime/JSScope.cpp: (JSC::JSScope::visitChildrenImpl): (JSC::JSScope::visitChildren): Deleted. * runtime/JSScope.h: * runtime/JSSegmentedVariableObject.cpp: (JSC::JSSegmentedVariableObject::visitChildrenImpl): (JSC::JSSegmentedVariableObject::visitChildren): Deleted. * runtime/JSSegmentedVariableObject.h: * runtime/JSSetIterator.cpp: (JSC::JSSetIterator::visitChildrenImpl): (JSC::JSSetIterator::visitChildren): Deleted. * runtime/JSSetIterator.h: * runtime/JSString.cpp: (JSC::JSString::visitChildrenImpl): (JSC::JSString::visitChildren): Deleted. * runtime/JSString.h: * runtime/JSStringIterator.cpp: (JSC::JSStringIterator::visitChildrenImpl): (JSC::JSStringIterator::visitChildren): Deleted. * runtime/JSStringIterator.h: * runtime/JSSymbolTableObject.cpp: (JSC::JSSymbolTableObject::visitChildrenImpl): (JSC::JSSymbolTableObject::visitChildren): Deleted. * runtime/JSSymbolTableObject.h: * runtime/JSWeakObjectRef.cpp: (JSC::JSWeakObjectRef::visitChildrenImpl): (JSC::JSWeakObjectRef::visitChildren): Deleted. * runtime/JSWeakObjectRef.h: * runtime/JSWithScope.cpp: (JSC::JSWithScope::visitChildrenImpl): (JSC::JSWithScope::visitChildren): Deleted. * runtime/JSWithScope.h: * runtime/JSWrapperObject.cpp: (JSC::JSWrapperObject::visitChildrenImpl): (JSC::JSWrapperObject::visitChildren): Deleted. * runtime/JSWrapperObject.h: * runtime/LazyClassStructure.cpp: (JSC::LazyClassStructure::visit): * runtime/LazyClassStructure.h: * runtime/LazyProperty.h: * runtime/LazyPropertyInlines.h: (JSC::ElementType>::visit): * runtime/ModuleProgramExecutable.cpp: (JSC::ModuleProgramExecutable::visitChildrenImpl): (JSC::ModuleProgramExecutable::visitChildren): Deleted. * runtime/ModuleProgramExecutable.h: * runtime/Options.cpp: (JSC::Options::recomputeDependentOptions): * runtime/OptionsList.h: * runtime/ProgramExecutable.cpp: (JSC::ProgramExecutable::visitChildrenImpl): (JSC::ProgramExecutable::visitChildren): Deleted. * runtime/ProgramExecutable.h: * runtime/PropertyMapHashTable.h: * runtime/PropertyTable.cpp: (JSC::PropertyTable::visitChildrenImpl): (JSC::PropertyTable::visitChildren): Deleted. * runtime/ProxyObject.cpp: (JSC::ProxyObject::visitChildrenImpl): (JSC::ProxyObject::visitChildren): Deleted. * runtime/ProxyObject.h: * runtime/ProxyRevoke.cpp: (JSC::ProxyRevoke::visitChildrenImpl): (JSC::ProxyRevoke::visitChildren): Deleted. * runtime/ProxyRevoke.h: * runtime/RegExpCachedResult.cpp: (JSC::RegExpCachedResult::visitAggregateImpl): (JSC::RegExpCachedResult::visitAggregate): Deleted. * runtime/RegExpCachedResult.h: * runtime/RegExpGlobalData.cpp: (JSC::RegExpGlobalData::visitAggregateImpl): (JSC::RegExpGlobalData::visitAggregate): Deleted. * runtime/RegExpGlobalData.h: * runtime/RegExpObject.cpp: (JSC::RegExpObject::visitChildrenImpl): (JSC::RegExpObject::visitChildren): Deleted. * runtime/RegExpObject.h: * runtime/SamplingProfiler.cpp: (JSC::SamplingProfiler::visit): * runtime/SamplingProfiler.h: * runtime/ScopedArguments.cpp: (JSC::ScopedArguments::visitChildrenImpl): (JSC::ScopedArguments::visitChildren): Deleted. * runtime/ScopedArguments.h: * runtime/SimpleTypedArrayController.cpp: (JSC::SimpleTypedArrayController::JSArrayBufferOwner::isReachableFromOpaqueRoots): * runtime/SimpleTypedArrayController.h: * runtime/SmallStrings.cpp: (JSC::SmallStrings::visitStrongReferences): * runtime/SmallStrings.h: * runtime/SparseArrayValueMap.cpp: (JSC::SparseArrayValueMap::visitChildrenImpl): (JSC::SparseArrayValueMap::visitChildren): Deleted. * runtime/SparseArrayValueMap.h: * runtime/StackFrame.cpp: (JSC::StackFrame::visitChildren): Deleted. * runtime/StackFrame.h: (JSC::StackFrame::visitChildren): * runtime/Structure.cpp: (JSC::Structure::visitChildrenImpl): (JSC::Structure::isCheapDuringGC): (JSC::Structure::markIfCheap): (JSC::Structure::visitChildren): Deleted. * runtime/Structure.h: * runtime/StructureChain.cpp: (JSC::StructureChain::visitChildrenImpl): (JSC::StructureChain::visitChildren): Deleted. * runtime/StructureChain.h: * runtime/StructureRareData.cpp: (JSC::StructureRareData::visitChildrenImpl): (JSC::StructureRareData::visitChildren): Deleted. * runtime/StructureRareData.h: * runtime/SymbolTable.cpp: (JSC::SymbolTable::visitChildrenImpl): (JSC::SymbolTable::visitChildren): Deleted. * runtime/SymbolTable.h: * runtime/TypeProfilerLog.cpp: (JSC::TypeProfilerLog::visit): * runtime/TypeProfilerLog.h: * runtime/VM.h: (JSC::VM::isAnalyzingHeap const): (JSC::VM::activeHeapAnalyzer const): (JSC::VM::setActiveHeapAnalyzer): * runtime/WeakMapImpl.cpp: (JSC::WeakMapImpl<WeakMapBucket>::visitChildrenImpl): (JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKey>>::visitOutputConstraints): (JSC::WeakMapImpl<BucketType>::visitOutputConstraints): (JSC::WeakMapImpl<WeakMapBucket>::visitChildren): Deleted. (JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKeyValue>>::visitOutputConstraints): Deleted. * runtime/WeakMapImpl.h: (JSC::WeakMapBucket::visitAggregate): * tools/JSDollarVM.cpp: (JSC::JSDollarVM::visitChildrenImpl): (JSC::JSDollarVM::visitChildren): Deleted. * tools/JSDollarVM.h: * wasm/WasmGlobal.cpp: (JSC::Wasm::Global::visitAggregateImpl): (JSC::Wasm::Global::visitAggregate): Deleted. * wasm/WasmGlobal.h: * wasm/WasmTable.cpp: (JSC::Wasm::Table::visitAggregateImpl): (JSC::Wasm::Table::visitAggregate): Deleted. * wasm/WasmTable.h: * wasm/js/JSToWasmICCallee.cpp: (JSC::JSToWasmICCallee::visitChildrenImpl): (JSC::JSToWasmICCallee::visitChildren): Deleted. * wasm/js/JSToWasmICCallee.h: * wasm/js/JSWebAssemblyCodeBlock.cpp: (JSC::JSWebAssemblyCodeBlock::visitChildrenImpl): (JSC::JSWebAssemblyCodeBlock::visitChildren): Deleted. * wasm/js/JSWebAssemblyCodeBlock.h: * wasm/js/JSWebAssemblyGlobal.cpp: (JSC::JSWebAssemblyGlobal::visitChildrenImpl): (JSC::JSWebAssemblyGlobal::visitChildren): Deleted. * wasm/js/JSWebAssemblyGlobal.h: * wasm/js/JSWebAssemblyInstance.cpp: (JSC::JSWebAssemblyInstance::visitChildrenImpl): (JSC::JSWebAssemblyInstance::visitChildren): Deleted. * wasm/js/JSWebAssemblyInstance.h: * wasm/js/JSWebAssemblyMemory.cpp: (JSC::JSWebAssemblyMemory::visitChildrenImpl): (JSC::JSWebAssemblyMemory::visitChildren): Deleted. * wasm/js/JSWebAssemblyMemory.h: * wasm/js/JSWebAssemblyModule.cpp: (JSC::JSWebAssemblyModule::visitChildrenImpl): (JSC::JSWebAssemblyModule::visitChildren): Deleted. * wasm/js/JSWebAssemblyModule.h: * wasm/js/JSWebAssemblyTable.cpp: (JSC::JSWebAssemblyTable::visitChildrenImpl): (JSC::JSWebAssemblyTable::visitChildren): Deleted. * wasm/js/JSWebAssemblyTable.h: * wasm/js/WebAssemblyFunction.cpp: (JSC::WebAssemblyFunction::visitChildrenImpl): (JSC::WebAssemblyFunction::visitChildren): Deleted. * wasm/js/WebAssemblyFunction.h: * wasm/js/WebAssemblyFunctionBase.cpp: (JSC::WebAssemblyFunctionBase::visitChildrenImpl): (JSC::WebAssemblyFunctionBase::visitChildren): Deleted. * wasm/js/WebAssemblyFunctionBase.h: * wasm/js/WebAssemblyModuleRecord.cpp: (JSC::WebAssemblyModuleRecord::visitChildrenImpl): (JSC::WebAssemblyModuleRecord::visitChildren): Deleted. * wasm/js/WebAssemblyModuleRecord.h: * wasm/js/WebAssemblyWrapperFunction.cpp: (JSC::WebAssemblyWrapperFunction::visitChildrenImpl): (JSC::WebAssemblyWrapperFunction::visitChildren): Deleted. * wasm/js/WebAssemblyWrapperFunction.h: Source/WebCore: 1. Added support for the GC verifier. 2. Also removed NodeFilterCondition::visitAggregate() because it is not used. 3. Rebased bindings test results. * Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::visitReferencedIndexes const): * Modules/indexeddb/IDBObjectStore.h: * Modules/indexeddb/IDBTransaction.cpp: (WebCore::IDBTransaction::visitReferencedObjectStores const): * Modules/indexeddb/IDBTransaction.h: * Modules/webaudio/AudioBuffer.cpp: (WebCore::AudioBuffer::visitChannelWrappers): * Modules/webaudio/AudioBuffer.h: * bindings/js/DOMGCOutputConstraint.cpp: (WebCore::DOMGCOutputConstraint::executeImplImpl): (WebCore::DOMGCOutputConstraint::executeImpl): * bindings/js/DOMGCOutputConstraint.h: * bindings/js/JSAbortControllerCustom.cpp: (WebCore::JSAbortController::visitAdditionalChildren): * bindings/js/JSAbortSignalCustom.cpp: (WebCore::JSAbortSignalOwner::isReachableFromOpaqueRoots): * bindings/js/JSAttrCustom.cpp: (WebCore::JSAttr::visitAdditionalChildren): * bindings/js/JSAudioBufferCustom.cpp: (WebCore::JSAudioBuffer::visitAdditionalChildren): * bindings/js/JSAudioTrackCustom.cpp: (WebCore::JSAudioTrack::visitAdditionalChildren): * bindings/js/JSAudioTrackListCustom.cpp: (WebCore::JSAudioTrackList::visitAdditionalChildren): * bindings/js/JSAudioWorkletProcessorCustom.cpp: (WebCore::JSAudioWorkletProcessor::visitAdditionalChildren): * bindings/js/JSCSSRuleCustom.cpp: (WebCore::JSCSSRule::visitAdditionalChildren): * bindings/js/JSCSSRuleListCustom.cpp: (WebCore::JSCSSRuleListOwner::isReachableFromOpaqueRoots): * bindings/js/JSCSSStyleDeclarationCustom.cpp: (WebCore::JSCSSStyleDeclaration::visitAdditionalChildren): * bindings/js/JSCallbackData.cpp: (WebCore::JSCallbackDataWeak::visitJSFunction): (WebCore::JSCallbackDataWeak::WeakOwner::isReachableFromOpaqueRoots): * bindings/js/JSCallbackData.h: * bindings/js/JSCanvasRenderingContext2DCustom.cpp: (WebCore::JSCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots): (WebCore::JSCanvasRenderingContext2D::visitAdditionalChildren): * bindings/js/JSCustomEventCustom.cpp: (WebCore::JSCustomEvent::visitAdditionalChildren): * bindings/js/JSDOMBuiltinConstructorBase.cpp: (WebCore::JSDOMBuiltinConstructorBase::visitChildrenImpl): (WebCore::JSDOMBuiltinConstructorBase::visitChildren): Deleted. * bindings/js/JSDOMBuiltinConstructorBase.h: * bindings/js/JSDOMGlobalObject.cpp: (WebCore::JSDOMGlobalObject::visitChildrenImpl): (WebCore::JSDOMGlobalObject::visitChildren): Deleted. * bindings/js/JSDOMGlobalObject.h: * bindings/js/JSDOMGuardedObject.h: * bindings/js/JSDOMQuadCustom.cpp: (WebCore::JSDOMQuad::visitAdditionalChildren): * bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::visitAdditionalChildren): * bindings/js/JSDeprecatedCSSOMValueCustom.cpp: (WebCore::JSDeprecatedCSSOMValueOwner::isReachableFromOpaqueRoots): * bindings/js/JSDocumentCustom.cpp: (WebCore::JSDocument::visitAdditionalChildren): * bindings/js/JSErrorEventCustom.cpp: (WebCore::JSErrorEvent::visitAdditionalChildren): * bindings/js/JSEventListener.cpp: (WebCore::JSEventListener::visitJSFunctionImpl): (WebCore::JSEventListener::visitJSFunction): * bindings/js/JSEventListener.h: * bindings/js/JSEventTargetCustom.cpp: (WebCore::JSEventTarget::visitAdditionalChildren): * bindings/js/JSFetchEventCustom.cpp: (WebCore::JSFetchEvent::visitAdditionalChildren): * bindings/js/JSHTMLCanvasElementCustom.cpp: (WebCore::JSHTMLCanvasElement::visitAdditionalChildren): * bindings/js/JSHTMLTemplateElementCustom.cpp: (WebCore::JSHTMLTemplateElement::visitAdditionalChildren): * bindings/js/JSHistoryCustom.cpp: (WebCore::JSHistory::visitAdditionalChildren): * bindings/js/JSIDBCursorCustom.cpp: (WebCore::JSIDBCursor::visitAdditionalChildren): * bindings/js/JSIDBCursorWithValueCustom.cpp: (WebCore::JSIDBCursorWithValue::visitAdditionalChildren): * bindings/js/JSIDBIndexCustom.cpp: (WebCore::JSIDBIndex::visitAdditionalChildren): * bindings/js/JSIDBObjectStoreCustom.cpp: (WebCore::JSIDBObjectStore::visitAdditionalChildren): * bindings/js/JSIDBRequestCustom.cpp: (WebCore::JSIDBRequest::visitAdditionalChildren): * bindings/js/JSIDBTransactionCustom.cpp: (WebCore::JSIDBTransaction::visitAdditionalChildren): * bindings/js/JSIntersectionObserverCustom.cpp: (WebCore::JSIntersectionObserver::visitAdditionalChildren): * bindings/js/JSIntersectionObserverEntryCustom.cpp: (WebCore::JSIntersectionObserverEntry::visitAdditionalChildren): * bindings/js/JSMessageChannelCustom.cpp: (WebCore::JSMessageChannel::visitAdditionalChildren): * bindings/js/JSMessageEventCustom.cpp: (WebCore::JSMessageEvent::visitAdditionalChildren): * bindings/js/JSMessagePortCustom.cpp: (WebCore::JSMessagePort::visitAdditionalChildren): * bindings/js/JSMutationObserverCustom.cpp: (WebCore::JSMutationObserver::visitAdditionalChildren): (WebCore::JSMutationObserverOwner::isReachableFromOpaqueRoots): * bindings/js/JSMutationRecordCustom.cpp: (WebCore::JSMutationRecord::visitAdditionalChildren): * bindings/js/JSNavigatorCustom.cpp: (WebCore::JSNavigator::visitAdditionalChildren): * bindings/js/JSNodeCustom.cpp: (WebCore::isReachableFromDOM): (WebCore::JSNodeOwner::isReachableFromOpaqueRoots): (WebCore::JSNode::visitAdditionalChildren): * bindings/js/JSNodeIteratorCustom.cpp: (WebCore::JSNodeIterator::visitAdditionalChildren): * bindings/js/JSNodeListCustom.cpp: (WebCore::JSNodeListOwner::isReachableFromOpaqueRoots): * bindings/js/JSOffscreenCanvasRenderingContext2DCustom.cpp: (WebCore::JSOffscreenCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots): (WebCore::JSOffscreenCanvasRenderingContext2D::visitAdditionalChildren): * bindings/js/JSPaintRenderingContext2DCustom.cpp: (WebCore::JSPaintRenderingContext2DOwner::isReachableFromOpaqueRoots): (WebCore::JSPaintRenderingContext2D::visitAdditionalChildren): * bindings/js/JSPaintWorkletGlobalScopeCustom.cpp: (WebCore::JSPaintWorkletGlobalScope::visitAdditionalChildren): * bindings/js/JSPaymentMethodChangeEventCustom.cpp: (WebCore::JSPaymentMethodChangeEvent::visitAdditionalChildren): * bindings/js/JSPaymentResponseCustom.cpp: (WebCore::JSPaymentResponse::visitAdditionalChildren): * bindings/js/JSPerformanceObserverCustom.cpp: (WebCore::JSPerformanceObserver::visitAdditionalChildren): (WebCore::JSPerformanceObserverOwner::isReachableFromOpaqueRoots): * bindings/js/JSPopStateEventCustom.cpp: (WebCore::JSPopStateEvent::visitAdditionalChildren): * bindings/js/JSPromiseRejectionEventCustom.cpp: (WebCore::JSPromiseRejectionEvent::visitAdditionalChildren): * bindings/js/JSResizeObserverCustom.cpp: (WebCore::JSResizeObserver::visitAdditionalChildren): * bindings/js/JSResizeObserverEntryCustom.cpp: (WebCore::JSResizeObserverEntry::visitAdditionalChildren): * bindings/js/JSSVGViewSpecCustom.cpp: (WebCore::JSSVGViewSpec::visitAdditionalChildren): * bindings/js/JSServiceWorkerGlobalScopeCustom.cpp: (WebCore::JSServiceWorkerGlobalScope::visitAdditionalChildren): * bindings/js/JSStaticRangeCustom.cpp: (WebCore::JSStaticRange::visitAdditionalChildren): * bindings/js/JSStyleSheetCustom.cpp: (WebCore::JSStyleSheet::visitAdditionalChildren): * bindings/js/JSTextTrackCueCustom.cpp: (WebCore::JSTextTrackCueOwner::isReachableFromOpaqueRoots): (WebCore::JSTextTrackCue::visitAdditionalChildren): * bindings/js/JSTextTrackCustom.cpp: (WebCore::JSTextTrack::visitAdditionalChildren): * bindings/js/JSTextTrackListCustom.cpp: (WebCore::JSTextTrackList::visitAdditionalChildren): * bindings/js/JSTreeWalkerCustom.cpp: (WebCore::JSTreeWalker::visitAdditionalChildren): * bindings/js/JSUndoItemCustom.cpp: (WebCore::JSUndoItem::visitAdditionalChildren): (WebCore::JSUndoItemOwner::isReachableFromOpaqueRoots): * bindings/js/JSValueInWrappedObject.h: (WebCore::JSValueInWrappedObject::visit const): * bindings/js/JSVideoTrackCustom.cpp: (WebCore::JSVideoTrack::visitAdditionalChildren): * bindings/js/JSVideoTrackListCustom.cpp: (WebCore::JSVideoTrackList::visitAdditionalChildren): * bindings/js/JSWebGL2RenderingContextCustom.cpp: (WebCore::JSWebGL2RenderingContext::visitAdditionalChildren): * bindings/js/JSWebGLRenderingContextCustom.cpp: (WebCore::JSWebGLRenderingContext::visitAdditionalChildren): * bindings/js/JSWorkerGlobalScopeBase.cpp: (WebCore::JSWorkerGlobalScopeBase::visitChildrenImpl): (WebCore::JSWorkerGlobalScopeBase::visitChildren): Deleted. * bindings/js/JSWorkerGlobalScopeBase.h: * bindings/js/JSWorkerGlobalScopeCustom.cpp: (WebCore::JSWorkerGlobalScope::visitAdditionalChildren): * bindings/js/JSWorkerNavigatorCustom.cpp: (WebCore::JSWorkerNavigator::visitAdditionalChildren): * bindings/js/JSWorkletGlobalScopeBase.cpp: (WebCore::JSWorkletGlobalScopeBase::visitChildrenImpl): (WebCore::JSWorkletGlobalScopeBase::visitChildren): Deleted. * bindings/js/JSWorkletGlobalScopeBase.h: * bindings/js/JSXMLHttpRequestCustom.cpp: (WebCore::JSXMLHttpRequest::visitAdditionalChildren): * bindings/js/JSXPathResultCustom.cpp: (WebCore::JSXPathResult::visitAdditionalChildren): * bindings/js/WebCoreTypedArrayController.cpp: (WebCore::WebCoreTypedArrayController::JSArrayBufferOwner::isReachableFromOpaqueRoots): * bindings/js/WebCoreTypedArrayController.h: * bindings/scripts/CodeGeneratorJS.pm: (GenerateHeader): (GenerateImplementation): (GenerateCallbackHeaderContent): (GenerateCallbackImplementationContent): (GenerateIterableDefinition): * bindings/scripts/test/JS/JSDOMWindow.cpp: (WebCore::JSDOMWindow::subspaceForImpl): * bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp: (WebCore::JSDedicatedWorkerGlobalScope::subspaceForImpl): * bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp: (WebCore::JSExposedToWorkerAndWindow::subspaceForImpl): (WebCore::JSExposedToWorkerAndWindowOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSExposedToWorkerAndWindow.h: * bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp: (WebCore::JSPaintWorkletGlobalScope::subspaceForImpl): * bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp: (WebCore::JSServiceWorkerGlobalScope::subspaceForImpl): * bindings/scripts/test/JS/JSTestCEReactions.cpp: (WebCore::JSTestCEReactions::subspaceForImpl): (WebCore::JSTestCEReactionsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestCEReactions.h: * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: (WebCore::JSTestCEReactionsStringifier::subspaceForImpl): (WebCore::JSTestCEReactionsStringifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestCEReactionsStringifier.h: * bindings/scripts/test/JS/JSTestCallTracer.cpp: (WebCore::JSTestCallTracer::subspaceForImpl): (WebCore::JSTestCallTracerOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestCallTracer.h: * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: (WebCore::JSTestClassWithJSBuiltinConstructor::subspaceForImpl): (WebCore::JSTestClassWithJSBuiltinConstructorOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h: * bindings/scripts/test/JS/JSTestConditionalIncludes.cpp: (WebCore::JSTestConditionalIncludes::subspaceForImpl): (WebCore::JSTestConditionalIncludesOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestConditionalIncludes.h: * bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp: (WebCore::JSTestConditionallyReadWrite::subspaceForImpl): (WebCore::JSTestConditionallyReadWriteOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestConditionallyReadWrite.h: * bindings/scripts/test/JS/JSTestDOMJIT.cpp: (WebCore::JSTestDOMJIT::subspaceForImpl): * bindings/scripts/test/JS/JSTestDefaultToJSON.cpp: (WebCore::JSTestDefaultToJSON::subspaceForImpl): (WebCore::JSTestDefaultToJSONOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestDefaultToJSON.h: * bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp: (WebCore::JSTestDefaultToJSONFilteredByExposed::subspaceForImpl): (WebCore::JSTestDefaultToJSONFilteredByExposedOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.h: * bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.cpp: (WebCore::JSTestDefaultToJSONIndirectInheritance::subspaceForImpl): * bindings/scripts/test/JS/JSTestDefaultToJSONInherit.cpp: (WebCore::JSTestDefaultToJSONInherit::subspaceForImpl): * bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.cpp: (WebCore::JSTestDefaultToJSONInheritFinal::subspaceForImpl): * bindings/scripts/test/JS/JSTestDomainSecurity.cpp: (WebCore::JSTestDomainSecurity::subspaceForImpl): (WebCore::JSTestDomainSecurityOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestDomainSecurity.h: * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: (WebCore::JSTestEnabledBySetting::subspaceForImpl): (WebCore::JSTestEnabledBySettingOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestEnabledBySetting.h: * bindings/scripts/test/JS/JSTestEnabledForContext.cpp: (WebCore::JSTestEnabledForContext::subspaceForImpl): (WebCore::JSTestEnabledForContextOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestEnabledForContext.h: * bindings/scripts/test/JS/JSTestEventConstructor.cpp: (WebCore::JSTestEventConstructor::subspaceForImpl): * bindings/scripts/test/JS/JSTestEventTarget.cpp: (WebCore::JSTestEventTarget::subspaceForImpl): * bindings/scripts/test/JS/JSTestException.cpp: (WebCore::JSTestException::subspaceForImpl): (WebCore::JSTestExceptionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestException.h: * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: (WebCore::JSTestGenerateIsReachable::subspaceForImpl): (WebCore::JSTestGenerateIsReachableOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestGenerateIsReachable.h: * bindings/scripts/test/JS/JSTestGlobalObject.cpp: (WebCore::JSTestGlobalObject::subspaceForImpl): (WebCore::JSTestGlobalObjectOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestGlobalObject.h: * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: (WebCore::JSTestIndexedSetterNoIdentifier::subspaceForImpl): (WebCore::JSTestIndexedSetterNoIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h: * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: (WebCore::JSTestIndexedSetterThrowingException::subspaceForImpl): (WebCore::JSTestIndexedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h: * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: (WebCore::JSTestIndexedSetterWithIdentifier::subspaceForImpl): (WebCore::JSTestIndexedSetterWithIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h: * bindings/scripts/test/JS/JSTestInterface.cpp: (WebCore::jsTestInterfacePrototypeFunction_entriesCaller): (WebCore::JSTestInterface::subspaceForImpl): (WebCore::JSTestInterfaceOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestInterface.h: * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp: (WebCore::JSTestInterfaceLeadingUnderscore::subspaceForImpl): (WebCore::JSTestInterfaceLeadingUnderscoreOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h: * bindings/scripts/test/JS/JSTestIterable.cpp: (WebCore::jsTestIterablePrototypeFunction_entriesCaller): (WebCore::JSTestIterable::subspaceForImpl): (WebCore::JSTestIterableOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestIterable.h: * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp: (WebCore::JSTestJSBuiltinConstructor::subspaceForImpl): * bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp: (WebCore::JSTestLegacyFactoryFunction::subspaceForImpl): (WebCore::JSTestLegacyFactoryFunctionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestLegacyFactoryFunction.h: * bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp: (WebCore::JSTestLegacyNoInterfaceObject::subspaceForImpl): (WebCore::JSTestLegacyNoInterfaceObjectOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.h: * bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp: (WebCore::JSTestLegacyOverrideBuiltIns::subspaceForImpl): (WebCore::JSTestLegacyOverrideBuiltInsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.h: * bindings/scripts/test/JS/JSTestMapLike.cpp: (WebCore::JSTestMapLike::subspaceForImpl): (WebCore::JSTestMapLikeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestMapLike.h: * bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp: (WebCore::JSTestMapLikeWithOverriddenOperations::subspaceForImpl): (WebCore::JSTestMapLikeWithOverriddenOperationsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.h: * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl): (WebCore::JSTestNamedAndIndexedSetterNoIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h: * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: (WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl): (WebCore::JSTestNamedAndIndexedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h: * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl): (WebCore::JSTestNamedAndIndexedSetterWithIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h: * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp: (WebCore::JSTestNamedDeleterNoIdentifier::subspaceForImpl): (WebCore::JSTestNamedDeleterNoIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h: * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp: (WebCore::JSTestNamedDeleterThrowingException::subspaceForImpl): (WebCore::JSTestNamedDeleterThrowingExceptionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h: * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: (WebCore::JSTestNamedDeleterWithIdentifier::subspaceForImpl): (WebCore::JSTestNamedDeleterWithIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h: * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp: (WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceForImpl): (WebCore::JSTestNamedDeleterWithIndexedGetterOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h: * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: (WebCore::JSTestNamedGetterCallWith::subspaceForImpl): (WebCore::JSTestNamedGetterCallWithOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedGetterCallWith.h: * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp: (WebCore::JSTestNamedGetterNoIdentifier::subspaceForImpl): (WebCore::JSTestNamedGetterNoIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h: * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: (WebCore::JSTestNamedGetterWithIdentifier::subspaceForImpl): (WebCore::JSTestNamedGetterWithIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h: * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: (WebCore::JSTestNamedSetterNoIdentifier::subspaceForImpl): (WebCore::JSTestNamedSetterNoIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h: * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: (WebCore::JSTestNamedSetterThrowingException::subspaceForImpl): (WebCore::JSTestNamedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h: * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: (WebCore::JSTestNamedSetterWithIdentifier::subspaceForImpl): (WebCore::JSTestNamedSetterWithIdentifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h: * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: (WebCore::JSTestNamedSetterWithIndexedGetter::subspaceForImpl): (WebCore::JSTestNamedSetterWithIndexedGetterOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h: * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl): (WebCore::JSTestNamedSetterWithIndexedGetterAndSetterOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h: * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp: (WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceForImpl): (WebCore::JSTestNamedSetterWithLegacyOverrideBuiltInsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.h: * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp: (WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceForImpl): (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.h: * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp: (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceForImpl): (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltInsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.h: * bindings/scripts/test/JS/JSTestNode.cpp: (WebCore::jsTestNodePrototypeFunction_entriesCaller): (WebCore::JSTestNode::subspaceForImpl): * bindings/scripts/test/JS/JSTestObj.cpp: (WebCore::JSTestObj::subspaceForImpl): (WebCore::JSTestObj::visitChildrenImpl): (WebCore::JSTestObjOwner::isReachableFromOpaqueRoots): (WebCore::JSTestObj::visitChildren): Deleted. * bindings/scripts/test/JS/JSTestObj.h: * bindings/scripts/test/JS/JSTestOperationConditional.cpp: (WebCore::JSTestOperationConditional::subspaceForImpl): (WebCore::JSTestOperationConditionalOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestOperationConditional.h: * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: (WebCore::JSTestOverloadedConstructors::subspaceForImpl): (WebCore::JSTestOverloadedConstructorsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestOverloadedConstructors.h: * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: (WebCore::JSTestOverloadedConstructorsWithSequence::subspaceForImpl): (WebCore::JSTestOverloadedConstructorsWithSequenceOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h: * bindings/scripts/test/JS/JSTestPluginInterface.cpp: (WebCore::JSTestPluginInterface::subspaceForImpl): (WebCore::JSTestPluginInterfaceOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestPluginInterface.h: * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: (WebCore::JSTestPromiseRejectionEvent::subspaceForImpl): * bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp: (WebCore::JSTestReadOnlyMapLike::subspaceForImpl): (WebCore::JSTestReadOnlyMapLikeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestReadOnlyMapLike.h: * bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp: (WebCore::JSTestReadOnlySetLike::subspaceForImpl): (WebCore::JSTestReadOnlySetLikeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestReadOnlySetLike.h: * bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp: (WebCore::JSTestReportExtraMemoryCost::subspaceForImpl): (WebCore::JSTestReportExtraMemoryCost::visitChildrenImpl): (WebCore::JSTestReportExtraMemoryCostOwner::isReachableFromOpaqueRoots): (WebCore::JSTestReportExtraMemoryCost::visitChildren): Deleted. * bindings/scripts/test/JS/JSTestReportExtraMemoryCost.h: * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: (WebCore::JSTestSerializedScriptValueInterface::subspaceForImpl): (WebCore::JSTestSerializedScriptValueInterface::visitChildrenImpl): (WebCore::JSTestSerializedScriptValueInterfaceOwner::isReachableFromOpaqueRoots): (WebCore::JSTestSerializedScriptValueInterface::visitChildren): Deleted. * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h: * bindings/scripts/test/JS/JSTestSetLike.cpp: (WebCore::JSTestSetLike::subspaceForImpl): (WebCore::JSTestSetLikeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestSetLike.h: * bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp: (WebCore::JSTestSetLikeWithOverriddenOperations::subspaceForImpl): (WebCore::JSTestSetLikeWithOverriddenOperationsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.h: * bindings/scripts/test/JS/JSTestStringifier.cpp: (WebCore::JSTestStringifier::subspaceForImpl): (WebCore::JSTestStringifierOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifier.h: * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: (WebCore::JSTestStringifierAnonymousOperation::subspaceForImpl): (WebCore::JSTestStringifierAnonymousOperationOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h: * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: (WebCore::JSTestStringifierNamedOperation::subspaceForImpl): (WebCore::JSTestStringifierNamedOperationOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierNamedOperation.h: * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: (WebCore::JSTestStringifierOperationImplementedAs::subspaceForImpl): (WebCore::JSTestStringifierOperationImplementedAsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h: * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: (WebCore::JSTestStringifierOperationNamedToString::subspaceForImpl): (WebCore::JSTestStringifierOperationNamedToStringOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h: * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: (WebCore::JSTestStringifierReadOnlyAttribute::subspaceForImpl): (WebCore::JSTestStringifierReadOnlyAttributeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h: * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: (WebCore::JSTestStringifierReadWriteAttribute::subspaceForImpl): (WebCore::JSTestStringifierReadWriteAttributeOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h: * bindings/scripts/test/JS/JSTestTypedefs.cpp: (WebCore::JSTestTypedefs::subspaceForImpl): (WebCore::JSTestTypedefsOwner::isReachableFromOpaqueRoots): * bindings/scripts/test/JS/JSTestTypedefs.h: * bindings/scripts/test/JS/JSWorkerGlobalScope.cpp: (WebCore::JSWorkerGlobalScope::subspaceForImpl): * bindings/scripts/test/JS/JSWorkletGlobalScope.cpp: (WebCore::JSWorkletGlobalScope::subspaceForImpl): * dom/ActiveDOMCallback.h: (WebCore::ActiveDOMCallback::visitJSFunction): * dom/EventListener.h: (WebCore::EventListener::visitJSFunction): * dom/EventTarget.cpp: (WebCore::EventTarget::visitJSEventListeners): * dom/EventTarget.h: * dom/MutationRecord.cpp: * dom/MutationRecord.h: * dom/NodeFilterCondition.h: (WebCore::NodeFilterCondition::visitAggregate): Deleted. * dom/StaticRange.cpp: (WebCore::StaticRange::visitNodesConcurrently const): * dom/StaticRange.h: * html/canvas/WebGL2RenderingContext.cpp: (WebCore::WebGL2RenderingContext::addMembersToOpaqueRoots): * html/canvas/WebGL2RenderingContext.h: * html/canvas/WebGLFramebuffer.cpp: (WebCore::WebGLFramebuffer::addMembersToOpaqueRoots): * html/canvas/WebGLFramebuffer.h: * html/canvas/WebGLProgram.cpp: (WebCore::WebGLProgram::addMembersToOpaqueRoots): * html/canvas/WebGLProgram.h: * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::addMembersToOpaqueRoots): * html/canvas/WebGLRenderingContextBase.h: * html/canvas/WebGLTransformFeedback.cpp: (WebCore::WebGLTransformFeedback::addMembersToOpaqueRoots): * html/canvas/WebGLTransformFeedback.h: * html/canvas/WebGLVertexArrayObjectBase.cpp: (WebCore::WebGLVertexArrayObjectBase::addMembersToOpaqueRoots): * html/canvas/WebGLVertexArrayObjectBase.h: Canonical link: https://commits.webkit.org/234335@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273138 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-02-19 15:51:15 +00:00
template<typename Visitor> void markRequiredObjectsInternalImpl(Visitor&);
void markRequiredObjectsInternal(AbstractSlotVisitor&) final;
[clang-tidy] Run modernize-use-override over JSC, then ensure as much as possible is final https://bugs.webkit.org/show_bug.cgi?id=211743 Reviewed by Saam Barati. * API/JSScriptRef.cpp: * b3/B3ArgumentRegValue.h: * b3/B3AtomicValue.h: * b3/B3CCallValue.h: * b3/B3CheckSpecial.h: * b3/B3CheckValue.h: * b3/B3Const32Value.h: * b3/B3Const64Value.h: * b3/B3ConstDoubleValue.h: * b3/B3ConstFloatValue.h: * b3/B3DataSection.h: * b3/B3ExtractValue.h: * b3/B3FenceValue.h: * b3/B3MemoryValue.h: * b3/B3PatchpointSpecial.h: * b3/B3PatchpointValue.h: * b3/B3SlotBaseValue.h: * b3/B3StackmapSpecial.h: * b3/B3StackmapValue.h: * b3/B3SwitchValue.h: * b3/B3UpsilonValue.h: * b3/B3VariableValue.h: * b3/B3WasmAddressValue.h: * b3/B3WasmBoundsCheckValue.h: * b3/air/AirCCallSpecial.h: * b3/air/AirPrintSpecial.h: * bytecode/BytecodeDumper.h: * bytecode/GetterSetterAccessCase.h: * bytecode/InstanceOfAccessCase.h: * bytecode/IntrinsicGetterAccessCase.h: * bytecode/ModuleNamespaceAccessCase.h: * bytecode/ProxyableAccessCase.h: * bytecode/Watchpoint.h: * dfg/DFGFailedFinalizer.h: * dfg/DFGGraph.h: * dfg/DFGJITCode.h: * dfg/DFGJITFinalizer.h: * dfg/DFGToFTLDeferredCompilationCallback.h: * dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h: * ftl/FTLForOSREntryJITCode.h: * ftl/FTLJITCode.h: * ftl/FTLJITFinalizer.h: * heap/CompleteSubspace.h: * heap/FastMallocAlignedMemoryAllocator.h: * heap/GigacageAlignedMemoryAllocator.h: * heap/HeapSnapshotBuilder.h: * heap/IsoAlignedMemoryAllocator.h: * heap/IsoSubspace.h: * heap/IsoSubspacePerVM.cpp: * heap/IsoSubspacePerVM.h: * heap/MarkStackMergingConstraint.h: * heap/SimpleMarkingConstraint.h: * heap/SpaceTimeMutatorScheduler.h: * heap/StochasticSpaceTimeMutatorScheduler.h: * heap/SynchronousStopTheWorldMutatorScheduler.h: * jit/GCAwareJITStubRoutine.h: * jit/JITCode.h: * jit/JITThunks.h: * jit/JITToDFGDeferredCompilationCallback.h: * jit/PolymorphicCallStubRoutine.h: * jsc.cpp: * parser/Lexer.cpp: Address warning. * runtime/JSDestructibleObjectHeapCellType.h: * runtime/SimpleTypedArrayController.h: * runtime/Structure.h: * runtime/WeakGCMap.h: * wasm/WasmEntryPlan.h: Canonical link: https://commits.webkit.org/224681@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@261567 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-05-12 18:48:02 +00:00
void markRequiredObjectsInternal(SlotVisitor&) final;
[WTF] Introduce FixedVector and use it for FixedOperands https://bugs.webkit.org/show_bug.cgi?id=224171 Reviewed by Mark Lam. Source/JavaScriptCore: Define FixedOperands<T> which uses FixedVector for its storage. We use FixedOperands in FTL::OSRExitDescriptor. We also replace RefCountedArray<T> with FixedVector<T> if they are not requiring RefCountedArray<T>'s ref-counting semantics. * bytecode/BytecodeGeneratorification.cpp: (JSC::BytecodeGeneratorification::run): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::finishCreation): (JSC::CodeBlock::setConstantRegisters): (JSC::CodeBlock::setNumParameters): (JSC::CodeBlock::setRareCaseProfiles): (JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler): * bytecode/CodeBlock.h: * bytecode/Operands.h: (JSC::Operands::Operands): * bytecode/OperandsInlines.h: (JSC::U>::dumpInContext const): (JSC::U>::dump const): (JSC::Operands<T>::dumpInContext const): Deleted. (JSC::Operands<T>::dump const): Deleted. * bytecode/PolyProtoAccessChain.h: * bytecode/PolymorphicAccess.cpp: (JSC::PolymorphicAccess::regenerate): * bytecode/PolymorphicAccess.h: * bytecode/UnlinkedCodeBlock.cpp: (JSC::UnlinkedCodeBlock::dumpExpressionRangeInfo): (JSC::UnlinkedCodeBlock::expressionRangeForBytecodeIndex const): * bytecode/UnlinkedCodeBlock.h: (JSC::UnlinkedCodeBlock::expressionInfo): (JSC::UnlinkedCodeBlock::identifiers const): (JSC::UnlinkedCodeBlock::constantRegisters): (JSC::UnlinkedCodeBlock::constantsSourceCodeRepresentation): (JSC::UnlinkedCodeBlock::constantIdentifierSets): (JSC::UnlinkedCodeBlock::opProfileControlFlowBytecodeOffsets const): * bytecode/UnlinkedFunctionExecutable.h: * bytecompiler/BytecodeGenerator.cpp: (JSC::prepareJumpTableForSwitch): * dfg/DFGJITCode.h: * dfg/DFGPlan.h: (JSC::DFG::Plan::tierUpInLoopHierarchy): * ftl/FTLOSRExit.h: * jit/GCAwareJITStubRoutine.h: * jit/JIT.cpp: (JSC::JIT::privateCompileSlowCases): * jit/PolymorphicCallStubRoutine.h: * llint/LLIntOffsetsExtractor.cpp: * llint/LowLevelInterpreter.asm: * parser/Parser.cpp: (JSC::Parser<LexerType>::parseInner): (JSC::Parser<LexerType>::parseClassFieldInitializerSourceElements): * parser/Parser.h: (JSC::Parser<LexerType>::parse): (JSC::parse): * runtime/CachedTypes.cpp: (JSC::CachedVector::encode): (JSC::CachedVector::decode const): * wasm/js/JSWebAssemblyInstance.h: Source/WTF: This FixedVector<T> is a wrapper around RefCountedArray<T>, but this offers Vector-like copy / move semantics, so that we can use this FixedVector<T> as a drop-in-replacement for fixed-sized Vector fields. The purpose of that is saving memory by removing unnecessary storage (FixedVector is fixed-sized allocated) and putting size into the allocated memory. * WTF.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/FastBitVector.h: (WTF::FastBitVector::FastBitVector): * wtf/FixedVector.h: Added. (WTF::FixedVector::FixedVector): (WTF::FixedVector::operator=): (WTF::FixedVector::size const): (WTF::FixedVector::isEmpty const): (WTF::FixedVector::byteSize const): (WTF::FixedVector::data): (WTF::FixedVector::begin): (WTF::FixedVector::end): (WTF::FixedVector::data const): (WTF::FixedVector::begin const): (WTF::FixedVector::end const): (WTF::FixedVector::rbegin): (WTF::FixedVector::rend): (WTF::FixedVector::rbegin const): (WTF::FixedVector::rend const): (WTF::FixedVector::at): (WTF::FixedVector::at const): (WTF::FixedVector::operator[]): (WTF::FixedVector::operator[] const): (WTF::FixedVector::first): (WTF::FixedVector::first const): (WTF::FixedVector::last): (WTF::FixedVector::last const): (WTF::FixedVector::fill): (WTF::FixedVector::operator== const): (WTF::FixedVector::swap): (WTF::swap): * wtf/RefCountedArray.h: (WTF::RefCountedArray::RefCountedArray): (WTF::RefCountedArray::fill): (WTF::RefCountedArray::swap): Tools: * TestWebKitAPI/CMakeLists.txt: * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WTF/FixedVector.cpp: Added. (TestWebKitAPI::TEST): (TestWebKitAPI::DestructorObserver::DestructorObserver): (TestWebKitAPI::DestructorObserver::~DestructorObserver): (TestWebKitAPI::DestructorObserver::operator=): Canonical link: https://commits.webkit.org/236198@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@275542 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-04-06 19:47:47 +00:00
FixedVector<WriteBarrier<JSCell>> m_variants;
Fix std::make_unique / new[] using system malloc https://bugs.webkit.org/show_bug.cgi?id=182975 Reviewed by JF Bastien. Source/JavaScriptCore: Use Vector, FAST_ALLOCATED, or UniqueArray instead. * API/JSStringRefCF.cpp: (JSStringCreateWithCFString): * bytecode/BytecodeKills.h: * bytecode/BytecodeLivenessAnalysis.cpp: (JSC::BytecodeLivenessAnalysis::computeKills): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::dumpDisassembly): * jit/PolymorphicCallStubRoutine.cpp: (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): * jit/PolymorphicCallStubRoutine.h: * jit/Repatch.cpp: (JSC::linkPolymorphicCall): * jsc.cpp: (currentWorkingDirectory): * llint/LLIntData.cpp: (JSC::LLInt::initialize): * llint/LLIntData.h: * runtime/ArgList.h: * runtime/StructureChain.h: * runtime/StructureIDTable.cpp: (JSC::StructureIDTable::StructureIDTable): (JSC::StructureIDTable::resize): * runtime/StructureIDTable.h: * runtime/TypeProfilerLog.cpp: (JSC::TypeProfilerLog::TypeProfilerLog): (JSC::TypeProfilerLog::initializeLog): Deleted. * runtime/TypeProfilerLog.h: (JSC::TypeProfilerLog::TypeProfilerLog): Deleted. * runtime/VM.cpp: (JSC::VM::~VM): (JSC::VM::acquireRegExpPatternContexBuffer): * runtime/VM.h: * testRegExp.cpp: (runFromFiles): * tools/HeapVerifier.cpp: (JSC::HeapVerifier::HeapVerifier): * tools/HeapVerifier.h: Source/WebCore: Use Vector, FAST_ALLOCATED, or UniqueArray instead. * Modules/webaudio/AudioBufferSourceNode.cpp: (WebCore::AudioBufferSourceNode::setBuffer): * Modules/webaudio/AudioBufferSourceNode.h: * css/StyleRule.h: * cssjit/CompiledSelector.h: * html/HTMLFrameSetElement.h: * html/canvas/WebGLRenderingContextBase.cpp: (WebCore::WebGLRenderingContextBase::copyTexSubImage2D): (WebCore::WebGLRenderingContextBase::simulateVertexAttrib0): (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::LRUImageBufferCache): (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::imageBuffer): (WebCore::WebGLRenderingContextBase::LRUImageBufferCache::bubbleToFront): * html/canvas/WebGLRenderingContextBase.h: * platform/Length.cpp: (WebCore::newCoordsArray): (WebCore::newLengthArray): (): Deleted. * platform/Length.h: * platform/audio/DynamicsCompressor.cpp: (WebCore::DynamicsCompressor::setNumberOfChannels): * platform/audio/DynamicsCompressor.h: * platform/audio/FFTFrame.h: * platform/audio/gstreamer/FFTFrameGStreamer.cpp: (WebCore::FFTFrame::FFTFrame): * platform/graphics/FormatConverter.h: (WebCore::FormatConverter::FormatConverter): * platform/graphics/GraphicsContext3D.cpp: (WebCore::GraphicsContext3D::texImage2DResourceSafe): * platform/graphics/GraphicsContext3D.h: * platform/graphics/ca/win/CACFLayerTreeHost.cpp: (WebCore::getDirtyRects): * platform/graphics/cairo/CairoUtilities.cpp: (WebCore::flipImageSurfaceVertically): * platform/graphics/cg/GraphicsContext3DCG.cpp: (WebCore::GraphicsContext3D::ImageExtractor::extractImage): * platform/graphics/gpu/Texture.cpp: (WebCore::Texture::updateSubRect): * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: (WebCore::GraphicsContext3D::paintRenderingResultsToCanvas): (WebCore::GraphicsContext3D::compileShader): (WebCore::GraphicsContext3D::getActiveAttribImpl): (WebCore::GraphicsContext3D::getActiveUniformImpl): (WebCore::GraphicsContext3D::getProgramInfoLog): (WebCore::GraphicsContext3D::getShaderInfoLog): * platform/graphics/texmap/TextureMapperShaderProgram.cpp: (WebCore::getShaderLog): (WebCore::getProgramLog): * platform/graphics/win/ImageBufferDataDirect2D.cpp: (WebCore::ImageBufferData::putData): * platform/image-decoders/png/PNGImageDecoder.cpp: (WebCore::PNGImageReader::PNGImageReader): (WebCore::PNGImageReader::close): (WebCore::PNGImageReader::interlaceBuffer const): (WebCore::PNGImageReader::createInterlaceBuffer): * platform/image-decoders/webp/WEBPImageDecoder.cpp: (WebCore::WEBPImageDecoder::decodeFrame): * platform/network/curl/SocketStreamHandleImpl.h: (WebCore::SocketStreamHandleImpl::SocketData::SocketData): * platform/network/curl/SocketStreamHandleImplCurl.cpp: (WebCore::createCopy): (WebCore::SocketStreamHandleImpl::readData): (): Deleted. * platform/network/soup/SocketStreamHandleImpl.h: * platform/network/soup/SocketStreamHandleImplSoup.cpp: (WebCore::SocketStreamHandleImpl::connected): * platform/win/LoggingWin.cpp: (WebCore::logLevelString): Source/WebCore/PAL: Use Vector instead. * pal/win/LoggingWin.cpp: (PAL::logLevelString): Source/WebKit: Use Vector instead. * NetworkProcess/win/SystemProxyWin.cpp: (WindowsSystemProxy::getSystemHttpProxy): * Platform/IPC/unix/ConnectionUnix.cpp: (IPC::Connection::processMessage): (IPC::Connection::sendOutputMessage): * Platform/win/LoggingWin.cpp: (WebKit::logLevelString): * Shared/SandboxExtension.h: * Shared/mac/SandboxExtensionMac.mm: (WebKit::SandboxExtension::HandleArray::allocate): (WebKit::SandboxExtension::HandleArray::operator[]): (WebKit::SandboxExtension::HandleArray::operator[] const): (WebKit::SandboxExtension::HandleArray::size const): (WebKit::SandboxExtension::HandleArray::encode const): Source/WebKitLegacy/win: Use Vector instead. * MarshallingHelpers.cpp: (MarshallingHelpers::safeArrayToStringArray): (MarshallingHelpers::safeArrayToIntArray): * Plugins/PluginPackageWin.cpp: (WebCore::PluginPackage::fetchInfo): * WebPreferences.cpp: (WebPreferences::copyWebKitPreferencesToCFPreferences): * WebView.cpp: (WebView::onMenuCommand): Source/WTF: If we use `make_unique<char[]>(num)` or `new char[num]`, allocation is done by the system malloc instead of bmalloc. This patch fixes this issue by following three changes. 1. Introduce UniqueArray<T>. It allocates memory from FastMalloc. While C++ array with `new` need to hold the size to call destructor correctly, our UniqueArray only supports type T which does not have a non trivial destructor. It reduces the allocation size since we do not need to track the size of the array compared to standard `new T[]`. This is basically usable if we want to have raw array which pointer won't be changed even if the container is moved. In addition, we also extend UniqueArray<T> for types which have non trivial destructors. 2. Use Vector<T> instead. 3. Annotate allocated types with MAKE_FAST_ALLOCATED. Since it introduces new[] and delete[] operators, make_unique<T[]>(num) will allocate memory from FastMalloc. * WTF.xcodeproj/project.pbxproj: * wtf/Assertions.cpp: * wtf/CMakeLists.txt: * wtf/FastMalloc.h: (WTF::FastFree::operator() const): (WTF::FastFree<T::operator() const): * wtf/MallocPtr.h: (WTF::MallocPtr::operator bool const): * wtf/StackShot.h: (WTF::StackShot::StackShot): (WTF::StackShot::operator=): * wtf/SystemFree.h: (WTF::SystemFree<T::operator() const): * wtf/UniqueArray.h: Copied from Source/WebKit/Platform/win/LoggingWin.cpp. (WTF::makeUniqueArray): * wtf/Vector.h: (WTF::VectorTypeOperations::forceInitialize): Tools: * TestWebKitAPI/CMakeLists.txt: * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * TestWebKitAPI/Tests/WTF/UniqueArray.cpp: Copied from Source/WebKit/Platform/win/LoggingWin.cpp. (TestWebKitAPI::NonTrivialDestructor::NonTrivialDestructor): (TestWebKitAPI::NonTrivialDestructor::~NonTrivialDestructor): (TestWebKitAPI::NonTrivialDestructor::setLog): (TestWebKitAPI::TEST): Canonical link: https://commits.webkit.org/199024@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@229309 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-03-06 07:25:14 +00:00
UniqueArray<uint32_t> m_fastCounts;
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging https://bugs.webkit.org/show_bug.cgi?id=140660 Reviewed by Geoffrey Garen. When we first implemented polymorphic call inlining, we did the profiling based on a call edge log. The idea was to store each call edge (a tuple of call site and callee) into a global log that was processed lazily. Processing the log would give precise counts of call edges, and could be used to drive well-informed inlining decisions - polymorphic or not. This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win nonetheless. Experience with this code shows three things. First, the call edge profiler is buggy and complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of overhead for latency code that we care deeply about. Third, it's not at all clear that having call edge counts for every possible callee is any better than just having call edge counts for the limited number of callees that an inline cache would catch. So, this patch removes the call edge profiler and replaces it with a polymorphic call inline cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an out-of-line stub that cases on the previously known callees. If that misses again, then we rewrite that stub to include the new callee. We do this up to some number of callees. If we hit the limit then we switch to using a plain virtual call. Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler caused. Might be a SunSpider speed-up (below 1%), depending on hardware. Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107. * CMakeLists.txt: * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: * JavaScriptCore.xcodeproj/project.pbxproj: * bytecode/CallEdge.h: (JSC::CallEdge::count): (JSC::CallEdge::CallEdge): * bytecode/CallEdgeProfile.cpp: Removed. * bytecode/CallEdgeProfile.h: Removed. * bytecode/CallEdgeProfileInlines.h: Removed. * bytecode/CallLinkInfo.cpp: (JSC::CallLinkInfo::unlink): (JSC::CallLinkInfo::visitWeak): * bytecode/CallLinkInfo.h: * bytecode/CallLinkStatus.cpp: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::computeFor): (JSC::CallLinkStatus::computeFromCallLinkInfo): (JSC::CallLinkStatus::isClosureCall): (JSC::CallLinkStatus::makeClosureCall): (JSC::CallLinkStatus::dump): (JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted. * bytecode/CallLinkStatus.h: (JSC::CallLinkStatus::CallLinkStatus): (JSC::CallLinkStatus::isSet): (JSC::CallLinkStatus::variants): (JSC::CallLinkStatus::size): (JSC::CallLinkStatus::at): (JSC::CallLinkStatus::operator[]): (JSC::CallLinkStatus::canOptimize): (JSC::CallLinkStatus::edges): Deleted. (JSC::CallLinkStatus::canTrustCounts): Deleted. * bytecode/CallVariant.cpp: (JSC::variantListWithVariant): (JSC::despecifiedVariantList): * bytecode/CallVariant.h: * bytecode/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::linkIncomingPolymorphicCall): (JSC::CodeBlock::unlinkIncomingCalls): (JSC::CodeBlock::noticeIncomingCall): * bytecode/CodeBlock.h: (JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted. * dfg/DFGAbstractInterpreterInlines.h: (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::addCallWithoutSettingResult): (JSC::DFG::ByteCodeParser::handleCall): (JSC::DFG::ByteCodeParser::handleInlining): * dfg/DFGClobberize.h: (JSC::DFG::clobberize): * dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::foldConstants): * dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC): * dfg/DFGDriver.cpp: (JSC::DFG::compileImpl): * dfg/DFGFixupPhase.cpp: (JSC::DFG::FixupPhase::fixupNode): * dfg/DFGNode.h: (JSC::DFG::Node::hasHeapPrediction): * dfg/DFGNodeType.h: * dfg/DFGOperations.cpp: * dfg/DFGPredictionPropagationPhase.cpp: (JSC::DFG::PredictionPropagationPhase::propagate): * dfg/DFGSafeToExecute.h: (JSC::DFG::safeToExecute): * dfg/DFGSpeculativeJIT32_64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGSpeculativeJIT64.cpp: (JSC::DFG::SpeculativeJIT::emitCall): (JSC::DFG::SpeculativeJIT::compile): * dfg/DFGTierUpCheckInjectionPhase.cpp: (JSC::DFG::TierUpCheckInjectionPhase::run): (JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted. * ftl/FTLCapabilities.cpp: (JSC::FTL::canCompile): * heap/Heap.cpp: (JSC::Heap::collect): * jit/BinarySwitch.h: * jit/ClosureCallStubRoutine.cpp: Removed. * jit/ClosureCallStubRoutine.h: Removed. * jit/JITCall.cpp: (JSC::JIT::compileOpCall): * jit/JITCall32_64.cpp: (JSC::JIT::compileOpCall): * jit/JITOperations.cpp: * jit/JITOperations.h: (JSC::operationLinkPolymorphicCallFor): (JSC::operationLinkClosureCallFor): Deleted. * jit/JITStubRoutine.h: * jit/JITWriteBarrier.h: * jit/PolymorphicCallStubRoutine.cpp: Added. (JSC::PolymorphicCallNode::~PolymorphicCallNode): (JSC::PolymorphicCallNode::unlink): (JSC::PolymorphicCallCase::dump): (JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine): (JSC::PolymorphicCallStubRoutine::variants): (JSC::PolymorphicCallStubRoutine::edges): (JSC::PolymorphicCallStubRoutine::visitWeak): (JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal): * jit/PolymorphicCallStubRoutine.h: Added. (JSC::PolymorphicCallNode::PolymorphicCallNode): (JSC::PolymorphicCallCase::PolymorphicCallCase): (JSC::PolymorphicCallCase::variant): (JSC::PolymorphicCallCase::codeBlock): * jit/Repatch.cpp: (JSC::linkSlowFor): (JSC::linkFor): (JSC::revertCall): (JSC::unlinkFor): (JSC::linkVirtualFor): (JSC::linkPolymorphicCall): (JSC::linkClosureCall): Deleted. * jit/Repatch.h: * jit/ThunkGenerators.cpp: (JSC::linkPolymorphicCallForThunkGenerator): (JSC::linkPolymorphicCallThunkGenerator): (JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator): (JSC::linkClosureCallForThunkGenerator): Deleted. (JSC::linkClosureCallThunkGenerator): Deleted. (JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted. * jit/ThunkGenerators.h: (JSC::linkPolymorphicCallThunkGeneratorFor): (JSC::linkClosureCallThunkGeneratorFor): Deleted. * llint/LLIntSlowPaths.cpp: (JSC::LLInt::jitCompileAndSetHeuristics): * runtime/Options.h: * runtime/VM.cpp: (JSC::VM::prepareToDiscardCode): (JSC::VM::ensureCallEdgeLog): Deleted. * runtime/VM.h: Canonical link: https://commits.webkit.org/159155@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179478 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2015-02-02 18:38:08 +00:00
Bag<PolymorphicCallNode> m_callNodes;
};
} // namespace JSC
#endif // ENABLE(JIT)