Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(679)

Side by Side Diff: src/spaces.cc

Issue 336483002: remove this == null (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/spaces.h ('k') | src/x64/assembler-x64-inl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/full-codegen.h" 7 #include "src/full-codegen.h"
8 #include "src/macro-assembler.h" 8 #include "src/macro-assembler.h"
9 #include "src/mark-compact.h" 9 #include "src/mark-compact.h"
10 #include "src/msan.h" 10 #include "src/msan.h"
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 ASSERT(size_ >= size); 315 ASSERT(size_ >= size);
316 size_ -= size; 316 size_ -= size;
317 317
318 isolate_->counters()->memory_allocated()->Decrement(static_cast<int>(size)); 318 isolate_->counters()->memory_allocated()->Decrement(static_cast<int>(size));
319 319
320 if (executable == EXECUTABLE) { 320 if (executable == EXECUTABLE) {
321 ASSERT(size_executable_ >= size); 321 ASSERT(size_executable_ >= size);
322 size_executable_ -= size; 322 size_executable_ -= size;
323 } 323 }
324 // Code which is part of the code-range does not have its own VirtualMemory. 324 // Code which is part of the code-range does not have its own VirtualMemory.
325 ASSERT(!isolate_->code_range()->contains( 325 ASSERT(isolate_->code_range() == NULL ||
326 static_cast<Address>(reservation->address()))); 326 !isolate_->code_range()->contains(
327 ASSERT(executable == NOT_EXECUTABLE || !isolate_->code_range()->exists()); 327 static_cast<Address>(reservation->address())));
328 ASSERT(executable == NOT_EXECUTABLE ||
329 isolate_->code_range() == NULL ||
330 !isolate_->code_range()->valid());
328 reservation->Release(); 331 reservation->Release();
329 } 332 }
330 333
331 334
332 void MemoryAllocator::FreeMemory(Address base, 335 void MemoryAllocator::FreeMemory(Address base,
333 size_t size, 336 size_t size,
334 Executability executable) { 337 Executability executable) {
335 // TODO(gc) make code_range part of memory allocator? 338 // TODO(gc) make code_range part of memory allocator?
336 ASSERT(size_ >= size); 339 ASSERT(size_ >= size);
337 size_ -= size; 340 size_ -= size;
338 341
339 isolate_->counters()->memory_allocated()->Decrement(static_cast<int>(size)); 342 isolate_->counters()->memory_allocated()->Decrement(static_cast<int>(size));
340 343
341 if (executable == EXECUTABLE) { 344 if (executable == EXECUTABLE) {
342 ASSERT(size_executable_ >= size); 345 ASSERT(size_executable_ >= size);
343 size_executable_ -= size; 346 size_executable_ -= size;
344 } 347 }
345 if (isolate_->code_range()->contains(static_cast<Address>(base))) { 348 if (isolate_->code_range() != NULL &&
349 isolate_->code_range()->contains(static_cast<Address>(base))) {
346 ASSERT(executable == EXECUTABLE); 350 ASSERT(executable == EXECUTABLE);
347 isolate_->code_range()->FreeRawMemory(base, size); 351 isolate_->code_range()->FreeRawMemory(base, size);
348 } else { 352 } else {
349 ASSERT(executable == NOT_EXECUTABLE || !isolate_->code_range()->exists()); 353 ASSERT(executable == NOT_EXECUTABLE ||
354 isolate_->code_range() == NULL ||
355 !isolate_->code_range()->valid());
350 bool result = VirtualMemory::ReleaseRegion(base, size); 356 bool result = VirtualMemory::ReleaseRegion(base, size);
351 USE(result); 357 USE(result);
352 ASSERT(result); 358 ASSERT(result);
353 } 359 }
354 } 360 }
355 361
356 362
357 Address MemoryAllocator::ReserveAlignedMemory(size_t size, 363 Address MemoryAllocator::ReserveAlignedMemory(size_t size,
358 size_t alignment, 364 size_t alignment,
359 VirtualMemory* controller) { 365 VirtualMemory* controller) {
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 size_t length = commit_size - committed_size; 521 size_t length = commit_size - committed_size;
516 if (reservation_.IsReserved()) { 522 if (reservation_.IsReserved()) {
517 Executability executable = IsFlagSet(IS_EXECUTABLE) 523 Executability executable = IsFlagSet(IS_EXECUTABLE)
518 ? EXECUTABLE : NOT_EXECUTABLE; 524 ? EXECUTABLE : NOT_EXECUTABLE;
519 if (!heap()->isolate()->memory_allocator()->CommitMemory( 525 if (!heap()->isolate()->memory_allocator()->CommitMemory(
520 start, length, executable)) { 526 start, length, executable)) {
521 return false; 527 return false;
522 } 528 }
523 } else { 529 } else {
524 CodeRange* code_range = heap_->isolate()->code_range(); 530 CodeRange* code_range = heap_->isolate()->code_range();
525 ASSERT(code_range->exists() && IsFlagSet(IS_EXECUTABLE)); 531 ASSERT(code_range != NULL && code_range->valid() &&
532 IsFlagSet(IS_EXECUTABLE));
526 if (!code_range->CommitRawMemory(start, length)) return false; 533 if (!code_range->CommitRawMemory(start, length)) return false;
527 } 534 }
528 535
529 if (Heap::ShouldZapGarbage()) { 536 if (Heap::ShouldZapGarbage()) {
530 heap_->isolate()->memory_allocator()->ZapBlock(start, length); 537 heap_->isolate()->memory_allocator()->ZapBlock(start, length);
531 } 538 }
532 } else if (commit_size < committed_size) { 539 } else if (commit_size < committed_size) {
533 ASSERT(commit_size > 0); 540 ASSERT(commit_size > 0);
534 // Shrink the committed area. 541 // Shrink the committed area.
535 size_t length = committed_size - commit_size; 542 size_t length = committed_size - commit_size;
536 Address start = address() + committed_size + guard_size - length; 543 Address start = address() + committed_size + guard_size - length;
537 if (reservation_.IsReserved()) { 544 if (reservation_.IsReserved()) {
538 if (!reservation_.Uncommit(start, length)) return false; 545 if (!reservation_.Uncommit(start, length)) return false;
539 } else { 546 } else {
540 CodeRange* code_range = heap_->isolate()->code_range(); 547 CodeRange* code_range = heap_->isolate()->code_range();
541 ASSERT(code_range->exists() && IsFlagSet(IS_EXECUTABLE)); 548 ASSERT(code_range != NULL && code_range->valid() &&
549 IsFlagSet(IS_EXECUTABLE));
542 if (!code_range->UncommitRawMemory(start, length)) return false; 550 if (!code_range->UncommitRawMemory(start, length)) return false;
543 } 551 }
544 } 552 }
545 553
546 area_end_ = area_start_ + requested; 554 area_end_ = area_start_ + requested;
547 return true; 555 return true;
548 } 556 }
549 557
550 558
551 void MemoryChunk::InsertAfter(MemoryChunk* other) { 559 void MemoryChunk::InsertAfter(MemoryChunk* other) {
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 StringEvent("MemoryAllocator::AllocateRawMemory", 629 StringEvent("MemoryAllocator::AllocateRawMemory",
622 "V8 Executable Allocation capacity exceeded")); 630 "V8 Executable Allocation capacity exceeded"));
623 return NULL; 631 return NULL;
624 } 632 }
625 633
626 // Size of header (not executable) plus area (executable). 634 // Size of header (not executable) plus area (executable).
627 size_t commit_size = RoundUp(CodePageGuardStartOffset() + commit_area_size, 635 size_t commit_size = RoundUp(CodePageGuardStartOffset() + commit_area_size,
628 OS::CommitPageSize()); 636 OS::CommitPageSize());
629 // Allocate executable memory either from code range or from the 637 // Allocate executable memory either from code range or from the
630 // OS. 638 // OS.
631 if (isolate_->code_range()->exists()) { 639 if (isolate_->code_range() != NULL && isolate_->code_range()->valid()) {
632 base = isolate_->code_range()->AllocateRawMemory(chunk_size, 640 base = isolate_->code_range()->AllocateRawMemory(chunk_size,
633 commit_size, 641 commit_size,
634 &chunk_size); 642 &chunk_size);
635 ASSERT(IsAligned(reinterpret_cast<intptr_t>(base), 643 ASSERT(IsAligned(reinterpret_cast<intptr_t>(base),
636 MemoryChunk::kAlignment)); 644 MemoryChunk::kAlignment));
637 if (base == NULL) return NULL; 645 if (base == NULL) return NULL;
638 size_ += chunk_size; 646 size_ += chunk_size;
639 // Update executable memory size. 647 // Update executable memory size.
640 size_executable_ += chunk_size; 648 size_executable_ += chunk_size;
641 } else { 649 } else {
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 break; 1051 break;
1044 case MAP_SPACE: 1052 case MAP_SPACE:
1045 size = 16 * kPointerSize * KB; 1053 size = 16 * kPointerSize * KB;
1046 break; 1054 break;
1047 case CELL_SPACE: 1055 case CELL_SPACE:
1048 size = 16 * kPointerSize * KB; 1056 size = 16 * kPointerSize * KB;
1049 break; 1057 break;
1050 case PROPERTY_CELL_SPACE: 1058 case PROPERTY_CELL_SPACE:
1051 size = 8 * kPointerSize * KB; 1059 size = 8 * kPointerSize * KB;
1052 break; 1060 break;
1053 case CODE_SPACE: 1061 case CODE_SPACE: {
1054 if (heap()->isolate()->code_range()->exists()) { 1062 CodeRange* code_range = heap()->isolate()->code_range();
1063 if (code_range != NULL && code_range->valid()) {
1055 // When code range exists, code pages are allocated in a special way 1064 // When code range exists, code pages are allocated in a special way
1056 // (from the reserved code range). That part of the code is not yet 1065 // (from the reserved code range). That part of the code is not yet
1057 // upgraded to handle small pages. 1066 // upgraded to handle small pages.
1058 size = AreaSize(); 1067 size = AreaSize();
1059 } else { 1068 } else {
1060 size = RoundUp( 1069 size = RoundUp(
1061 480 * KB * FullCodeGenerator::kBootCodeSizeMultiplier / 100, 1070 480 * KB * FullCodeGenerator::kBootCodeSizeMultiplier / 100,
1062 kPointerSize); 1071 kPointerSize);
1063 } 1072 }
1064 break; 1073 break;
1074 }
1065 default: 1075 default:
1066 UNREACHABLE(); 1076 UNREACHABLE();
1067 } 1077 }
1068 return Min(size, AreaSize()); 1078 return Min(size, AreaSize());
1069 } 1079 }
1070 1080
1071 1081
1072 int PagedSpace::CountTotalPages() { 1082 int PagedSpace::CountTotalPages() {
1073 PageIterator it(this); 1083 PageIterator it(this);
1074 int count = 0; 1084 int count = 0;
(...skipping 2038 matching lines...) Expand 10 before | Expand all | Expand 10 after
3113 object->ShortPrint(); 3123 object->ShortPrint();
3114 PrintF("\n"); 3124 PrintF("\n");
3115 } 3125 }
3116 printf(" --------------------------------------\n"); 3126 printf(" --------------------------------------\n");
3117 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes()); 3127 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes());
3118 } 3128 }
3119 3129
3120 #endif // DEBUG 3130 #endif // DEBUG
3121 3131
3122 } } // namespace v8::internal 3132 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/spaces.h ('k') | src/x64/assembler-x64-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698