OLD | NEW |
---|---|
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/heap/spaces.h" | 5 #include "src/heap/spaces.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/base/platform/platform.h" | 10 #include "src/base/platform/platform.h" |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
452 controller->TakeControl(&reservation); | 452 controller->TakeControl(&reservation); |
453 return base; | 453 return base; |
454 } | 454 } |
455 | 455 |
456 Address MemoryAllocator::AllocateAlignedMemory( | 456 Address MemoryAllocator::AllocateAlignedMemory( |
457 size_t reserve_size, size_t commit_size, size_t alignment, | 457 size_t reserve_size, size_t commit_size, size_t alignment, |
458 Executability executable, base::VirtualMemory* controller) { | 458 Executability executable, base::VirtualMemory* controller) { |
459 DCHECK(commit_size <= reserve_size); | 459 DCHECK(commit_size <= reserve_size); |
460 base::VirtualMemory reservation; | 460 base::VirtualMemory reservation; |
461 Address base = ReserveAlignedMemory(reserve_size, alignment, &reservation); | 461 Address base = ReserveAlignedMemory(reserve_size, alignment, &reservation); |
462 if (base == NULL) return NULL; | 462 if (base == NULL) { |
463 size_.Decrement(reserve_size); | |
Michael Lippautz
2016/10/13 08:24:36
IIUC ReserveAlignedMemory only increments if it su
Ilija.Pavlovic1
2016/10/13 12:29:58
This Decrement will be removed.
Done.
| |
464 return NULL; | |
465 } | |
463 | 466 |
464 if (executable == EXECUTABLE) { | 467 if (executable == EXECUTABLE) { |
465 if (!CommitExecutableMemory(&reservation, base, commit_size, | 468 if (!CommitExecutableMemory(&reservation, base, commit_size, |
466 reserve_size)) { | 469 reserve_size)) { |
467 base = NULL; | 470 base = NULL; |
468 } | 471 } |
469 } else { | 472 } else { |
470 if (reservation.Commit(base, commit_size, false)) { | 473 if (reservation.Commit(base, commit_size, false)) { |
471 UpdateAllocatedSpaceLimits(base, base + commit_size); | 474 UpdateAllocatedSpaceLimits(base, base + commit_size); |
472 } else { | 475 } else { |
473 base = NULL; | 476 base = NULL; |
474 } | 477 } |
475 } | 478 } |
476 | 479 |
477 if (base == NULL) { | 480 if (base == NULL) { |
478 // Failed to commit the body. Release the mapping and any partially | 481 // Failed to commit the body. Release the mapping and any partially |
479 // commited regions inside it. | 482 // commited regions inside it. |
480 reservation.Release(); | 483 reservation.Release(); |
484 size_.Decrement(reserve_size); | |
481 return NULL; | 485 return NULL; |
482 } | 486 } |
483 | 487 |
484 controller->TakeControl(&reservation); | 488 controller->TakeControl(&reservation); |
485 return base; | 489 return base; |
486 } | 490 } |
487 | 491 |
488 void Page::InitializeAsAnchor(Space* space) { | 492 void Page::InitializeAsAnchor(Space* space) { |
489 set_owner(space); | 493 set_owner(space); |
490 set_next_chunk(this); | 494 set_next_chunk(this); |
(...skipping 2739 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3230 object->ShortPrint(); | 3234 object->ShortPrint(); |
3231 PrintF("\n"); | 3235 PrintF("\n"); |
3232 } | 3236 } |
3233 printf(" --------------------------------------\n"); | 3237 printf(" --------------------------------------\n"); |
3234 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes()); | 3238 printf(" Marked: %x, LiveCount: %x\n", mark_size, LiveBytes()); |
3235 } | 3239 } |
3236 | 3240 |
3237 #endif // DEBUG | 3241 #endif // DEBUG |
3238 } // namespace internal | 3242 } // namespace internal |
3239 } // namespace v8 | 3243 } // namespace v8 |
OLD | NEW |