Skip to content
  • oliver@apple.com's avatar
    fourthTier: ASSERT that commonly used not-thread-safe methods in the runtime... · 634a76a2
    oliver@apple.com authored
    fourthTier: ASSERT that commonly used not-thread-safe methods in the runtime are not being called during compilation
    https://bugs.webkit.org/show_bug.cgi?id=115297
    
    Source/JavaScriptCore:
    
    Reviewed by Geoffrey Garen.
    
    Put in assertions that we're not doing bad things in compilation threads. Also
    factored compilation into compile+link so that even though we don't yet have
    concurrent compilation, we can be explicit about which parts of DFG work are
    meant to be concurrent, and which aren't.
    
    Also fix a handful of bugs found by these assertions.
    
    * JavaScriptCore.xcodeproj/project.pbxproj:
    * bytecode/ResolveGlobalStatus.cpp:
    (JSC::computeForStructure):
    * bytecode/Watchpoint.cpp:
    (JSC::WatchpointSet::add):
    (JSC::InlineWatchpointSet::inflateSlow):
    * dfg/DFGDriver.cpp:
    (JSC::DFG::compile):
    * dfg/DFGJITCompiler.cpp:
    (JSC::DFG::JITCompiler::~JITCompiler):
    (DFG):
    (JSC::DFG::JITCompiler::compileBody):
    (JSC::DFG::JITCompiler::compile):
    (JSC::DFG::JITCompiler::link):
    (JSC::DFG::JITCompiler::compileFunction):
    (JSC::DFG::JITCompiler::linkFunction):
    * dfg/DFGJITCompiler.h:
    (JITCompiler):
    * ftl/FTLCompile.cpp:
    (JSC::FTL::compile):
    * ftl/FTLCompile.h:
    (FTL):
    * ftl/FTLLink.cpp: Added.
    (FTL):
    (JSC::FTL::compileEntry):
    (JSC::FTL::link):
    * ftl/FTLLink.h: Added.
    (FTL):
    * ftl/FTLState.cpp:
    (JSC::FTL::State::State):
    * ftl/FTLState.h:
    (FTL):
    (State):
    * runtime/Structure.cpp:
    (JSC::Structure::get):
    (JSC::Structure::prototypeChainMayInterceptStoreTo):
    * runtime/Structure.h:
    (JSC::Structure::materializePropertyMapIfNecessary):
    * runtime/StructureInlines.h:
    (JSC::Structure::get):
    
    Source/WTF:
    
    Reviewed by Geoffrey Garen.
    
    Taught WTF the notion of compilation threads. This allows all parts of our stack
    to assert that we're not being called from a JSC compilation thread. This is in
    WTF because it will probably end up being used in StringImpl and WTFString.
    
    * WTF.xcodeproj/project.pbxproj:
    * wtf/CompilationThread.cpp: Added.
    (WTF):
    (WTF::initializeCompilationThreadsOnce):
    (WTF::initializeCompilationThreads):
    (WTF::isCompilationThread):
    (WTF::exchangeIsCompilationThread):
    * wtf/CompilationThread.h: Added.
    (WTF):
    (CompilationScope):
    (WTF::CompilationScope::CompilationScope):
    (WTF::CompilationScope::~CompilationScope):
    (WTF::CompilationScope::leaveEarly):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    634a76a2