Index: src/deoptimizer.cc |
diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc |
index a8de06ee5850f82949b63ba1146865aba7cd3536..147e52793907e0921f820ece43682a7cf9e60df4 100644 |
--- a/src/deoptimizer.cc |
+++ b/src/deoptimizer.cc |
@@ -2806,7 +2806,14 @@ void Deoptimizer::EnsureCodeForDeoptimizationEntry(Isolate* isolate, |
MemoryChunk* chunk = data->deopt_entry_code_[type]; |
CHECK(static_cast<int>(Deoptimizer::GetMaxDeoptTableSize()) >= |
desc.instr_size); |
- chunk->CommitArea(desc.instr_size); |
+ if (!chunk->CommitArea(desc.instr_size)) { |
+ isolate->heap()->CollectAllAvailableGarbage( |
+ "Allocation for deoptimizer failed"); |
+ if (!chunk->CommitArea(desc.instr_size)) { |
+ V8::FatalProcessOutOfMemory( |
Michael Starzinger
2015/04/16 15:32:23
I like that we are properly reporting the allocati
|
+ "Deoptimizer::EnsureCodeForDeoptimizationEntry"); |
+ } |
+ } |
CopyBytes(chunk->area_start(), desc.buffer, |
static_cast<size_t>(desc.instr_size)); |
CpuFeatures::FlushICache(chunk->area_start(), desc.instr_size); |