Ignore:
Timestamp:
May 27, 2011, 11:30:08 AM (14 years ago)
Author:
[email protected]
Message:

2011-05-27 Oliver Hunt <[email protected]>

Reviewed by Geoffrey Garen.

Try to release unused executable memory when the FixedVMPool allocator is under pressure
https://bugs.webkit.org/show_bug.cgi?id=61651

Rather than crashing when full the FixedVMPool allocator now returns a null
allocation. We replace the code that used to CRASH() on null allocations
with logic that asks the provided globalData to release any executable memory
that it can. Currently this just means throwing away all regexp code, but
in future we'll try to be more aggressive.

  • assembler/ARMAssembler.cpp: (JSC::ARMAssembler::executableCopy):
  • assembler/ARMAssembler.h:
  • assembler/AssemblerBuffer.h: (JSC::AssemblerBuffer::executableCopy):
  • assembler/AssemblerBufferWithConstantPool.h:
  • assembler/LinkBuffer.h: (JSC::LinkBuffer::LinkBuffer): (JSC::LinkBuffer::linkCode):
  • assembler/MIPSAssembler.h: (JSC::MIPSAssembler::executableCopy):
  • assembler/SH4Assembler.h: (JSC::SH4Assembler::executableCopy):
  • assembler/X86Assembler.h: (JSC::X86Assembler::executableCopy): (JSC::X86Assembler::X86InstructionFormatter::executableCopy):
  • dfg/DFGJITCompiler.cpp: (JSC::DFG::JITCompiler::compileFunction):
  • jit/ExecutableAllocator.h: (JSC::ExecutablePool::create): (JSC::ExecutablePool::alloc): (JSC::ExecutableAllocator::ExecutableAllocator): (JSC::ExecutableAllocator::poolForSize): (JSC::ExecutablePool::ExecutablePool): (JSC::ExecutablePool::poolAllocate):
  • jit/ExecutableAllocatorFixedVMPool.cpp: (JSC::FixedVMPoolAllocator::alloc):
  • jit/JIT.cpp: (JSC::JIT::privateCompile):
  • jit/JITOpcodes.cpp: (JSC::JIT::privateCompileCTIMachineTrampolines):
  • jit/JITOpcodes32_64.cpp: (JSC::JIT::privateCompileCTIMachineTrampolines): (JSC::JIT::privateCompileCTINativeCall):
  • jit/JITPropertyAccess.cpp: (JSC::JIT::stringGetByValStubGenerator): (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::stringGetByValStubGenerator): (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain):
  • jit/SpecializedThunkJIT.h: (JSC::SpecializedThunkJIT::finalize):
  • jit/ThunkGenerators.cpp: (JSC::charCodeAtThunkGenerator): (JSC::charAtThunkGenerator): (JSC::fromCharCodeThunkGenerator): (JSC::sqrtThunkGenerator): (JSC::powThunkGenerator):
  • runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): (JSC::JSGlobalData::releaseExecutableMemory): (JSC::releaseExecutableMemory):
  • runtime/JSGlobalData.h:
  • runtime/RegExpCache.cpp: (JSC::RegExpCache::invalidateCode):
  • runtime/RegExpCache.h:
  • yarr/YarrJIT.cpp: (JSC::Yarr::YarrGenerator::compile):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/assembler/SH4Assembler.h

    r86699 r87527  
    14751475    }
    14761476
    1477     void* executableCopy(ExecutablePool* allocator)
    1478     {
    1479         return m_buffer.executableCopy(allocator);
     1477    void* executableCopy(JSGlobalData& globalData, ExecutablePool* allocator)
     1478    {
     1479        return m_buffer.executableCopy(globalData, allocator);
    14801480    }
    14811481
Note: See TracChangeset for help on using the changeset viewer.