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

Side by Side Diff: src/heap/heap-inl.h

Issue 1016803002: Remove PropertyCell space (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 9 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 #ifndef V8_HEAP_HEAP_INL_H_ 5 #ifndef V8_HEAP_HEAP_INL_H_
6 #define V8_HEAP_HEAP_INL_H_ 6 #define V8_HEAP_HEAP_INL_H_
7 7
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "src/base/platform/platform.h" 10 #include "src/base/platform/platform.h"
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 if (size_in_bytes <= code_space()->AreaSize()) { 191 if (size_in_bytes <= code_space()->AreaSize()) {
192 allocation = code_space_->AllocateRaw(size_in_bytes); 192 allocation = code_space_->AllocateRaw(size_in_bytes);
193 } else { 193 } else {
194 // Large code objects are allocated in large object space. 194 // Large code objects are allocated in large object space.
195 allocation = lo_space_->AllocateRaw(size_in_bytes, EXECUTABLE); 195 allocation = lo_space_->AllocateRaw(size_in_bytes, EXECUTABLE);
196 } 196 }
197 } else if (LO_SPACE == space) { 197 } else if (LO_SPACE == space) {
198 allocation = lo_space_->AllocateRaw(size_in_bytes, NOT_EXECUTABLE); 198 allocation = lo_space_->AllocateRaw(size_in_bytes, NOT_EXECUTABLE);
199 } else if (CELL_SPACE == space) { 199 } else if (CELL_SPACE == space) {
200 allocation = cell_space_->AllocateRaw(size_in_bytes); 200 allocation = cell_space_->AllocateRaw(size_in_bytes);
201 } else if (PROPERTY_CELL_SPACE == space) {
202 allocation = property_cell_space_->AllocateRaw(size_in_bytes);
203 } else { 201 } else {
204 DCHECK(MAP_SPACE == space); 202 DCHECK(MAP_SPACE == space);
205 allocation = map_space_->AllocateRaw(size_in_bytes); 203 allocation = map_space_->AllocateRaw(size_in_bytes);
206 } 204 }
207 if (allocation.To(&object)) { 205 if (allocation.To(&object)) {
208 OnAllocationEvent(object, size_in_bytes); 206 OnAllocationEvent(object, size_in_bytes);
209 } else { 207 } else {
210 old_gen_exhausted_ = true; 208 old_gen_exhausted_ = true;
211 } 209 }
212 return allocation; 210 return allocation;
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 // Heap numbers and sequential strings are promoted to old data space, all 386 // Heap numbers and sequential strings are promoted to old data space, all
389 // other object types are promoted to old pointer space. We do not use 387 // other object types are promoted to old pointer space. We do not use
390 // object->IsHeapNumber() and object->IsSeqString() because we already 388 // object->IsHeapNumber() and object->IsSeqString() because we already
391 // know that object has the heap object tag. 389 // know that object has the heap object tag.
392 390
393 // These objects are never allocated in new space. 391 // These objects are never allocated in new space.
394 DCHECK(type != MAP_TYPE); 392 DCHECK(type != MAP_TYPE);
395 DCHECK(type != CODE_TYPE); 393 DCHECK(type != CODE_TYPE);
396 DCHECK(type != ODDBALL_TYPE); 394 DCHECK(type != ODDBALL_TYPE);
397 DCHECK(type != CELL_TYPE); 395 DCHECK(type != CELL_TYPE);
398 DCHECK(type != PROPERTY_CELL_TYPE);
399 396
400 if (type <= LAST_NAME_TYPE) { 397 if (type <= LAST_NAME_TYPE) {
401 if (type == SYMBOL_TYPE) return OLD_POINTER_SPACE; 398 if (type == SYMBOL_TYPE) return OLD_POINTER_SPACE;
402 DCHECK(type < FIRST_NONSTRING_TYPE); 399 DCHECK(type < FIRST_NONSTRING_TYPE);
403 // There are four string representations: sequential strings, external 400 // There are four string representations: sequential strings, external
404 // strings, cons strings, and sliced strings. 401 // strings, cons strings, and sliced strings.
405 // Only the latter two contain non-map-word pointers to heap objects. 402 // Only the latter two contain non-map-word pointers to heap objects.
406 return ((type & kIsIndirectStringMask) == kIsIndirectStringTag) 403 return ((type & kIsIndirectStringMask) == kIsIndirectStringTag)
407 ? OLD_POINTER_SPACE 404 ? OLD_POINTER_SPACE
408 : OLD_DATA_SPACE; 405 : OLD_DATA_SPACE;
(...skipping 27 matching lines...) Expand all
436 return dst == src || dst == TargetSpaceId(type); 433 return dst == src || dst == TargetSpaceId(type);
437 case OLD_POINTER_SPACE: 434 case OLD_POINTER_SPACE:
438 return dst == src && (dst == TargetSpaceId(type) || obj->IsFiller() || 435 return dst == src && (dst == TargetSpaceId(type) || obj->IsFiller() ||
439 obj->IsExternalString()); 436 obj->IsExternalString());
440 case OLD_DATA_SPACE: 437 case OLD_DATA_SPACE:
441 return dst == src && dst == TargetSpaceId(type); 438 return dst == src && dst == TargetSpaceId(type);
442 case CODE_SPACE: 439 case CODE_SPACE:
443 return dst == src && type == CODE_TYPE; 440 return dst == src && type == CODE_TYPE;
444 case MAP_SPACE: 441 case MAP_SPACE:
445 case CELL_SPACE: 442 case CELL_SPACE:
446 case PROPERTY_CELL_SPACE:
447 case LO_SPACE: 443 case LO_SPACE:
448 return false; 444 return false;
449 } 445 }
450 UNREACHABLE(); 446 UNREACHABLE();
451 return false; 447 return false;
452 } 448 }
453 449
454 450
455 void Heap::CopyBlock(Address dst, Address src, int byte_size) { 451 void Heap::CopyBlock(Address dst, Address src, int byte_size) {
456 CopyWords(reinterpret_cast<Object**>(dst), reinterpret_cast<Object**>(src), 452 CopyWords(reinterpret_cast<Object**>(dst), reinterpret_cast<Object**>(src),
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 739
744 void VerifySmisVisitor::VisitPointers(Object** start, Object** end) { 740 void VerifySmisVisitor::VisitPointers(Object** start, Object** end) {
745 for (Object** current = start; current < end; current++) { 741 for (Object** current = start; current < end; current++) {
746 CHECK((*current)->IsSmi()); 742 CHECK((*current)->IsSmi());
747 } 743 }
748 } 744 }
749 } 745 }
750 } // namespace v8::internal 746 } // namespace v8::internal
751 747
752 #endif // V8_HEAP_HEAP_INL_H_ 748 #endif // V8_HEAP_HEAP_INL_H_
OLDNEW
« no previous file with comments | « src/heap/heap.cc ('k') | src/heap/incremental-marking.cc » ('j') | src/objects-inl.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698