-
fpizlo@apple.com authored
https://bugs.webkit.org/show_bug.cgi?id=90731 Reviewed by Gavin Barraclough. This gives the GC awareness of all JIT-generated stubs for inline caches. That means that if you want to delete a JIT-generated stub, you don't have to worry about whether or not it is currently running: if there is a chance that it might be, the GC will kindly defer deletion until non-running-ness is proved. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/Instruction.h: (JSC): (PolymorphicStubInfo): (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set): (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList): * bytecode/PolymorphicPutByIdList.cpp: (JSC::PutByIdAccess::fromStructureStubInfo): * bytecode/PolymorphicPutByIdList.h: (JSC::PutByIdAccess::transition): (JSC::PutByIdAccess::replace): (JSC::PutByIdAccess::stubRoutine): (PutByIdAccess): (JSC::PolymorphicPutByIdList::currentSlowPathTarget): * bytecode/StructureStubInfo.h: (JSC::StructureStubInfo::reset): * dfg/DFGRepatch.cpp: (JSC::DFG::generateProtoChainAccessStub): (JSC::DFG::tryCacheGetByID): (JSC::DFG::tryBuildGetByIDList): (JSC::DFG::tryBuildGetByIDProtoList): (JSC::DFG::emitPutReplaceStub): (JSC::DFG::emitPutTransitionStub): (JSC::DFG::tryCachePutByID): (JSC::DFG::tryBuildPutByIdList): * heap/ConservativeRoots.cpp: (JSC): (DummyMarkHook): (JSC::DummyMarkHook::mark): (JSC::ConservativeRoots::add): (CompositeMarkHook): (JSC::CompositeMarkHook::CompositeMarkHook): (JSC::CompositeMarkHook::mark): * heap/ConservativeRoots.h: (JSC): (ConservativeRoots): * heap/Heap.cpp: (JSC::Heap::markRoots): (JSC::Heap::deleteUnmarkedCompiledCode): * heap/Heap.h: (JSC): (Heap): * heap/JITStubRoutineSet.cpp: Added. (JSC): (JSC::JITStubRoutineSet::JITStubRoutineSet): (JSC::JITStubRoutineSet::~JITStubRoutineSet): (JSC::JITStubRoutineSet::add): (JSC::JITStubRoutineSet::clearMarks): (JSC::JITStubRoutineSet::markSlow): (JSC::JITStubRoutineSet::deleteUnmarkedJettisonedStubRoutines): (JSC::JITStubRoutineSet::traceMarkedStubRoutines): * heap/JITStubRoutineSet.h: Added. (JSC): (JITStubRoutineSet): (JSC::JITStubRoutineSet::mark): * heap/MachineStackMarker.h: (JSC): * interpreter/RegisterFile.cpp: (JSC::RegisterFile::gatherConservativeRoots): * interpreter/RegisterFile.h: (JSC): * jit/ExecutableAllocator.cpp: (JSC::DemandExecutableAllocator::DemandExecutableAllocator): * jit/ExecutableAllocator.h: (JSC): * jit/ExecutableAllocatorFixedVMPool.cpp: (JSC): (JSC::FixedVMPoolExecutableAllocator::FixedVMPoolExecutableAllocator): * jit/GCAwareJITStubRoutine.cpp: Added. (JSC): (JSC::GCAwareJITStubRoutine::GCAwareJITStubRoutine): (JSC::GCAwareJITStubRoutine::~GCAwareJITStubRoutine): (JSC::GCAwareJITStubRoutine::observeZeroRefCount): (JSC::GCAwareJITStubRoutine::deleteFromGC): (JSC::GCAwareJITStubRoutine::markRequiredObjectsInternal): (JSC::MarkingGCAwareJITStubRoutineWithOneObject::MarkingGCAwareJITStubRoutineWithOneObject): (JSC::MarkingGCAwareJITStubRoutineWithOneObject::~MarkingGCAwareJITStubRoutineWithOneObject): (JSC::MarkingGCAwareJITStubRoutineWithOneObject::markRequiredObjectsInternal): (JSC::createJITStubRoutine): * jit/GCAwareJITStubRoutine.h: Added. (JSC): (GCAwareJITStubRoutine): (JSC::GCAwareJITStubRoutine::markRequiredObjects): (MarkingGCAwareJITStubRoutineWithOneObject): * jit/JITPropertyAccess.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): * jit/JITPropertyAccess32_64.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): * jit/JITStubRoutine.cpp: Added. (JSC): (JSC::JITStubRoutine::~JITStubRoutine): (JSC::JITStubRoutine::observeZeroRefCount): * jit/JITStubRoutine.h: Added. (JSC): (JITStubRoutine): (JSC::JITStubRoutine::JITStubRoutine): (JSC::JITStubRoutine::createSelfManagedRoutine): (JSC::JITStubRoutine::code): (JSC::JITStubRoutine::asCodePtr): (JSC::JITStubRoutine::ref): (JSC::JITStubRoutine::deref): (JSC::JITStubRoutine::startAddress): (JSC::JITStubRoutine::endAddress): (JSC::JITStubRoutine::addressStep): (JSC::JITStubRoutine::canPerformRangeFilter): (JSC::JITStubRoutine::filteringStartAddress): (JSC::JITStubRoutine::filteringExtentSize): (JSC::JITStubRoutine::passesFilter): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): (JSC::getPolymorphicAccessStructureListSlot): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@122166 268f45cc-cd09-0410-ab3c-d52691b4dbfc
746b8c5b