| 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 |