| Index: src/spaces.cc
|
| diff --git a/src/spaces.cc b/src/spaces.cc
|
| index 7966a04728c6291e83142eeeda1acf2039c68c77..ab7f41e417f1ead116ac6fa15377a27486d00eb1 100644
|
| --- a/src/spaces.cc
|
| +++ b/src/spaces.cc
|
| @@ -322,9 +322,12 @@ void MemoryAllocator::FreeMemory(VirtualMemory* reservation,
|
| size_executable_ -= size;
|
| }
|
| // Code which is part of the code-range does not have its own VirtualMemory.
|
| - ASSERT(!isolate_->code_range()->contains(
|
| - static_cast<Address>(reservation->address())));
|
| - ASSERT(executable == NOT_EXECUTABLE || !isolate_->code_range()->exists());
|
| + ASSERT(isolate_->code_range() == NULL ||
|
| + !isolate_->code_range()->contains(
|
| + static_cast<Address>(reservation->address())));
|
| + ASSERT(executable == NOT_EXECUTABLE ||
|
| + isolate_->code_range() == NULL ||
|
| + !isolate_->code_range()->valid());
|
| reservation->Release();
|
| }
|
|
|
| @@ -342,11 +345,14 @@ void MemoryAllocator::FreeMemory(Address base,
|
| ASSERT(size_executable_ >= size);
|
| size_executable_ -= size;
|
| }
|
| - if (isolate_->code_range()->contains(static_cast<Address>(base))) {
|
| + if (isolate_->code_range() != NULL &&
|
| + isolate_->code_range()->contains(static_cast<Address>(base))) {
|
| ASSERT(executable == EXECUTABLE);
|
| isolate_->code_range()->FreeRawMemory(base, size);
|
| } else {
|
| - ASSERT(executable == NOT_EXECUTABLE || !isolate_->code_range()->exists());
|
| + ASSERT(executable == NOT_EXECUTABLE ||
|
| + isolate_->code_range() == NULL ||
|
| + !isolate_->code_range()->valid());
|
| bool result = VirtualMemory::ReleaseRegion(base, size);
|
| USE(result);
|
| ASSERT(result);
|
| @@ -522,7 +528,8 @@ bool MemoryChunk::CommitArea(size_t requested) {
|
| }
|
| } else {
|
| CodeRange* code_range = heap_->isolate()->code_range();
|
| - ASSERT(code_range->exists() && IsFlagSet(IS_EXECUTABLE));
|
| + ASSERT(code_range != NULL && code_range->valid() &&
|
| + IsFlagSet(IS_EXECUTABLE));
|
| if (!code_range->CommitRawMemory(start, length)) return false;
|
| }
|
|
|
| @@ -538,7 +545,8 @@ bool MemoryChunk::CommitArea(size_t requested) {
|
| if (!reservation_.Uncommit(start, length)) return false;
|
| } else {
|
| CodeRange* code_range = heap_->isolate()->code_range();
|
| - ASSERT(code_range->exists() && IsFlagSet(IS_EXECUTABLE));
|
| + ASSERT(code_range != NULL && code_range->valid() &&
|
| + IsFlagSet(IS_EXECUTABLE));
|
| if (!code_range->UncommitRawMemory(start, length)) return false;
|
| }
|
| }
|
| @@ -628,7 +636,7 @@ MemoryChunk* MemoryAllocator::AllocateChunk(intptr_t reserve_area_size,
|
| OS::CommitPageSize());
|
| // Allocate executable memory either from code range or from the
|
| // OS.
|
| - if (isolate_->code_range()->exists()) {
|
| + if (isolate_->code_range() != NULL && isolate_->code_range()->valid()) {
|
| base = isolate_->code_range()->AllocateRawMemory(chunk_size,
|
| commit_size,
|
| &chunk_size);
|
| @@ -1050,8 +1058,9 @@ intptr_t PagedSpace::SizeOfFirstPage() {
|
| case PROPERTY_CELL_SPACE:
|
| size = 8 * kPointerSize * KB;
|
| break;
|
| - case CODE_SPACE:
|
| - if (heap()->isolate()->code_range()->exists()) {
|
| + case CODE_SPACE: {
|
| + CodeRange* code_range = heap()->isolate()->code_range();
|
| + if (code_range != NULL && code_range->valid()) {
|
| // When code range exists, code pages are allocated in a special way
|
| // (from the reserved code range). That part of the code is not yet
|
| // upgraded to handle small pages.
|
| @@ -1062,6 +1071,7 @@ intptr_t PagedSpace::SizeOfFirstPage() {
|
| kPointerSize);
|
| }
|
| break;
|
| + }
|
| default:
|
| UNREACHABLE();
|
| }
|
|
|