| OLD | NEW | 
|---|
| 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 #include "src/heap/heap.h" | 5 #include "src/heap/heap.h" | 
| 6 | 6 | 
| 7 #include "src/accessors.h" | 7 #include "src/accessors.h" | 
| 8 #include "src/api.h" | 8 #include "src/api.h" | 
| 9 #include "src/ast/context-slot-cache.h" | 9 #include "src/ast/context-slot-cache.h" | 
| 10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" | 
| (...skipping 2249 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2260 | 2260 | 
| 2261     ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, scope_info) | 2261     ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, scope_info) | 
| 2262     ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, module_info) | 2262     ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, module_info) | 
| 2263     ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, feedback_vector) | 2263     ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, feedback_vector) | 
| 2264     ALLOCATE_PRIMITIVE_MAP(HEAP_NUMBER_TYPE, HeapNumber::kSize, heap_number, | 2264     ALLOCATE_PRIMITIVE_MAP(HEAP_NUMBER_TYPE, HeapNumber::kSize, heap_number, | 
| 2265                            Context::NUMBER_FUNCTION_INDEX) | 2265                            Context::NUMBER_FUNCTION_INDEX) | 
| 2266     ALLOCATE_MAP(MUTABLE_HEAP_NUMBER_TYPE, HeapNumber::kSize, | 2266     ALLOCATE_MAP(MUTABLE_HEAP_NUMBER_TYPE, HeapNumber::kSize, | 
| 2267                  mutable_heap_number) | 2267                  mutable_heap_number) | 
| 2268     ALLOCATE_PRIMITIVE_MAP(SYMBOL_TYPE, Symbol::kSize, symbol, | 2268     ALLOCATE_PRIMITIVE_MAP(SYMBOL_TYPE, Symbol::kSize, symbol, | 
| 2269                            Context::SYMBOL_FUNCTION_INDEX) | 2269                            Context::SYMBOL_FUNCTION_INDEX) | 
|  | 2270 #define ALLOCATE_SIMD128_MAP(TYPE, Type, type, lane_count, lane_type) \ | 
|  | 2271   ALLOCATE_PRIMITIVE_MAP(SIMD128_VALUE_TYPE, Type::kSize, type,       \ | 
|  | 2272                          Context::TYPE##_FUNCTION_INDEX) | 
|  | 2273     SIMD128_TYPES(ALLOCATE_SIMD128_MAP) | 
|  | 2274 #undef ALLOCATE_SIMD128_MAP | 
| 2270     ALLOCATE_MAP(FOREIGN_TYPE, Foreign::kSize, foreign) | 2275     ALLOCATE_MAP(FOREIGN_TYPE, Foreign::kSize, foreign) | 
| 2271 | 2276 | 
| 2272     ALLOCATE_PRIMITIVE_MAP(ODDBALL_TYPE, Oddball::kSize, boolean, | 2277     ALLOCATE_PRIMITIVE_MAP(ODDBALL_TYPE, Oddball::kSize, boolean, | 
| 2273                            Context::BOOLEAN_FUNCTION_INDEX); | 2278                            Context::BOOLEAN_FUNCTION_INDEX); | 
| 2274     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, uninitialized); | 2279     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, uninitialized); | 
| 2275     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, arguments_marker); | 2280     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, arguments_marker); | 
| 2276     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, no_interceptor_result_sentinel); | 2281     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, no_interceptor_result_sentinel); | 
| 2277     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, exception); | 2282     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, exception); | 
| 2278     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, termination_exception); | 2283     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, termination_exception); | 
| 2279     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, optimized_out); | 2284     ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, optimized_out); | 
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2425   { | 2430   { | 
| 2426     AllocationResult allocation = AllocateRaw(size, space, kDoubleUnaligned); | 2431     AllocationResult allocation = AllocateRaw(size, space, kDoubleUnaligned); | 
| 2427     if (!allocation.To(&result)) return allocation; | 2432     if (!allocation.To(&result)) return allocation; | 
| 2428   } | 2433   } | 
| 2429 | 2434 | 
| 2430   Map* map = mode == MUTABLE ? mutable_heap_number_map() : heap_number_map(); | 2435   Map* map = mode == MUTABLE ? mutable_heap_number_map() : heap_number_map(); | 
| 2431   HeapObject::cast(result)->set_map_no_write_barrier(map); | 2436   HeapObject::cast(result)->set_map_no_write_barrier(map); | 
| 2432   return result; | 2437   return result; | 
| 2433 } | 2438 } | 
| 2434 | 2439 | 
|  | 2440 #define SIMD_ALLOCATE_DEFINITION(TYPE, Type, type, lane_count, lane_type) \ | 
|  | 2441   AllocationResult Heap::Allocate##Type(lane_type lanes[lane_count],      \ | 
|  | 2442                                         PretenureFlag pretenure) {        \ | 
|  | 2443     int size = Type::kSize;                                               \ | 
|  | 2444     STATIC_ASSERT(Type::kSize <= kMaxRegularHeapObjectSize);              \ | 
|  | 2445                                                                           \ | 
|  | 2446     AllocationSpace space = SelectSpace(pretenure);                       \ | 
|  | 2447                                                                           \ | 
|  | 2448     HeapObject* result = nullptr;                                         \ | 
|  | 2449     {                                                                     \ | 
|  | 2450       AllocationResult allocation =                                       \ | 
|  | 2451           AllocateRaw(size, space, kSimd128Unaligned);                    \ | 
|  | 2452       if (!allocation.To(&result)) return allocation;                     \ | 
|  | 2453     }                                                                     \ | 
|  | 2454                                                                           \ | 
|  | 2455     result->set_map_no_write_barrier(type##_map());                       \ | 
|  | 2456     Type* instance = Type::cast(result);                                  \ | 
|  | 2457     for (int i = 0; i < lane_count; i++) {                                \ | 
|  | 2458       instance->set_lane(i, lanes[i]);                                    \ | 
|  | 2459     }                                                                     \ | 
|  | 2460     return result;                                                        \ | 
|  | 2461   } | 
|  | 2462 SIMD128_TYPES(SIMD_ALLOCATE_DEFINITION) | 
|  | 2463 #undef SIMD_ALLOCATE_DEFINITION | 
|  | 2464 | 
|  | 2465 | 
| 2435 AllocationResult Heap::AllocateCell(Object* value) { | 2466 AllocationResult Heap::AllocateCell(Object* value) { | 
| 2436   int size = Cell::kSize; | 2467   int size = Cell::kSize; | 
| 2437   STATIC_ASSERT(Cell::kSize <= kMaxRegularHeapObjectSize); | 2468   STATIC_ASSERT(Cell::kSize <= kMaxRegularHeapObjectSize); | 
| 2438 | 2469 | 
| 2439   HeapObject* result = nullptr; | 2470   HeapObject* result = nullptr; | 
| 2440   { | 2471   { | 
| 2441     AllocationResult allocation = AllocateRaw(size, OLD_SPACE); | 2472     AllocationResult allocation = AllocateRaw(size, OLD_SPACE); | 
| 2442     if (!allocation.To(&result)) return allocation; | 2473     if (!allocation.To(&result)) return allocation; | 
| 2443   } | 2474   } | 
| 2444   result->set_map_no_write_barrier(cell_map()); | 2475   result->set_map_no_write_barrier(cell_map()); | 
| (...skipping 4065 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 6510 } | 6541 } | 
| 6511 | 6542 | 
| 6512 | 6543 | 
| 6513 // static | 6544 // static | 
| 6514 int Heap::GetStaticVisitorIdForMap(Map* map) { | 6545 int Heap::GetStaticVisitorIdForMap(Map* map) { | 
| 6515   return StaticVisitorBase::GetVisitorId(map); | 6546   return StaticVisitorBase::GetVisitorId(map); | 
| 6516 } | 6547 } | 
| 6517 | 6548 | 
| 6518 }  // namespace internal | 6549 }  // namespace internal | 
| 6519 }  // namespace v8 | 6550 }  // namespace v8 | 
| OLD | NEW | 
|---|