Skip to content
  • msaboff@apple.com's avatar
    JSGlobalData ScratchBuffers Are Not Visited During Garbage Collection · 12830399
    msaboff@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=86553
    
    Reviewed by Gavin Barraclough.
    
    Scratch buffers can contain the only reference to live objects.
    Therefore visit scratch buffer contents as conservative roots.
    Changed the scratch buffers to be a struct with an "active"
    length and the actual buffer.  The users of the scratch
    buffer emit code where needed to set and clear the active
    length as appropriate.  During marking, the active count is
    used for conservative marking.
    
    * dfg/DFGAssemblyHelpers.h:
    (JSC::DFG::AssemblyHelpers::debugCall):
    * dfg/DFGOSRExitCompiler32_64.cpp:
    (JSC::DFG::OSRExitCompiler::compileExit):
    * dfg/DFGOSRExitCompiler64.cpp:
    (JSC::DFG::OSRExitCompiler::compileExit):
    * dfg/DFGOperations.cpp:
    * dfg/DFGOperations.h:
    * dfg/DFGSpeculativeJIT32_64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    * dfg/DFGSpeculativeJIT64.cpp:
    (JSC::DFG::SpeculativeJIT::compile):
    * dfg/DFGThunks.cpp:
    (JSC::DFG::osrExitGenerationThunkGenerator):
    * heap/Heap.cpp:
    (JSC::Heap::markRoots):
    * runtime/JSGlobalData.cpp:
    (JSC::JSGlobalData::gatherConservativeRoots):
    * runtime/JSGlobalData.h:
    (JSC::ScratchBuffer::ScratchBuffer):
    (ScratchBuffer):
    (JSC::ScratchBuffer::allocationSize):
    (JSC::ScratchBuffer::setActiveLength):
    (JSC::ScratchBuffer::activeLength):
    (JSC::ScratchBuffer::activeLengthPtr):
    (JSC::ScratchBuffer::dataBuffer):
    (JSGlobalData):
    (JSC::JSGlobalData::scratchBufferForSize):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@117729 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    12830399