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

Side by Side Diff: src/heap/heap.cc

Issue 1846963002: Use a dictionary-mode code cache on the map rather than a dual system. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « src/heap/heap.h ('k') | src/heap/incremental-marking.cc » ('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 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/scopeinfo.h" 9 #include "src/ast/scopeinfo.h"
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 1463 matching lines...) Expand 10 before | Expand all | Expand 10 after
1474 isolate_->context_slot_cache()->Clear(); 1474 isolate_->context_slot_cache()->Clear();
1475 isolate_->descriptor_lookup_cache()->Clear(); 1475 isolate_->descriptor_lookup_cache()->Clear();
1476 RegExpResultsCache::Clear(string_split_cache()); 1476 RegExpResultsCache::Clear(string_split_cache());
1477 RegExpResultsCache::Clear(regexp_multiple_cache()); 1477 RegExpResultsCache::Clear(regexp_multiple_cache());
1478 1478
1479 isolate_->compilation_cache()->MarkCompactPrologue(); 1479 isolate_->compilation_cache()->MarkCompactPrologue();
1480 1480
1481 CompletelyClearInstanceofCache(); 1481 CompletelyClearInstanceofCache();
1482 1482
1483 FlushNumberStringCache(); 1483 FlushNumberStringCache();
1484 if (FLAG_cleanup_code_caches_at_gc) {
1485 polymorphic_code_cache()->set_cache(undefined_value());
1486 }
1487
1488 ClearNormalizedMapCaches(); 1484 ClearNormalizedMapCaches();
1489 } 1485 }
1490 1486
1491 1487
1492 #ifdef VERIFY_HEAP 1488 #ifdef VERIFY_HEAP
1493 // Visitor class to verify pointers in code or data space do not point into 1489 // Visitor class to verify pointers in code or data space do not point into
1494 // new space. 1490 // new space.
1495 class VerifyNonPointerSpacePointersVisitor : public ObjectVisitor { 1491 class VerifyNonPointerSpacePointersVisitor : public ObjectVisitor {
1496 public: 1492 public:
1497 explicit VerifyNonPointerSpacePointersVisitor(Heap* heap) : heap_(heap) {} 1493 explicit VerifyNonPointerSpacePointersVisitor(Heap* heap) : heap_(heap) {}
(...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after
2173 2169
2174 2170
2175 const Heap::StructTable Heap::struct_table[] = { 2171 const Heap::StructTable Heap::struct_table[] = {
2176 #define STRUCT_TABLE_ELEMENT(NAME, Name, name) \ 2172 #define STRUCT_TABLE_ELEMENT(NAME, Name, name) \
2177 { NAME##_TYPE, Name::kSize, k##Name##MapRootIndex } \ 2173 { NAME##_TYPE, Name::kSize, k##Name##MapRootIndex } \
2178 , 2174 ,
2179 STRUCT_LIST(STRUCT_TABLE_ELEMENT) 2175 STRUCT_LIST(STRUCT_TABLE_ELEMENT)
2180 #undef STRUCT_TABLE_ELEMENT 2176 #undef STRUCT_TABLE_ELEMENT
2181 }; 2177 };
2182 2178
2179 namespace {
2180
2181 void FinalizeMap(Heap* heap, Map* map) {
ulan 2016/04/06 09:34:18 Let's include "PartialMap" in the name to be more
2182 map->set_code_cache(heap->empty_fixed_array());
2183 map->set_dependent_code(DependentCode::cast(heap->empty_fixed_array()));
2184 map->set_raw_transitions(Smi::FromInt(0));
2185 map->set_instance_descriptors(heap->empty_descriptor_array());
2186 if (FLAG_unbox_double_fields) {
2187 map->set_layout_descriptor(LayoutDescriptor::FastPointerLayout());
2188 }
2189 map->set_prototype(heap->null_value());
2190 map->set_constructor_or_backpointer(heap->null_value());
2191 }
2192
2193 } // namespace
2183 2194
2184 bool Heap::CreateInitialMaps() { 2195 bool Heap::CreateInitialMaps() {
2185 HeapObject* obj = nullptr; 2196 HeapObject* obj = nullptr;
2186 { 2197 {
2187 AllocationResult allocation = AllocatePartialMap(MAP_TYPE, Map::kSize); 2198 AllocationResult allocation = AllocatePartialMap(MAP_TYPE, Map::kSize);
2188 if (!allocation.To(&obj)) return false; 2199 if (!allocation.To(&obj)) return false;
2189 } 2200 }
2190 // Map::cast cannot be used due to uninitialized map field. 2201 // Map::cast cannot be used due to uninitialized map field.
2191 Map* new_meta_map = reinterpret_cast<Map*>(obj); 2202 Map* new_meta_map = reinterpret_cast<Map*>(obj);
2192 set_meta_map(new_meta_map); 2203 set_meta_map(new_meta_map);
2193 new_meta_map->set_map(new_meta_map); 2204 new_meta_map->set_map(new_meta_map);
2194 2205
2195 { // Partial map allocation 2206 { // Partial map allocation
2196 #define ALLOCATE_PARTIAL_MAP(instance_type, size, field_name) \ 2207 #define ALLOCATE_PARTIAL_MAP(instance_type, size, field_name) \
2197 { \ 2208 { \
2198 Map* map; \ 2209 Map* map; \
2199 if (!AllocatePartialMap((instance_type), (size)).To(&map)) return false; \ 2210 if (!AllocatePartialMap((instance_type), (size)).To(&map)) return false; \
2200 set_##field_name##_map(map); \ 2211 set_##field_name##_map(map); \
2201 } 2212 }
2202 2213
2203 ALLOCATE_PARTIAL_MAP(FIXED_ARRAY_TYPE, kVariableSizeSentinel, fixed_array); 2214 ALLOCATE_PARTIAL_MAP(FIXED_ARRAY_TYPE, kVariableSizeSentinel, fixed_array);
2204 ALLOCATE_PARTIAL_MAP(ODDBALL_TYPE, Oddball::kSize, undefined); 2215 ALLOCATE_PARTIAL_MAP(ODDBALL_TYPE, Oddball::kSize, undefined);
2205 ALLOCATE_PARTIAL_MAP(ODDBALL_TYPE, Oddball::kSize, null); 2216 ALLOCATE_PARTIAL_MAP(ODDBALL_TYPE, Oddball::kSize, null);
2217 ALLOCATE_PARTIAL_MAP(ODDBALL_TYPE, Oddball::kSize, the_hole);
2206 2218
2207 #undef ALLOCATE_PARTIAL_MAP 2219 #undef ALLOCATE_PARTIAL_MAP
2208 } 2220 }
2209 2221
2210 // Allocate the empty array. 2222 // Allocate the empty array.
2211 { 2223 {
2212 AllocationResult allocation = AllocateEmptyFixedArray(); 2224 AllocationResult allocation = AllocateEmptyFixedArray();
2213 if (!allocation.To(&obj)) return false; 2225 if (!allocation.To(&obj)) return false;
2214 } 2226 }
2215 set_empty_fixed_array(FixedArray::cast(obj)); 2227 set_empty_fixed_array(FixedArray::cast(obj));
2216 2228
2217 { 2229 {
2218 AllocationResult allocation = Allocate(null_map(), OLD_SPACE); 2230 AllocationResult allocation = Allocate(null_map(), OLD_SPACE);
2219 if (!allocation.To(&obj)) return false; 2231 if (!allocation.To(&obj)) return false;
2220 } 2232 }
2221 set_null_value(Oddball::cast(obj)); 2233 set_null_value(Oddball::cast(obj));
2222 Oddball::cast(obj)->set_kind(Oddball::kNull); 2234 Oddball::cast(obj)->set_kind(Oddball::kNull);
2223 2235
2224 { 2236 {
2225 AllocationResult allocation = Allocate(undefined_map(), OLD_SPACE); 2237 AllocationResult allocation = Allocate(undefined_map(), OLD_SPACE);
2226 if (!allocation.To(&obj)) return false; 2238 if (!allocation.To(&obj)) return false;
2227 } 2239 }
2228 set_undefined_value(Oddball::cast(obj)); 2240 set_undefined_value(Oddball::cast(obj));
2229 Oddball::cast(obj)->set_kind(Oddball::kUndefined); 2241 Oddball::cast(obj)->set_kind(Oddball::kUndefined);
2230 DCHECK(!InNewSpace(undefined_value())); 2242 DCHECK(!InNewSpace(undefined_value()));
2243 {
2244 AllocationResult allocation = Allocate(the_hole_map(), OLD_SPACE);
2245 if (!allocation.To(&obj)) return false;
2246 }
2247 set_the_hole_value(Oddball::cast(obj));
2248 Oddball::cast(obj)->set_kind(Oddball::kTheHole);
2231 2249
2232 // Set preliminary exception sentinel value before actually initializing it. 2250 // Set preliminary exception sentinel value before actually initializing it.
2233 set_exception(null_value()); 2251 set_exception(null_value());
2234 2252
2235 // Allocate the empty descriptor array. 2253 // Allocate the empty descriptor array.
2236 { 2254 {
2237 AllocationResult allocation = AllocateEmptyFixedArray(); 2255 AllocationResult allocation = AllocateEmptyFixedArray();
2238 if (!allocation.To(&obj)) return false; 2256 if (!allocation.To(&obj)) return false;
2239 } 2257 }
2240 set_empty_descriptor_array(DescriptorArray::cast(obj)); 2258 set_empty_descriptor_array(DescriptorArray::cast(obj));
2241 2259
2242 // Fix the instance_descriptors for the existing maps. 2260 // Fix the instance_descriptors for the existing maps.
2243 meta_map()->set_code_cache(empty_fixed_array()); 2261 FinalizeMap(this, meta_map());
2244 meta_map()->set_dependent_code(DependentCode::cast(empty_fixed_array())); 2262 FinalizeMap(this, fixed_array_map());
2245 meta_map()->set_raw_transitions(Smi::FromInt(0)); 2263 FinalizeMap(this, undefined_map());
2246 meta_map()->set_instance_descriptors(empty_descriptor_array()); 2264 undefined_map()->set_is_undetectable();
2247 if (FLAG_unbox_double_fields) { 2265 FinalizeMap(this, null_map());
2248 meta_map()->set_layout_descriptor(LayoutDescriptor::FastPointerLayout());
2249 }
2250
2251 fixed_array_map()->set_code_cache(empty_fixed_array());
2252 fixed_array_map()->set_dependent_code(
2253 DependentCode::cast(empty_fixed_array()));
2254 fixed_array_map()->set_raw_transitions(Smi::FromInt(0));
2255 fixed_array_map()->set_instance_descriptors(empty_descriptor_array());
2256 if (FLAG_unbox_double_fields) {
2257 fixed_array_map()->set_layout_descriptor(
2258 LayoutDescriptor::FastPointerLayout());
2259 }
2260
2261 undefined_map()->set_code_cache(empty_fixed_array());
2262 undefined_map()->set_dependent_code(DependentCode::cast(empty_fixed_array()));
2263 undefined_map()->set_raw_transitions(Smi::FromInt(0));
2264 undefined_map()->set_instance_descriptors(empty_descriptor_array());
2265 if (FLAG_unbox_double_fields) {
2266 undefined_map()->set_layout_descriptor(
2267 LayoutDescriptor::FastPointerLayout());
2268 }
2269
2270 null_map()->set_code_cache(empty_fixed_array());
2271 null_map()->set_dependent_code(DependentCode::cast(empty_fixed_array()));
2272 null_map()->set_raw_transitions(Smi::FromInt(0));
2273 null_map()->set_instance_descriptors(empty_descriptor_array());
2274 if (FLAG_unbox_double_fields) {
2275 null_map()->set_layout_descriptor(LayoutDescriptor::FastPointerLayout());
2276 }
2277 null_map()->set_is_undetectable(); 2266 null_map()->set_is_undetectable();
2278 2267 FinalizeMap(this, the_hole_map());
2279 // Fix prototype object for existing maps.
2280 meta_map()->set_prototype(null_value());
2281 meta_map()->set_constructor_or_backpointer(null_value());
2282
2283 fixed_array_map()->set_prototype(null_value());
2284 fixed_array_map()->set_constructor_or_backpointer(null_value());
2285
2286 undefined_map()->set_prototype(null_value());
2287 undefined_map()->set_constructor_or_backpointer(null_value());
2288 undefined_map()->set_is_undetectable();
2289
2290 null_map()->set_prototype(null_value());
2291 null_map()->set_constructor_or_backpointer(null_value());
2292 2268
2293 { // Map allocation 2269 { // Map allocation
2294 #define ALLOCATE_MAP(instance_type, size, field_name) \ 2270 #define ALLOCATE_MAP(instance_type, size, field_name) \
2295 { \ 2271 { \
2296 Map* map; \ 2272 Map* map; \
2297 if (!AllocateMap((instance_type), size).To(&map)) return false; \ 2273 if (!AllocateMap((instance_type), size).To(&map)) return false; \
2298 set_##field_name##_map(map); \ 2274 set_##field_name##_map(map); \
2299 } 2275 }
2300 2276
2301 #define ALLOCATE_VARSIZE_MAP(instance_type, field_name) \ 2277 #define ALLOCATE_VARSIZE_MAP(instance_type, field_name) \
(...skipping 17 matching lines...) Expand all
2319 mutable_heap_number) 2295 mutable_heap_number)
2320 ALLOCATE_PRIMITIVE_MAP(SYMBOL_TYPE, Symbol::kSize, symbol, 2296 ALLOCATE_PRIMITIVE_MAP(SYMBOL_TYPE, Symbol::kSize, symbol,
2321 Context::SYMBOL_FUNCTION_INDEX) 2297 Context::SYMBOL_FUNCTION_INDEX)
2322 #define ALLOCATE_SIMD128_MAP(TYPE, Type, type, lane_count, lane_type) \ 2298 #define ALLOCATE_SIMD128_MAP(TYPE, Type, type, lane_count, lane_type) \
2323 ALLOCATE_PRIMITIVE_MAP(SIMD128_VALUE_TYPE, Type::kSize, type, \ 2299 ALLOCATE_PRIMITIVE_MAP(SIMD128_VALUE_TYPE, Type::kSize, type, \
2324 Context::TYPE##_FUNCTION_INDEX) 2300 Context::TYPE##_FUNCTION_INDEX)
2325 SIMD128_TYPES(ALLOCATE_SIMD128_MAP) 2301 SIMD128_TYPES(ALLOCATE_SIMD128_MAP)
2326 #undef ALLOCATE_SIMD128_MAP 2302 #undef ALLOCATE_SIMD128_MAP
2327 ALLOCATE_MAP(FOREIGN_TYPE, Foreign::kSize, foreign) 2303 ALLOCATE_MAP(FOREIGN_TYPE, Foreign::kSize, foreign)
2328 2304
2329 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, the_hole);
2330 ALLOCATE_PRIMITIVE_MAP(ODDBALL_TYPE, Oddball::kSize, boolean, 2305 ALLOCATE_PRIMITIVE_MAP(ODDBALL_TYPE, Oddball::kSize, boolean,
2331 Context::BOOLEAN_FUNCTION_INDEX); 2306 Context::BOOLEAN_FUNCTION_INDEX);
2332 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, uninitialized); 2307 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, uninitialized);
2333 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, arguments_marker); 2308 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, arguments_marker);
2334 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, no_interceptor_result_sentinel); 2309 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, no_interceptor_result_sentinel);
2335 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, exception); 2310 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, exception);
2336 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, termination_exception); 2311 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, termination_exception);
2337 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, optimized_out); 2312 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, optimized_out);
2338 2313
2339 for (unsigned i = 0; i < arraysize(string_type_table); i++) { 2314 for (unsigned i = 0; i < arraysize(string_type_table); i++) {
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
2643 // The -0 value must be set before NewNumber works. 2618 // The -0 value must be set before NewNumber works.
2644 set_minus_zero_value(*factory->NewHeapNumber(-0.0, IMMUTABLE, TENURED)); 2619 set_minus_zero_value(*factory->NewHeapNumber(-0.0, IMMUTABLE, TENURED));
2645 DCHECK(std::signbit(minus_zero_value()->Number()) != 0); 2620 DCHECK(std::signbit(minus_zero_value()->Number()) != 0);
2646 2621
2647 set_nan_value(*factory->NewHeapNumber( 2622 set_nan_value(*factory->NewHeapNumber(
2648 std::numeric_limits<double>::quiet_NaN(), IMMUTABLE, TENURED)); 2623 std::numeric_limits<double>::quiet_NaN(), IMMUTABLE, TENURED));
2649 set_infinity_value(*factory->NewHeapNumber(V8_INFINITY, IMMUTABLE, TENURED)); 2624 set_infinity_value(*factory->NewHeapNumber(V8_INFINITY, IMMUTABLE, TENURED));
2650 set_minus_infinity_value( 2625 set_minus_infinity_value(
2651 *factory->NewHeapNumber(-V8_INFINITY, IMMUTABLE, TENURED)); 2626 *factory->NewHeapNumber(-V8_INFINITY, IMMUTABLE, TENURED));
2652 2627
2653 // The hole has not been created yet, but we want to put something
2654 // predictable in the gaps in the string table, so lets make that Smi zero.
2655 set_the_hole_value(reinterpret_cast<Oddball*>(Smi::FromInt(0)));
2656
2657 // Allocate initial string table. 2628 // Allocate initial string table.
2658 set_string_table(*StringTable::New(isolate(), kInitialStringTableSize)); 2629 set_string_table(*StringTable::New(isolate(), kInitialStringTableSize));
2659 2630
2660 // Allocate 2631 // Allocate
2661 2632
2662 // Finish initializing oddballs after creating the string table. 2633 // Finish initializing oddballs after creating the string table.
2663 Oddball::Initialize(isolate(), factory->undefined_value(), "undefined", 2634 Oddball::Initialize(isolate(), factory->undefined_value(), "undefined",
2664 factory->nan_value(), false, "undefined", 2635 factory->nan_value(), false, "undefined",
2665 Oddball::kUndefined); 2636 Oddball::kUndefined);
2666 2637
2667 // Initialize the null_value. 2638 // Initialize the null_value.
2668 Oddball::Initialize(isolate(), factory->null_value(), "null", 2639 Oddball::Initialize(isolate(), factory->null_value(), "null",
2669 handle(Smi::FromInt(0), isolate()), false, "object", 2640 handle(Smi::FromInt(0), isolate()), false, "object",
2670 Oddball::kNull); 2641 Oddball::kNull);
2671 2642
2643 // Initialize the_hole_value.
2644 Oddball::Initialize(isolate(), factory->the_hole_value(), "hole",
2645 handle(Smi::FromInt(-1), isolate()), false, "undefined",
2646 Oddball::kTheHole);
2647
2672 // Initialize the true_value. 2648 // Initialize the true_value.
2673 Oddball::Initialize(isolate(), factory->true_value(), "true", 2649 Oddball::Initialize(isolate(), factory->true_value(), "true",
2674 handle(Smi::FromInt(1), isolate()), true, "boolean", 2650 handle(Smi::FromInt(1), isolate()), true, "boolean",
2675 Oddball::kTrue); 2651 Oddball::kTrue);
2676 2652
2677 // Initialize the false_value. 2653 // Initialize the false_value.
2678 Oddball::Initialize(isolate(), factory->false_value(), "false", 2654 Oddball::Initialize(isolate(), factory->false_value(), "false",
2679 handle(Smi::FromInt(0), isolate()), false, "boolean", 2655 handle(Smi::FromInt(0), isolate()), false, "boolean",
2680 Oddball::kFalse); 2656 Oddball::kFalse);
2681 2657
2682 set_the_hole_value(*factory->NewOddball(
2683 factory->the_hole_map(), "hole", handle(Smi::FromInt(-1), isolate()),
2684 false, "undefined", Oddball::kTheHole));
2685
2686 set_uninitialized_value( 2658 set_uninitialized_value(
2687 *factory->NewOddball(factory->uninitialized_map(), "uninitialized", 2659 *factory->NewOddball(factory->uninitialized_map(), "uninitialized",
2688 handle(Smi::FromInt(-1), isolate()), false, 2660 handle(Smi::FromInt(-1), isolate()), false,
2689 "undefined", Oddball::kUninitialized)); 2661 "undefined", Oddball::kUninitialized));
2690 2662
2691 set_arguments_marker( 2663 set_arguments_marker(
2692 *factory->NewOddball(factory->arguments_marker_map(), "arguments_marker", 2664 *factory->NewOddball(factory->arguments_marker_map(), "arguments_marker",
2693 handle(Smi::FromInt(-4), isolate()), false, 2665 handle(Smi::FromInt(-4), isolate()), false,
2694 "undefined", Oddball::kArgumentsMarker)); 2666 "undefined", Oddball::kArgumentsMarker));
2695 2667
(...skipping 23 matching lines...) Expand all
2719 } 2691 }
2720 2692
2721 // Create the code_stubs dictionary. The initial size is set to avoid 2693 // Create the code_stubs dictionary. The initial size is set to avoid
2722 // expanding the dictionary during bootstrapping. 2694 // expanding the dictionary during bootstrapping.
2723 set_code_stubs(*UnseededNumberDictionary::New(isolate(), 128)); 2695 set_code_stubs(*UnseededNumberDictionary::New(isolate(), 128));
2724 2696
2725 // Create the non_monomorphic_cache used in stub-cache.cc. The initial size 2697 // Create the non_monomorphic_cache used in stub-cache.cc. The initial size
2726 // is set to avoid expanding the dictionary during bootstrapping. 2698 // is set to avoid expanding the dictionary during bootstrapping.
2727 set_non_monomorphic_cache(*UnseededNumberDictionary::New(isolate(), 64)); 2699 set_non_monomorphic_cache(*UnseededNumberDictionary::New(isolate(), 64));
2728 2700
2729 set_polymorphic_code_cache(PolymorphicCodeCache::cast(
2730 *factory->NewStruct(POLYMORPHIC_CODE_CACHE_TYPE)));
2731
2732 set_instanceof_cache_function(Smi::FromInt(0)); 2701 set_instanceof_cache_function(Smi::FromInt(0));
2733 set_instanceof_cache_map(Smi::FromInt(0)); 2702 set_instanceof_cache_map(Smi::FromInt(0));
2734 set_instanceof_cache_answer(Smi::FromInt(0)); 2703 set_instanceof_cache_answer(Smi::FromInt(0));
2735 2704
2736 { 2705 {
2737 HandleScope scope(isolate()); 2706 HandleScope scope(isolate());
2738 #define SYMBOL_INIT(name) \ 2707 #define SYMBOL_INIT(name) \
2739 { \ 2708 { \
2740 Handle<String> name##d = factory->NewStringFromStaticChars(#name); \ 2709 Handle<String> name##d = factory->NewStringFromStaticChars(#name); \
2741 Handle<Symbol> symbol(isolate()->factory()->NewPrivateSymbol()); \ 2710 Handle<Symbol> symbol(isolate()->factory()->NewPrivateSymbol()); \
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
2925 2894
2926 2895
2927 bool Heap::RootCanBeWrittenAfterInitialization(Heap::RootListIndex root_index) { 2896 bool Heap::RootCanBeWrittenAfterInitialization(Heap::RootListIndex root_index) {
2928 switch (root_index) { 2897 switch (root_index) {
2929 case kNumberStringCacheRootIndex: 2898 case kNumberStringCacheRootIndex:
2930 case kInstanceofCacheFunctionRootIndex: 2899 case kInstanceofCacheFunctionRootIndex:
2931 case kInstanceofCacheMapRootIndex: 2900 case kInstanceofCacheMapRootIndex:
2932 case kInstanceofCacheAnswerRootIndex: 2901 case kInstanceofCacheAnswerRootIndex:
2933 case kCodeStubsRootIndex: 2902 case kCodeStubsRootIndex:
2934 case kNonMonomorphicCacheRootIndex: 2903 case kNonMonomorphicCacheRootIndex:
2935 case kPolymorphicCodeCacheRootIndex:
2936 case kEmptyScriptRootIndex: 2904 case kEmptyScriptRootIndex:
2937 case kSymbolRegistryRootIndex: 2905 case kSymbolRegistryRootIndex:
2938 case kScriptListRootIndex: 2906 case kScriptListRootIndex:
2939 case kMaterializedObjectsRootIndex: 2907 case kMaterializedObjectsRootIndex:
2940 case kMicrotaskQueueRootIndex: 2908 case kMicrotaskQueueRootIndex:
2941 case kDetachedContextsRootIndex: 2909 case kDetachedContextsRootIndex:
2942 case kWeakObjectToCodeTableRootIndex: 2910 case kWeakObjectToCodeTableRootIndex:
2943 case kRetainedMapsRootIndex: 2911 case kRetainedMapsRootIndex:
2944 case kNoScriptSharedFunctionInfosRootIndex: 2912 case kNoScriptSharedFunctionInfosRootIndex:
2945 case kWeakStackTraceListRootIndex: 2913 case kWeakStackTraceListRootIndex:
(...skipping 3511 matching lines...) Expand 10 before | Expand all | Expand 10 after
6457 } 6425 }
6458 6426
6459 6427
6460 // static 6428 // static
6461 int Heap::GetStaticVisitorIdForMap(Map* map) { 6429 int Heap::GetStaticVisitorIdForMap(Map* map) {
6462 return StaticVisitorBase::GetVisitorId(map); 6430 return StaticVisitorBase::GetVisitorId(map);
6463 } 6431 }
6464 6432
6465 } // namespace internal 6433 } // namespace internal
6466 } // namespace v8 6434 } // namespace v8
OLDNEW
« no previous file with comments | « src/heap/heap.h ('k') | src/heap/incremental-marking.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698