Ignore:
Timestamp:
Aug 15, 2013, 8:28:39 PM (12 years ago)
Author:
[email protected]
Message:

<https://webkit.org/b/119833> Concurrent compilation thread should not trigger WriteBarriers

Reviewed by Oliver Hunt.

The concurrent compilation thread should interact minimally with the Heap, including not
triggering WriteBarriers. This is a prerequisite for generational GC.

(JSC::CodeBlock::addOrFindConstant):
(JSC::CodeBlock::findConstant):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::addConstantLazily):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::getJSConstantForValue):
(JSC::DFG::ByteCodeParser::constantUndefined):
(JSC::DFG::ByteCodeParser::constantNull):
(JSC::DFG::ByteCodeParser::one):
(JSC::DFG::ByteCodeParser::constantNaN):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):

  • dfg/DFGCommonData.cpp:

(JSC::DFG::CommonData::notifyCompilingStructureTransition):

  • dfg/DFGCommonData.h:
  • dfg/DFGDesiredTransitions.cpp: Added.

(JSC::DFG::DesiredTransition::DesiredTransition):
(JSC::DFG::DesiredTransition::reallyAdd):
(JSC::DFG::DesiredTransitions::DesiredTransitions):
(JSC::DFG::DesiredTransitions::~DesiredTransitions):
(JSC::DFG::DesiredTransitions::addLazily):
(JSC::DFG::DesiredTransitions::reallyAdd):

  • dfg/DFGDesiredTransitions.h: Added.
  • dfg/DFGDesiredWeakReferences.cpp: Added.

(JSC::DFG::DesiredWeakReferences::DesiredWeakReferences):
(JSC::DFG::DesiredWeakReferences::~DesiredWeakReferences):
(JSC::DFG::DesiredWeakReferences::addLazily):
(JSC::DFG::DesiredWeakReferences::reallyAdd):

  • dfg/DFGDesiredWeakReferences.h: Added.
  • dfg/DFGDesiredWriteBarriers.cpp: Added.

(JSC::DFG::DesiredWriteBarrier::DesiredWriteBarrier):
(JSC::DFG::DesiredWriteBarrier::trigger):
(JSC::DFG::DesiredWriteBarriers::DesiredWriteBarriers):
(JSC::DFG::DesiredWriteBarriers::~DesiredWriteBarriers):
(JSC::DFG::DesiredWriteBarriers::addImpl):
(JSC::DFG::DesiredWriteBarriers::trigger):

  • dfg/DFGDesiredWriteBarriers.h: Added.

(JSC::DFG::DesiredWriteBarriers::add):
(JSC::DFG::initializeLazyWriteBarrier):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::truncateConstantToInt32):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::convertToConstant):

  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::addWeakReference):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::Plan):
(JSC::DFG::Plan::reallyAdd):

  • dfg/DFGPlan.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • runtime/WriteBarrier.h:

(JSC::WriteBarrierBase::set):
(JSC::WriteBarrier::WriteBarrier):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp

    r154120 r154162  
    24902490unsigned CodeBlock::addOrFindConstant(JSValue v)
    24912491{
     2492    unsigned result;
     2493    if (findConstant(v, result))
     2494        return result;
     2495    return addConstant(v);
     2496}
     2497
     2498bool CodeBlock::findConstant(JSValue v, unsigned& index)
     2499{
    24922500    unsigned numberOfConstants = numberOfConstantRegisters();
    24932501    for (unsigned i = 0; i < numberOfConstants; ++i) {
    2494         if (getConstant(FirstConstantRegisterIndex + i) == v)
    2495             return i;
    2496     }
    2497     return addConstant(v);
     2502        if (getConstant(FirstConstantRegisterIndex + i) == v) {
     2503            index = i;
     2504            return true;
     2505        }
     2506    }
     2507    index = numberOfConstants;
     2508    return false;
    24982509}
    24992510
Note: See TracChangeset for help on using the changeset viewer.