OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 V(Oddball, the_hole_value, TheHoleValue) \ | 57 V(Oddball, the_hole_value, TheHoleValue) \ |
58 V(Oddball, null_value, NullValue) \ | 58 V(Oddball, null_value, NullValue) \ |
59 V(Oddball, true_value, TrueValue) \ | 59 V(Oddball, true_value, TrueValue) \ |
60 V(Oddball, false_value, FalseValue) \ | 60 V(Oddball, false_value, FalseValue) \ |
61 V(Map, global_property_cell_map, GlobalPropertyCellMap) \ | 61 V(Map, global_property_cell_map, GlobalPropertyCellMap) \ |
62 V(Map, shared_function_info_map, SharedFunctionInfoMap) \ | 62 V(Map, shared_function_info_map, SharedFunctionInfoMap) \ |
63 V(Map, meta_map, MetaMap) \ | 63 V(Map, meta_map, MetaMap) \ |
64 V(Map, ascii_symbol_map, AsciiSymbolMap) \ | 64 V(Map, ascii_symbol_map, AsciiSymbolMap) \ |
65 V(Map, ascii_string_map, AsciiStringMap) \ | 65 V(Map, ascii_string_map, AsciiStringMap) \ |
66 V(Map, heap_number_map, HeapNumberMap) \ | 66 V(Map, heap_number_map, HeapNumberMap) \ |
67 V(Map, native_context_map, NativeContextMap) \ | 67 V(Map, global_context_map, GlobalContextMap) \ |
68 V(Map, fixed_array_map, FixedArrayMap) \ | 68 V(Map, fixed_array_map, FixedArrayMap) \ |
69 V(Map, code_map, CodeMap) \ | 69 V(Map, code_map, CodeMap) \ |
70 V(Map, scope_info_map, ScopeInfoMap) \ | 70 V(Map, scope_info_map, ScopeInfoMap) \ |
71 V(Map, fixed_cow_array_map, FixedCOWArrayMap) \ | 71 V(Map, fixed_cow_array_map, FixedCOWArrayMap) \ |
72 V(Map, fixed_double_array_map, FixedDoubleArrayMap) \ | 72 V(Map, fixed_double_array_map, FixedDoubleArrayMap) \ |
73 V(Object, no_interceptor_result_sentinel, NoInterceptorResultSentinel) \ | 73 V(Object, no_interceptor_result_sentinel, NoInterceptorResultSentinel) \ |
74 V(Map, hash_table_map, HashTableMap) \ | 74 V(Map, hash_table_map, HashTableMap) \ |
75 V(FixedArray, empty_fixed_array, EmptyFixedArray) \ | 75 V(FixedArray, empty_fixed_array, EmptyFixedArray) \ |
76 V(ByteArray, empty_byte_array, EmptyByteArray) \ | 76 V(ByteArray, empty_byte_array, EmptyByteArray) \ |
77 V(String, empty_string, EmptyString) \ | 77 V(String, empty_string, EmptyString) \ |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 V(UnseededNumberDictionary, non_monomorphic_cache, NonMonomorphicCache) \ | 143 V(UnseededNumberDictionary, non_monomorphic_cache, NonMonomorphicCache) \ |
144 V(PolymorphicCodeCache, polymorphic_code_cache, PolymorphicCodeCache) \ | 144 V(PolymorphicCodeCache, polymorphic_code_cache, PolymorphicCodeCache) \ |
145 V(Code, js_entry_code, JsEntryCode) \ | 145 V(Code, js_entry_code, JsEntryCode) \ |
146 V(Code, js_construct_entry_code, JsConstructEntryCode) \ | 146 V(Code, js_construct_entry_code, JsConstructEntryCode) \ |
147 V(FixedArray, natives_source_cache, NativesSourceCache) \ | 147 V(FixedArray, natives_source_cache, NativesSourceCache) \ |
148 V(Object, last_script_id, LastScriptId) \ | 148 V(Object, last_script_id, LastScriptId) \ |
149 V(Script, empty_script, EmptyScript) \ | 149 V(Script, empty_script, EmptyScript) \ |
150 V(Smi, real_stack_limit, RealStackLimit) \ | 150 V(Smi, real_stack_limit, RealStackLimit) \ |
151 V(StringDictionary, intrinsic_function_names, IntrinsicFunctionNames) \ | 151 V(StringDictionary, intrinsic_function_names, IntrinsicFunctionNames) \ |
152 V(Smi, arguments_adaptor_deopt_pc_offset, ArgumentsAdaptorDeoptPCOffset) \ | 152 V(Smi, arguments_adaptor_deopt_pc_offset, ArgumentsAdaptorDeoptPCOffset) \ |
153 V(Smi, construct_stub_deopt_pc_offset, ConstructStubDeoptPCOffset) \ | 153 V(Smi, construct_stub_deopt_pc_offset, ConstructStubDeoptPCOffset) |
154 V(Smi, setter_stub_deopt_pc_offset, SetterStubDeoptPCOffset) | |
155 | 154 |
156 #define ROOT_LIST(V) \ | 155 #define ROOT_LIST(V) \ |
157 STRONG_ROOT_LIST(V) \ | 156 STRONG_ROOT_LIST(V) \ |
158 V(SymbolTable, symbol_table, SymbolTable) | 157 V(SymbolTable, symbol_table, SymbolTable) |
159 | 158 |
160 #define SYMBOL_LIST(V) \ | 159 #define SYMBOL_LIST(V) \ |
161 V(Array_symbol, "Array") \ | 160 V(Array_symbol, "Array") \ |
162 V(Object_symbol, "Object") \ | 161 V(Object_symbol, "Object") \ |
163 V(Proto_symbol, "__proto__") \ | 162 V(Proto_symbol, "__proto__") \ |
164 V(StringImpl_symbol, "StringImpl") \ | 163 V(StringImpl_symbol, "StringImpl") \ |
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
816 // Please note this does not perform a garbage collection. | 815 // Please note this does not perform a garbage collection. |
817 MUST_USE_RESULT MaybeObject* AllocateFixedDoubleArrayWithHoles( | 816 MUST_USE_RESULT MaybeObject* AllocateFixedDoubleArrayWithHoles( |
818 int length, | 817 int length, |
819 PretenureFlag pretenure = NOT_TENURED); | 818 PretenureFlag pretenure = NOT_TENURED); |
820 | 819 |
821 // AllocateHashTable is identical to AllocateFixedArray except | 820 // AllocateHashTable is identical to AllocateFixedArray except |
822 // that the resulting object has hash_table_map as map. | 821 // that the resulting object has hash_table_map as map. |
823 MUST_USE_RESULT MaybeObject* AllocateHashTable( | 822 MUST_USE_RESULT MaybeObject* AllocateHashTable( |
824 int length, PretenureFlag pretenure = NOT_TENURED); | 823 int length, PretenureFlag pretenure = NOT_TENURED); |
825 | 824 |
826 // Allocate a native (but otherwise uninitialized) context. | 825 // Allocate a global (but otherwise uninitialized) context. |
827 MUST_USE_RESULT MaybeObject* AllocateNativeContext(); | 826 MUST_USE_RESULT MaybeObject* AllocateGlobalContext(); |
828 | 827 |
829 // Allocate a module context. | 828 // Allocate a module context. |
830 MUST_USE_RESULT MaybeObject* AllocateModuleContext(ScopeInfo* scope_info); | 829 MUST_USE_RESULT MaybeObject* AllocateModuleContext(ScopeInfo* scope_info); |
831 | 830 |
832 // Allocate a function context. | 831 // Allocate a function context. |
833 MUST_USE_RESULT MaybeObject* AllocateFunctionContext(int length, | 832 MUST_USE_RESULT MaybeObject* AllocateFunctionContext(int length, |
834 JSFunction* function); | 833 JSFunction* function); |
835 | 834 |
836 // Allocate a catch context. | 835 // Allocate a catch context. |
837 MUST_USE_RESULT MaybeObject* AllocateCatchContext(JSFunction* function, | 836 MUST_USE_RESULT MaybeObject* AllocateCatchContext(JSFunction* function, |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1067 void CollectAllAvailableGarbage(const char* gc_reason = NULL); | 1066 void CollectAllAvailableGarbage(const char* gc_reason = NULL); |
1068 | 1067 |
1069 // Check whether the heap is currently iterable. | 1068 // Check whether the heap is currently iterable. |
1070 bool IsHeapIterable(); | 1069 bool IsHeapIterable(); |
1071 | 1070 |
1072 // Ensure that we have swept all spaces in such a way that we can iterate | 1071 // Ensure that we have swept all spaces in such a way that we can iterate |
1073 // over all objects. May cause a GC. | 1072 // over all objects. May cause a GC. |
1074 void EnsureHeapIsIterable(); | 1073 void EnsureHeapIsIterable(); |
1075 | 1074 |
1076 // Notify the heap that a context has been disposed. | 1075 // Notify the heap that a context has been disposed. |
1077 int NotifyContextDisposed() { | 1076 int NotifyContextDisposed() { return ++contexts_disposed_; } |
1078 flush_monomorphic_ics_ = true; | |
1079 return ++contexts_disposed_; | |
1080 } | |
1081 | 1077 |
1082 // Utility to invoke the scavenger. This is needed in test code to | 1078 // Utility to invoke the scavenger. This is needed in test code to |
1083 // ensure correct callback for weak global handles. | 1079 // ensure correct callback for weak global handles. |
1084 void PerformScavenge(); | 1080 void PerformScavenge(); |
1085 | 1081 |
1086 inline void increment_scan_on_scavenge_pages() { | 1082 inline void increment_scan_on_scavenge_pages() { |
1087 scan_on_scavenge_pages_++; | 1083 scan_on_scavenge_pages_++; |
1088 if (FLAG_gc_verbose) { | 1084 if (FLAG_gc_verbose) { |
1089 PrintF("Scan-on-scavenge pages: %d\n", scan_on_scavenge_pages_); | 1085 PrintF("Scan-on-scavenge pages: %d\n", scan_on_scavenge_pages_); |
1090 } | 1086 } |
1091 } | 1087 } |
1092 | 1088 |
1093 inline void decrement_scan_on_scavenge_pages() { | 1089 inline void decrement_scan_on_scavenge_pages() { |
1094 scan_on_scavenge_pages_--; | 1090 scan_on_scavenge_pages_--; |
1095 if (FLAG_gc_verbose) { | 1091 if (FLAG_gc_verbose) { |
1096 PrintF("Scan-on-scavenge pages: %d\n", scan_on_scavenge_pages_); | 1092 PrintF("Scan-on-scavenge pages: %d\n", scan_on_scavenge_pages_); |
1097 } | 1093 } |
1098 } | 1094 } |
1099 | 1095 |
1100 PromotionQueue* promotion_queue() { return &promotion_queue_; } | 1096 PromotionQueue* promotion_queue() { return &promotion_queue_; } |
1101 | 1097 |
1102 #ifdef DEBUG | 1098 #ifdef DEBUG |
1103 // Utility used with flag gc-greedy. | 1099 // Utility used with flag gc-greedy. |
1104 void GarbageCollectionGreedyCheck(); | 1100 void GarbageCollectionGreedyCheck(); |
1105 #endif | 1101 #endif |
1106 | 1102 |
1107 void AddGCPrologueCallback( | 1103 void AddGCPrologueCallback( |
1108 GCPrologueCallback callback, GCType gc_type_filter); | 1104 GCEpilogueCallback callback, GCType gc_type_filter); |
1109 void RemoveGCPrologueCallback(GCPrologueCallback callback); | 1105 void RemoveGCPrologueCallback(GCEpilogueCallback callback); |
1110 | 1106 |
1111 void AddGCEpilogueCallback( | 1107 void AddGCEpilogueCallback( |
1112 GCEpilogueCallback callback, GCType gc_type_filter); | 1108 GCEpilogueCallback callback, GCType gc_type_filter); |
1113 void RemoveGCEpilogueCallback(GCEpilogueCallback callback); | 1109 void RemoveGCEpilogueCallback(GCEpilogueCallback callback); |
1114 | 1110 |
1115 void SetGlobalGCPrologueCallback(GCCallback callback) { | 1111 void SetGlobalGCPrologueCallback(GCCallback callback) { |
1116 ASSERT((callback == NULL) ^ (global_gc_prologue_callback_ == NULL)); | 1112 ASSERT((callback == NULL) ^ (global_gc_prologue_callback_ == NULL)); |
1117 global_gc_prologue_callback_ = callback; | 1113 global_gc_prologue_callback_ = callback; |
1118 } | 1114 } |
1119 void SetGlobalGCEpilogueCallback(GCCallback callback) { | 1115 void SetGlobalGCEpilogueCallback(GCCallback callback) { |
(...skipping 26 matching lines...) Expand all Loading... |
1146 #define SYMBOL_ACCESSOR(name, str) String* name() { \ | 1142 #define SYMBOL_ACCESSOR(name, str) String* name() { \ |
1147 return String::cast(roots_[k##name##RootIndex]); \ | 1143 return String::cast(roots_[k##name##RootIndex]); \ |
1148 } | 1144 } |
1149 SYMBOL_LIST(SYMBOL_ACCESSOR) | 1145 SYMBOL_LIST(SYMBOL_ACCESSOR) |
1150 #undef SYMBOL_ACCESSOR | 1146 #undef SYMBOL_ACCESSOR |
1151 | 1147 |
1152 // The hidden_symbol is special because it is the empty string, but does | 1148 // The hidden_symbol is special because it is the empty string, but does |
1153 // not match the empty string. | 1149 // not match the empty string. |
1154 String* hidden_symbol() { return hidden_symbol_; } | 1150 String* hidden_symbol() { return hidden_symbol_; } |
1155 | 1151 |
1156 void set_native_contexts_list(Object* object) { | 1152 void set_global_contexts_list(Object* object) { |
1157 native_contexts_list_ = object; | 1153 global_contexts_list_ = object; |
1158 } | 1154 } |
1159 Object* native_contexts_list() { return native_contexts_list_; } | 1155 Object* global_contexts_list() { return global_contexts_list_; } |
1160 | 1156 |
1161 // Number of mark-sweeps. | 1157 // Number of mark-sweeps. |
1162 unsigned int ms_count() { return ms_count_; } | 1158 unsigned int ms_count() { return ms_count_; } |
1163 | 1159 |
1164 // Iterates over all roots in the heap. | 1160 // Iterates over all roots in the heap. |
1165 void IterateRoots(ObjectVisitor* v, VisitMode mode); | 1161 void IterateRoots(ObjectVisitor* v, VisitMode mode); |
1166 // Iterates over all strong roots in the heap. | 1162 // Iterates over all strong roots in the heap. |
1167 void IterateStrongRoots(ObjectVisitor* v, VisitMode mode); | 1163 void IterateStrongRoots(ObjectVisitor* v, VisitMode mode); |
1168 // Iterates over all the other roots in the heap. | 1164 // Iterates over all the other roots in the heap. |
1169 void IterateWeakRoots(ObjectVisitor* v, VisitMode mode); | 1165 void IterateWeakRoots(ObjectVisitor* v, VisitMode mode); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1223 // Update the next script id. | 1219 // Update the next script id. |
1224 inline void SetLastScriptId(Object* last_script_id); | 1220 inline void SetLastScriptId(Object* last_script_id); |
1225 | 1221 |
1226 // Generated code can embed this address to get access to the roots. | 1222 // Generated code can embed this address to get access to the roots. |
1227 Object** roots_array_start() { return roots_; } | 1223 Object** roots_array_start() { return roots_; } |
1228 | 1224 |
1229 Address* store_buffer_top_address() { | 1225 Address* store_buffer_top_address() { |
1230 return reinterpret_cast<Address*>(&roots_[kStoreBufferTopRootIndex]); | 1226 return reinterpret_cast<Address*>(&roots_[kStoreBufferTopRootIndex]); |
1231 } | 1227 } |
1232 | 1228 |
1233 // Get address of native contexts list for serialization support. | 1229 // Get address of global contexts list for serialization support. |
1234 Object** native_contexts_list_address() { | 1230 Object** global_contexts_list_address() { |
1235 return &native_contexts_list_; | 1231 return &global_contexts_list_; |
1236 } | 1232 } |
1237 | 1233 |
1238 #ifdef DEBUG | 1234 #ifdef DEBUG |
1239 void Print(); | 1235 void Print(); |
1240 void PrintHandles(); | 1236 void PrintHandles(); |
1241 | 1237 |
1242 // Verify the heap is in its normal state before or after a GC. | 1238 // Verify the heap is in its normal state before or after a GC. |
1243 void Verify(); | 1239 void Verify(); |
1244 | 1240 |
1245 void OldPointerSpaceCheckStoreBuffer(); | 1241 void OldPointerSpaceCheckStoreBuffer(); |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1582 void SetArgumentsAdaptorDeoptPCOffset(int pc_offset) { | 1578 void SetArgumentsAdaptorDeoptPCOffset(int pc_offset) { |
1583 ASSERT(arguments_adaptor_deopt_pc_offset() == Smi::FromInt(0)); | 1579 ASSERT(arguments_adaptor_deopt_pc_offset() == Smi::FromInt(0)); |
1584 set_arguments_adaptor_deopt_pc_offset(Smi::FromInt(pc_offset)); | 1580 set_arguments_adaptor_deopt_pc_offset(Smi::FromInt(pc_offset)); |
1585 } | 1581 } |
1586 | 1582 |
1587 void SetConstructStubDeoptPCOffset(int pc_offset) { | 1583 void SetConstructStubDeoptPCOffset(int pc_offset) { |
1588 ASSERT(construct_stub_deopt_pc_offset() == Smi::FromInt(0)); | 1584 ASSERT(construct_stub_deopt_pc_offset() == Smi::FromInt(0)); |
1589 set_construct_stub_deopt_pc_offset(Smi::FromInt(pc_offset)); | 1585 set_construct_stub_deopt_pc_offset(Smi::FromInt(pc_offset)); |
1590 } | 1586 } |
1591 | 1587 |
1592 void SetSetterStubDeoptPCOffset(int pc_offset) { | |
1593 ASSERT(setter_stub_deopt_pc_offset() == Smi::FromInt(0)); | |
1594 set_setter_stub_deopt_pc_offset(Smi::FromInt(pc_offset)); | |
1595 } | |
1596 | |
1597 // For post mortem debugging. | 1588 // For post mortem debugging. |
1598 void RememberUnmappedPage(Address page, bool compacted); | 1589 void RememberUnmappedPage(Address page, bool compacted); |
1599 | 1590 |
1600 // Global inline caching age: it is incremented on some GCs after context | 1591 // Global inline caching age: it is incremented on some GCs after context |
1601 // disposal. We use it to flush inline caches. | 1592 // disposal. We use it to flush inline caches. |
1602 int global_ic_age() { | 1593 int global_ic_age() { |
1603 return global_ic_age_; | 1594 return global_ic_age_; |
1604 } | 1595 } |
1605 | 1596 |
1606 void AgeInlineCaches() { | 1597 void AgeInlineCaches() { |
1607 global_ic_age_ = (global_ic_age_ + 1) & SharedFunctionInfo::ICAgeBits::kMax; | 1598 global_ic_age_ = (global_ic_age_ + 1) & SharedFunctionInfo::ICAgeBits::kMax; |
1608 } | 1599 } |
1609 | 1600 |
1610 bool flush_monomorphic_ics() { return flush_monomorphic_ics_; } | |
1611 | |
1612 intptr_t amount_of_external_allocated_memory() { | 1601 intptr_t amount_of_external_allocated_memory() { |
1613 return amount_of_external_allocated_memory_; | 1602 return amount_of_external_allocated_memory_; |
1614 } | 1603 } |
1615 | 1604 |
1616 // ObjectStats are kept in two arrays, counts and sizes. Related stats are | 1605 // ObjectStats are kept in two arrays, counts and sizes. Related stats are |
1617 // stored in a contiguous linear buffer. Stats groups are stored one after | 1606 // stored in a contiguous linear buffer. Stats groups are stored one after |
1618 // another. | 1607 // another. |
1619 enum { | 1608 enum { |
1620 FIRST_CODE_KIND_SUB_TYPE = LAST_TYPE + 1, | 1609 FIRST_CODE_KIND_SUB_TYPE = LAST_TYPE + 1, |
1621 FIRST_FIXED_ARRAY_SUB_TYPE = | 1610 FIRST_FIXED_ARRAY_SUB_TYPE = |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1687 int sweep_generation_; | 1676 int sweep_generation_; |
1688 | 1677 |
1689 int always_allocate_scope_depth_; | 1678 int always_allocate_scope_depth_; |
1690 int linear_allocation_scope_depth_; | 1679 int linear_allocation_scope_depth_; |
1691 | 1680 |
1692 // For keeping track of context disposals. | 1681 // For keeping track of context disposals. |
1693 int contexts_disposed_; | 1682 int contexts_disposed_; |
1694 | 1683 |
1695 int global_ic_age_; | 1684 int global_ic_age_; |
1696 | 1685 |
1697 bool flush_monomorphic_ics_; | |
1698 | |
1699 int scan_on_scavenge_pages_; | 1686 int scan_on_scavenge_pages_; |
1700 | 1687 |
1701 #if defined(V8_TARGET_ARCH_X64) | 1688 #if defined(V8_TARGET_ARCH_X64) |
1702 static const int kMaxObjectSizeInNewSpace = 1024*KB; | 1689 static const int kMaxObjectSizeInNewSpace = 1024*KB; |
1703 #else | 1690 #else |
1704 static const int kMaxObjectSizeInNewSpace = 512*KB; | 1691 static const int kMaxObjectSizeInNewSpace = 512*KB; |
1705 #endif | 1692 #endif |
1706 | 1693 |
1707 NewSpace new_space_; | 1694 NewSpace new_space_; |
1708 OldSpace* old_pointer_space_; | 1695 OldSpace* old_pointer_space_; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1782 // by global handles | 1769 // by global handles |
1783 intptr_t amount_of_external_allocated_memory_; | 1770 intptr_t amount_of_external_allocated_memory_; |
1784 | 1771 |
1785 // Caches the amount of external memory registered at the last global gc. | 1772 // Caches the amount of external memory registered at the last global gc. |
1786 intptr_t amount_of_external_allocated_memory_at_last_global_gc_; | 1773 intptr_t amount_of_external_allocated_memory_at_last_global_gc_; |
1787 | 1774 |
1788 // Indicates that an allocation has failed in the old generation since the | 1775 // Indicates that an allocation has failed in the old generation since the |
1789 // last GC. | 1776 // last GC. |
1790 int old_gen_exhausted_; | 1777 int old_gen_exhausted_; |
1791 | 1778 |
1792 Object* native_contexts_list_; | 1779 Object* global_contexts_list_; |
1793 | 1780 |
1794 StoreBufferRebuilder store_buffer_rebuilder_; | 1781 StoreBufferRebuilder store_buffer_rebuilder_; |
1795 | 1782 |
1796 struct StringTypeTable { | 1783 struct StringTypeTable { |
1797 InstanceType type; | 1784 InstanceType type; |
1798 int size; | 1785 int size; |
1799 RootListIndex index; | 1786 RootListIndex index; |
1800 }; | 1787 }; |
1801 | 1788 |
1802 struct ConstantSymbolTable { | 1789 struct ConstantSymbolTable { |
(...skipping 983 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2786 AssertNoAllocation no_alloc; // i.e. no gc allowed. | 2773 AssertNoAllocation no_alloc; // i.e. no gc allowed. |
2787 | 2774 |
2788 private: | 2775 private: |
2789 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); | 2776 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); |
2790 }; | 2777 }; |
2791 #endif // DEBUG || LIVE_OBJECT_LIST | 2778 #endif // DEBUG || LIVE_OBJECT_LIST |
2792 | 2779 |
2793 } } // namespace v8::internal | 2780 } } // namespace v8::internal |
2794 | 2781 |
2795 #endif // V8_HEAP_H_ | 2782 #endif // V8_HEAP_H_ |
OLD | NEW |