Skip to content
  • fpizlo@apple.com's avatar
    The JIT should not crash the entire process just because there is not · 0f25ee88
    fpizlo@apple.com authored
    enough executable memory, if the LLInt is enabled
    https://bugs.webkit.org/show_bug.cgi?id=79962
    <rdar://problem/10922215>
    
    Reviewed by Gavin Barraclough.
            
    Added the notion of JITCompilationEffort. If we're JIT'ing as a result of
    a tier-up, then we set it to JITCompilationCanFail. Otherwise it's
    JITCompilationMustSucceed. This preserves the old behavior of LLInt is
    disabled or if we're compiling something that can't be interpreted (like
    an OSR exit stub).
    
    * JavaScriptCore.xcodeproj/project.pbxproj:
    * assembler/ARMAssembler.cpp:
    (JSC::ARMAssembler::executableCopy):
    * assembler/ARMAssembler.h:
    (ARMAssembler):
    * assembler/AssemblerBuffer.h:
    (JSC::AssemblerBuffer::executableCopy):
    * assembler/LinkBuffer.h:
    (JSC::LinkBuffer::LinkBuffer):
    (JSC::LinkBuffer::~LinkBuffer):
    (LinkBuffer):
    (JSC::LinkBuffer::didFailToAllocate):
    (JSC::LinkBuffer::isValid):
    (JSC::LinkBuffer::linkCode):
    (JSC::LinkBuffer::performFinalization):
    * assembler/MIPSAssembler.h:
    (JSC::MIPSAssembler::executableCopy):
    * assembler/SH4Assembler.h:
    (JSC::SH4Assembler::executableCopy):
    * assembler/X86Assembler.h:
    (JSC::X86Assembler::executableCopy):
    (JSC::X86Assembler::X86InstructionFormatter::executableCopy):
    * bytecode/CodeBlock.cpp:
    (JSC::ProgramCodeBlock::jitCompileImpl):
    (JSC::EvalCodeBlock::jitCompileImpl):
    (JSC::FunctionCodeBlock::jitCompileImpl):
    * bytecode/CodeBlock.h:
    (JSC::CodeBlock::jitCompile):
    (CodeBlock):
    (ProgramCodeBlock):
    (EvalCodeBlock):
    (FunctionCodeBlock):
    * dfg/DFGDriver.cpp:
    (JSC::DFG::compile):
    * dfg/DFGJITCompiler.cpp:
    (JSC::DFG::JITCompiler::compile):
    (JSC::DFG::JITCompiler::compileFunction):
    * dfg/DFGJITCompiler.h:
    (JITCompiler):
    * jit/ExecutableAllocator.cpp:
    (JSC::DemandExecutableAllocator::allocateNewSpace):
    (JSC::ExecutableAllocator::allocate):
    * jit/ExecutableAllocator.h:
    (ExecutableAllocator):
    * jit/ExecutableAllocatorFixedVMPool.cpp:
    (JSC::ExecutableAllocator::allocate):
    * jit/JIT.cpp:
    (JSC::JIT::privateCompile):
    * jit/JIT.h:
    (JSC::JIT::compile):
    (JIT):
    * jit/JITCompilationEffort.h: Added.
    (JSC):
    * jit/JITDriver.h:
    (JSC::jitCompileIfAppropriate):
    (JSC::jitCompileFunctionIfAppropriate):
    * llint/LLIntSlowPaths.cpp:
    (LLInt):
    (JSC::LLInt::jitCompileAndSetHeuristics):
    (JSC::LLInt::entryOSR):
    (JSC::LLInt::LLINT_SLOW_PATH_DECL):
    * runtime/Executable.cpp:
    (JSC::EvalExecutable::jitCompile):
    (JSC::ProgramExecutable::jitCompile):
    (JSC::FunctionExecutable::jitCompileForCall):
    (JSC::FunctionExecutable::jitCompileForConstruct):
    * runtime/Executable.h:
    (EvalExecutable):
    (ProgramExecutable):
    (FunctionExecutable):
    (JSC::FunctionExecutable::jitCompileFor):
    * runtime/ExecutionHarness.h:
    (JSC::prepareForExecution):
    (JSC::prepareFunctionForExecution):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@109307 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    0f25ee88