Index: src/spaces.cc |
diff --git a/src/spaces.cc b/src/spaces.cc |
index d3168cd52fbb1328d6a717e6ad146fa66302263b..22233d9b3c2d011aa1ff8d59740cd97228689dc1 100644 |
--- a/src/spaces.cc |
+++ b/src/spaces.cc |
@@ -158,12 +158,12 @@ int CodeRange::CompareFreeBlockAddress(const FreeBlock* left, |
} |
-void CodeRange::GetNextAllocationBlock(size_t requested) { |
+bool CodeRange::GetNextAllocationBlock(size_t requested) { |
for (current_allocation_block_index_++; |
current_allocation_block_index_ < allocation_list_.length(); |
current_allocation_block_index_++) { |
if (requested <= allocation_list_[current_allocation_block_index_].size) { |
- return; // Found a large enough allocation block. |
+ return true; // Found a large enough allocation block. |
} |
} |
@@ -190,12 +190,12 @@ void CodeRange::GetNextAllocationBlock(size_t requested) { |
current_allocation_block_index_ < allocation_list_.length(); |
current_allocation_block_index_++) { |
if (requested <= allocation_list_[current_allocation_block_index_].size) { |
- return; // Found a large enough allocation block. |
+ return true; // Found a large enough allocation block. |
} |
} |
// Code range is full or too fragmented. |
- V8::FatalProcessOutOfMemory("CodeRange::GetNextAllocationBlock"); |
+ return false; |
} |
@@ -205,9 +205,8 @@ Address CodeRange::AllocateRawMemory(const size_t requested_size, |
ASSERT(commit_size <= requested_size); |
ASSERT(current_allocation_block_index_ < allocation_list_.length()); |
if (requested_size > allocation_list_[current_allocation_block_index_].size) { |
- // Find an allocation block large enough. This function call may |
- // call V8::FatalProcessOutOfMemory if it cannot find a large enough block. |
- GetNextAllocationBlock(requested_size); |
+ // Find an allocation block large enough. |
+ if (!GetNextAllocationBlock(requested_size)) return NULL; |
} |
// Commit the requested memory at the start of the current allocation block. |
size_t aligned_requested = RoundUp(requested_size, MemoryChunk::kAlignment); |
@@ -230,7 +229,8 @@ Address CodeRange::AllocateRawMemory(const size_t requested_size, |
allocation_list_[current_allocation_block_index_].start += *allocated; |
allocation_list_[current_allocation_block_index_].size -= *allocated; |
if (*allocated == current.size) { |
- GetNextAllocationBlock(0); // This block is used up, get the next one. |
+ // This block is used up, get the next one. |
+ if (!GetNextAllocationBlock(0)) return NULL; |
} |
return current.start; |
} |