| 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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 V(Map, global_property_cell_map, GlobalPropertyCellMap) \ | 64 V(Map, global_property_cell_map, GlobalPropertyCellMap) \ |
| 65 V(Map, shared_function_info_map, SharedFunctionInfoMap) \ | 65 V(Map, shared_function_info_map, SharedFunctionInfoMap) \ |
| 66 V(Map, meta_map, MetaMap) \ | 66 V(Map, meta_map, MetaMap) \ |
| 67 V(Map, heap_number_map, HeapNumberMap) \ | 67 V(Map, heap_number_map, HeapNumberMap) \ |
| 68 V(Map, native_context_map, NativeContextMap) \ | 68 V(Map, native_context_map, NativeContextMap) \ |
| 69 V(Map, fixed_array_map, FixedArrayMap) \ | 69 V(Map, fixed_array_map, FixedArrayMap) \ |
| 70 V(Map, code_map, CodeMap) \ | 70 V(Map, code_map, CodeMap) \ |
| 71 V(Map, scope_info_map, ScopeInfoMap) \ | 71 V(Map, scope_info_map, ScopeInfoMap) \ |
| 72 V(Map, fixed_cow_array_map, FixedCOWArrayMap) \ | 72 V(Map, fixed_cow_array_map, FixedCOWArrayMap) \ |
| 73 V(Map, fixed_double_array_map, FixedDoubleArrayMap) \ | 73 V(Map, fixed_double_array_map, FixedDoubleArrayMap) \ |
| 74 V(Map, constant_pool_array_map, ConstantPoolArrayMap) \ |
| 74 V(Object, no_interceptor_result_sentinel, NoInterceptorResultSentinel) \ | 75 V(Object, no_interceptor_result_sentinel, NoInterceptorResultSentinel) \ |
| 75 V(Map, hash_table_map, HashTableMap) \ | 76 V(Map, hash_table_map, HashTableMap) \ |
| 76 V(FixedArray, empty_fixed_array, EmptyFixedArray) \ | 77 V(FixedArray, empty_fixed_array, EmptyFixedArray) \ |
| 77 V(ByteArray, empty_byte_array, EmptyByteArray) \ | 78 V(ByteArray, empty_byte_array, EmptyByteArray) \ |
| 78 V(DescriptorArray, empty_descriptor_array, EmptyDescriptorArray) \ | 79 V(DescriptorArray, empty_descriptor_array, EmptyDescriptorArray) \ |
| 79 V(Smi, stack_limit, StackLimit) \ | 80 V(Smi, stack_limit, StackLimit) \ |
| 80 V(Oddball, arguments_marker, ArgumentsMarker) \ | 81 V(Oddball, arguments_marker, ArgumentsMarker) \ |
| 81 /* The roots above this line should be boring from a GC point of view. */ \ | 82 /* The roots above this line should be boring from a GC point of view. */ \ |
| 82 /* This means they are never in new space and never on a page that is */ \ | 83 /* This means they are never in new space and never on a page that is */ \ |
| 83 /* being compacted. */ \ | 84 /* being compacted. */ \ |
| (...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 653 int capacity, | 654 int capacity, |
| 654 ArrayStorageAllocationMode mode = DONT_INITIALIZE_ARRAY_ELEMENTS); | 655 ArrayStorageAllocationMode mode = DONT_INITIALIZE_ARRAY_ELEMENTS); |
| 655 | 656 |
| 656 // Allocate a JSArray with no elements | 657 // Allocate a JSArray with no elements |
| 657 MUST_USE_RESULT MaybeObject* AllocateJSArrayWithElements( | 658 MUST_USE_RESULT MaybeObject* AllocateJSArrayWithElements( |
| 658 FixedArrayBase* array_base, | 659 FixedArrayBase* array_base, |
| 659 ElementsKind elements_kind, | 660 ElementsKind elements_kind, |
| 660 int length, | 661 int length, |
| 661 PretenureFlag pretenure = NOT_TENURED); | 662 PretenureFlag pretenure = NOT_TENURED); |
| 662 | 663 |
| 663 // Allocates and initializes a new global object based on a constructor. | |
| 664 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | |
| 665 // failed. | |
| 666 // Please note this does not perform a garbage collection. | |
| 667 MUST_USE_RESULT MaybeObject* AllocateGlobalObject(JSFunction* constructor); | |
| 668 | |
| 669 // Returns a deep copy of the JavaScript object. | 664 // Returns a deep copy of the JavaScript object. |
| 670 // Properties and elements are copied too. | 665 // Properties and elements are copied too. |
| 671 // Returns failure if allocation failed. | 666 // Returns failure if allocation failed. |
| 672 // Optionally takes an AllocationSite to be appended in an AllocationMemento. | 667 // Optionally takes an AllocationSite to be appended in an AllocationMemento. |
| 673 MUST_USE_RESULT MaybeObject* CopyJSObject(JSObject* source, | 668 MUST_USE_RESULT MaybeObject* CopyJSObject(JSObject* source, |
| 674 AllocationSite* site = NULL); | 669 AllocationSite* site = NULL); |
| 675 | 670 |
| 676 // Allocates the function prototype. | 671 // Allocates the function prototype. |
| 677 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | 672 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation |
| 678 // failed. | 673 // failed. |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 880 ExternalArrayType array_type, | 875 ExternalArrayType array_type, |
| 881 void* external_pointer, | 876 void* external_pointer, |
| 882 PretenureFlag pretenure); | 877 PretenureFlag pretenure); |
| 883 | 878 |
| 884 // Allocate a symbol in old space. | 879 // Allocate a symbol in old space. |
| 885 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | 880 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation |
| 886 // failed. | 881 // failed. |
| 887 // Please note this does not perform a garbage collection. | 882 // Please note this does not perform a garbage collection. |
| 888 MUST_USE_RESULT MaybeObject* AllocateSymbol(); | 883 MUST_USE_RESULT MaybeObject* AllocateSymbol(); |
| 889 | 884 |
| 890 // Allocate a tenured simple cell. | |
| 891 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | |
| 892 // failed. | |
| 893 // Please note this does not perform a garbage collection. | |
| 894 MUST_USE_RESULT MaybeObject* AllocateCell(Object* value); | |
| 895 | |
| 896 // Allocate a tenured JS global property cell. | |
| 897 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | |
| 898 // failed. | |
| 899 // Please note this does not perform a garbage collection. | |
| 900 MUST_USE_RESULT MaybeObject* AllocatePropertyCell(Object* value); | |
| 901 | |
| 902 // Allocate Box. | |
| 903 MUST_USE_RESULT MaybeObject* AllocateBox(Object* value, | |
| 904 PretenureFlag pretenure); | |
| 905 | |
| 906 // Allocate a tenured AllocationSite. It's payload is null | 885 // Allocate a tenured AllocationSite. It's payload is null |
| 907 MUST_USE_RESULT MaybeObject* AllocateAllocationSite(); | 886 MUST_USE_RESULT MaybeObject* AllocateAllocationSite(); |
| 908 | 887 |
| 909 // Allocates a fixed array initialized with undefined values | 888 // Allocates a fixed array initialized with undefined values |
| 910 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | 889 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation |
| 911 // failed. | 890 // failed. |
| 912 // Please note this does not perform a garbage collection. | 891 // Please note this does not perform a garbage collection. |
| 913 MUST_USE_RESULT MaybeObject* AllocateFixedArray( | 892 MUST_USE_RESULT MaybeObject* AllocateFixedArray( |
| 914 int length, | 893 int length, |
| 915 PretenureFlag pretenure = NOT_TENURED); | 894 PretenureFlag pretenure = NOT_TENURED); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 936 // Make a copy of src and return it. Returns | 915 // Make a copy of src and return it. Returns |
| 937 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. | 916 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. |
| 938 MUST_USE_RESULT inline MaybeObject* CopyFixedDoubleArray( | 917 MUST_USE_RESULT inline MaybeObject* CopyFixedDoubleArray( |
| 939 FixedDoubleArray* src); | 918 FixedDoubleArray* src); |
| 940 | 919 |
| 941 // Make a copy of src, set the map, and return the copy. Returns | 920 // Make a copy of src, set the map, and return the copy. Returns |
| 942 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. | 921 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. |
| 943 MUST_USE_RESULT MaybeObject* CopyFixedDoubleArrayWithMap( | 922 MUST_USE_RESULT MaybeObject* CopyFixedDoubleArrayWithMap( |
| 944 FixedDoubleArray* src, Map* map); | 923 FixedDoubleArray* src, Map* map); |
| 945 | 924 |
| 925 // Make a copy of src and return it. Returns |
| 926 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. |
| 927 MUST_USE_RESULT inline MaybeObject* CopyConstantPoolArray( |
| 928 ConstantPoolArray* src); |
| 929 |
| 930 // Make a copy of src, set the map, and return the copy. Returns |
| 931 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. |
| 932 MUST_USE_RESULT MaybeObject* CopyConstantPoolArrayWithMap( |
| 933 ConstantPoolArray* src, Map* map); |
| 934 |
| 946 // Allocates a fixed array initialized with the hole values. | 935 // Allocates a fixed array initialized with the hole values. |
| 947 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | 936 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation |
| 948 // failed. | 937 // failed. |
| 949 // Please note this does not perform a garbage collection. | 938 // Please note this does not perform a garbage collection. |
| 950 MUST_USE_RESULT MaybeObject* AllocateFixedArrayWithHoles( | 939 MUST_USE_RESULT MaybeObject* AllocateFixedArrayWithHoles( |
| 951 int length, | 940 int length, |
| 952 PretenureFlag pretenure = NOT_TENURED); | 941 PretenureFlag pretenure = NOT_TENURED); |
| 953 | 942 |
| 943 MUST_USE_RESULT MaybeObject* AllocateConstantPoolArray( |
| 944 int first_int64_index, |
| 945 int first_ptr_index, |
| 946 int first_int32_index); |
| 947 |
| 954 // Allocates a fixed double array with uninitialized values. Returns | 948 // Allocates a fixed double array with uninitialized values. Returns |
| 955 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. | 949 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. |
| 956 // Please note this does not perform a garbage collection. | 950 // Please note this does not perform a garbage collection. |
| 957 MUST_USE_RESULT MaybeObject* AllocateUninitializedFixedDoubleArray( | 951 MUST_USE_RESULT MaybeObject* AllocateUninitializedFixedDoubleArray( |
| 958 int length, | 952 int length, |
| 959 PretenureFlag pretenure = NOT_TENURED); | 953 PretenureFlag pretenure = NOT_TENURED); |
| 960 | 954 |
| 961 // Allocates a fixed double array with hole values. Returns | 955 // Allocates a fixed double array with hole values. Returns |
| 962 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. | 956 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. |
| 963 // Please note this does not perform a garbage collection. | 957 // Please note this does not perform a garbage collection. |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1124 // Initialize a filler object to keep the ability to iterate over the heap | 1118 // Initialize a filler object to keep the ability to iterate over the heap |
| 1125 // when shortening objects. | 1119 // when shortening objects. |
| 1126 void CreateFillerObjectAt(Address addr, int size); | 1120 void CreateFillerObjectAt(Address addr, int size); |
| 1127 | 1121 |
| 1128 // Makes a new native code object | 1122 // Makes a new native code object |
| 1129 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | 1123 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation |
| 1130 // failed. On success, the pointer to the Code object is stored in the | 1124 // failed. On success, the pointer to the Code object is stored in the |
| 1131 // self_reference. This allows generated code to reference its own Code | 1125 // self_reference. This allows generated code to reference its own Code |
| 1132 // object by containing this pointer. | 1126 // object by containing this pointer. |
| 1133 // Please note this function does not perform a garbage collection. | 1127 // Please note this function does not perform a garbage collection. |
| 1134 MUST_USE_RESULT MaybeObject* CreateCode(const CodeDesc& desc, | 1128 MUST_USE_RESULT MaybeObject* CreateCode( |
| 1135 Code::Flags flags, | 1129 const CodeDesc& desc, |
| 1136 Handle<Object> self_reference, | 1130 Code::Flags flags, |
| 1137 bool immovable = false, | 1131 Handle<Object> self_reference, |
| 1138 bool crankshafted = false); | 1132 bool immovable = false, |
| 1133 bool crankshafted = false, |
| 1134 int prologue_offset = Code::kPrologueOffsetNotSet); |
| 1139 | 1135 |
| 1140 MUST_USE_RESULT MaybeObject* CopyCode(Code* code); | 1136 MUST_USE_RESULT MaybeObject* CopyCode(Code* code); |
| 1141 | 1137 |
| 1142 // Copy the code and scope info part of the code object, but insert | 1138 // Copy the code and scope info part of the code object, but insert |
| 1143 // the provided data as the relocation information. | 1139 // the provided data as the relocation information. |
| 1144 MUST_USE_RESULT MaybeObject* CopyCode(Code* code, Vector<byte> reloc_info); | 1140 MUST_USE_RESULT MaybeObject* CopyCode(Code* code, Vector<byte> reloc_info); |
| 1145 | 1141 |
| 1146 // Finds the internalized copy for string in the string table. | 1142 // Finds the internalized copy for string in the string table. |
| 1147 // If not found, a new string is added to the table and returned. | 1143 // If not found, a new string is added to the table and returned. |
| 1148 // Returns Failure::RetryAfterGC(requested_bytes, space) if allocation | 1144 // Returns Failure::RetryAfterGC(requested_bytes, space) if allocation |
| (...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1653 GCTracer* tracer() { return tracer_; } | 1649 GCTracer* tracer() { return tracer_; } |
| 1654 | 1650 |
| 1655 // Returns the size of objects residing in non new spaces. | 1651 // Returns the size of objects residing in non new spaces. |
| 1656 intptr_t PromotedSpaceSizeOfObjects(); | 1652 intptr_t PromotedSpaceSizeOfObjects(); |
| 1657 | 1653 |
| 1658 double total_regexp_code_generated() { return total_regexp_code_generated_; } | 1654 double total_regexp_code_generated() { return total_regexp_code_generated_; } |
| 1659 void IncreaseTotalRegexpCodeGenerated(int size) { | 1655 void IncreaseTotalRegexpCodeGenerated(int size) { |
| 1660 total_regexp_code_generated_ += size; | 1656 total_regexp_code_generated_ += size; |
| 1661 } | 1657 } |
| 1662 | 1658 |
| 1659 void IncrementCodeGeneratedBytes(bool is_crankshafted, int size) { |
| 1660 if (is_crankshafted) { |
| 1661 crankshaft_codegen_bytes_generated_ += size; |
| 1662 } else { |
| 1663 full_codegen_bytes_generated_ += size; |
| 1664 } |
| 1665 } |
| 1666 |
| 1663 // Returns maximum GC pause. | 1667 // Returns maximum GC pause. |
| 1664 double get_max_gc_pause() { return max_gc_pause_; } | 1668 double get_max_gc_pause() { return max_gc_pause_; } |
| 1665 | 1669 |
| 1666 // Returns maximum size of objects alive after GC. | 1670 // Returns maximum size of objects alive after GC. |
| 1667 intptr_t get_max_alive_after_gc() { return max_alive_after_gc_; } | 1671 intptr_t get_max_alive_after_gc() { return max_alive_after_gc_; } |
| 1668 | 1672 |
| 1669 // Returns minimal interval between two subsequent collections. | 1673 // Returns minimal interval between two subsequent collections. |
| 1670 double get_min_in_mutator() { return min_in_mutator_; } | 1674 double get_min_in_mutator() { return min_in_mutator_; } |
| 1671 | 1675 |
| 1672 // TODO(hpayer): remove, should be handled by GCTracer | 1676 // TODO(hpayer): remove, should be handled by GCTracer |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1799 return amount_of_external_allocated_memory_; | 1803 return amount_of_external_allocated_memory_; |
| 1800 } | 1804 } |
| 1801 | 1805 |
| 1802 // ObjectStats are kept in two arrays, counts and sizes. Related stats are | 1806 // ObjectStats are kept in two arrays, counts and sizes. Related stats are |
| 1803 // stored in a contiguous linear buffer. Stats groups are stored one after | 1807 // stored in a contiguous linear buffer. Stats groups are stored one after |
| 1804 // another. | 1808 // another. |
| 1805 enum { | 1809 enum { |
| 1806 FIRST_CODE_KIND_SUB_TYPE = LAST_TYPE + 1, | 1810 FIRST_CODE_KIND_SUB_TYPE = LAST_TYPE + 1, |
| 1807 FIRST_FIXED_ARRAY_SUB_TYPE = | 1811 FIRST_FIXED_ARRAY_SUB_TYPE = |
| 1808 FIRST_CODE_KIND_SUB_TYPE + Code::NUMBER_OF_KINDS, | 1812 FIRST_CODE_KIND_SUB_TYPE + Code::NUMBER_OF_KINDS, |
| 1809 OBJECT_STATS_COUNT = | 1813 FIRST_CODE_AGE_SUB_TYPE = |
| 1810 FIRST_FIXED_ARRAY_SUB_TYPE + LAST_FIXED_ARRAY_SUB_TYPE + 1 | 1814 FIRST_FIXED_ARRAY_SUB_TYPE + LAST_FIXED_ARRAY_SUB_TYPE + 1, |
| 1815 OBJECT_STATS_COUNT = FIRST_CODE_AGE_SUB_TYPE + Code::kLastCodeAge + 1 |
| 1811 }; | 1816 }; |
| 1812 | 1817 |
| 1813 void RecordObjectStats(InstanceType type, int sub_type, size_t size) { | 1818 void RecordObjectStats(InstanceType type, size_t size) { |
| 1814 ASSERT(type <= LAST_TYPE); | 1819 ASSERT(type <= LAST_TYPE); |
| 1815 if (sub_type < 0) { | 1820 object_counts_[type]++; |
| 1816 object_counts_[type]++; | 1821 object_sizes_[type] += size; |
| 1817 object_sizes_[type] += size; | 1822 } |
| 1818 } else { | 1823 |
| 1819 if (type == CODE_TYPE) { | 1824 void RecordCodeSubTypeStats(int code_sub_type, int code_age, size_t size) { |
| 1820 ASSERT(sub_type < Code::NUMBER_OF_KINDS); | 1825 ASSERT(code_sub_type < Code::NUMBER_OF_KINDS); |
| 1821 object_counts_[FIRST_CODE_KIND_SUB_TYPE + sub_type]++; | 1826 ASSERT(code_age < Code::kLastCodeAge); |
| 1822 object_sizes_[FIRST_CODE_KIND_SUB_TYPE + sub_type] += size; | 1827 object_counts_[FIRST_CODE_KIND_SUB_TYPE + code_sub_type]++; |
| 1823 } else if (type == FIXED_ARRAY_TYPE) { | 1828 object_sizes_[FIRST_CODE_KIND_SUB_TYPE + code_sub_type] += size; |
| 1824 ASSERT(sub_type <= LAST_FIXED_ARRAY_SUB_TYPE); | 1829 object_counts_[FIRST_CODE_AGE_SUB_TYPE + code_age]++; |
| 1825 object_counts_[FIRST_FIXED_ARRAY_SUB_TYPE + sub_type]++; | 1830 object_sizes_[FIRST_CODE_AGE_SUB_TYPE + code_age] += size; |
| 1826 object_sizes_[FIRST_FIXED_ARRAY_SUB_TYPE + sub_type] += size; | 1831 } |
| 1827 } | 1832 |
| 1828 } | 1833 void RecordFixedArraySubTypeStats(int array_sub_type, size_t size) { |
| 1834 ASSERT(array_sub_type <= LAST_FIXED_ARRAY_SUB_TYPE); |
| 1835 object_counts_[FIRST_FIXED_ARRAY_SUB_TYPE + array_sub_type]++; |
| 1836 object_sizes_[FIRST_FIXED_ARRAY_SUB_TYPE + array_sub_type] += size; |
| 1829 } | 1837 } |
| 1830 | 1838 |
| 1831 void CheckpointObjectStats(); | 1839 void CheckpointObjectStats(); |
| 1832 | 1840 |
| 1833 // We don't use a LockGuard here since we want to lock the heap | 1841 // We don't use a LockGuard here since we want to lock the heap |
| 1834 // only when FLAG_concurrent_recompilation is true. | 1842 // only when FLAG_concurrent_recompilation is true. |
| 1835 class RelocationLock { | 1843 class RelocationLock { |
| 1836 public: | 1844 public: |
| 1837 explicit RelocationLock(Heap* heap); | 1845 explicit RelocationLock(Heap* heap); |
| 1838 | 1846 |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2134 // Allocate empty fixed array. | 2142 // Allocate empty fixed array. |
| 2135 MUST_USE_RESULT MaybeObject* AllocateEmptyFixedArray(); | 2143 MUST_USE_RESULT MaybeObject* AllocateEmptyFixedArray(); |
| 2136 | 2144 |
| 2137 // Allocate empty external array of given type. | 2145 // Allocate empty external array of given type. |
| 2138 MUST_USE_RESULT MaybeObject* AllocateEmptyExternalArray( | 2146 MUST_USE_RESULT MaybeObject* AllocateEmptyExternalArray( |
| 2139 ExternalArrayType array_type); | 2147 ExternalArrayType array_type); |
| 2140 | 2148 |
| 2141 // Allocate empty fixed double array. | 2149 // Allocate empty fixed double array. |
| 2142 MUST_USE_RESULT MaybeObject* AllocateEmptyFixedDoubleArray(); | 2150 MUST_USE_RESULT MaybeObject* AllocateEmptyFixedDoubleArray(); |
| 2143 | 2151 |
| 2152 // Allocate a tenured simple cell. |
| 2153 MUST_USE_RESULT MaybeObject* AllocateCell(Object* value); |
| 2154 |
| 2155 // Allocate a tenured JS global property cell initialized with the hole. |
| 2156 MUST_USE_RESULT MaybeObject* AllocatePropertyCell(); |
| 2157 |
| 2158 // Allocate Box. |
| 2159 MUST_USE_RESULT MaybeObject* AllocateBox(Object* value, |
| 2160 PretenureFlag pretenure); |
| 2161 |
| 2144 // Performs a minor collection in new generation. | 2162 // Performs a minor collection in new generation. |
| 2145 void Scavenge(); | 2163 void Scavenge(); |
| 2146 | 2164 |
| 2147 static String* UpdateNewSpaceReferenceInExternalStringTableEntry( | 2165 static String* UpdateNewSpaceReferenceInExternalStringTableEntry( |
| 2148 Heap* heap, | 2166 Heap* heap, |
| 2149 Object** pointer); | 2167 Object** pointer); |
| 2150 | 2168 |
| 2151 Address DoScavenge(ObjectVisitor* scavenge_visitor, Address new_space_front); | 2169 Address DoScavenge(ObjectVisitor* scavenge_visitor, Address new_space_front); |
| 2152 static void ScavengeStoreBufferCallback(Heap* heap, | 2170 static void ScavengeStoreBufferCallback(Heap* heap, |
| 2153 MemoryChunk* page, | 2171 MemoryChunk* page, |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2348 IncrementalMarking incremental_marking_; | 2366 IncrementalMarking incremental_marking_; |
| 2349 | 2367 |
| 2350 int number_idle_notifications_; | 2368 int number_idle_notifications_; |
| 2351 unsigned int last_idle_notification_gc_count_; | 2369 unsigned int last_idle_notification_gc_count_; |
| 2352 bool last_idle_notification_gc_count_init_; | 2370 bool last_idle_notification_gc_count_init_; |
| 2353 | 2371 |
| 2354 int mark_sweeps_since_idle_round_started_; | 2372 int mark_sweeps_since_idle_round_started_; |
| 2355 unsigned int gc_count_at_last_idle_gc_; | 2373 unsigned int gc_count_at_last_idle_gc_; |
| 2356 int scavenges_since_last_idle_round_; | 2374 int scavenges_since_last_idle_round_; |
| 2357 | 2375 |
| 2376 // These two counters are monotomically increasing and never reset. |
| 2377 size_t full_codegen_bytes_generated_; |
| 2378 size_t crankshaft_codegen_bytes_generated_; |
| 2379 |
| 2358 // If the --deopt_every_n_garbage_collections flag is set to a positive value, | 2380 // If the --deopt_every_n_garbage_collections flag is set to a positive value, |
| 2359 // this variable holds the number of garbage collections since the last | 2381 // this variable holds the number of garbage collections since the last |
| 2360 // deoptimization triggered by garbage collection. | 2382 // deoptimization triggered by garbage collection. |
| 2361 int gcs_since_last_deopt_; | 2383 int gcs_since_last_deopt_; |
| 2362 | 2384 |
| 2363 #ifdef VERIFY_HEAP | 2385 #ifdef VERIFY_HEAP |
| 2364 int no_weak_object_verification_scope_depth_; | 2386 int no_weak_object_verification_scope_depth_; |
| 2365 #endif | 2387 #endif |
| 2366 | 2388 |
| 2367 static const int kMaxMarkSweepsInIdleRound = 7; | 2389 static const int kMaxMarkSweepsInIdleRound = 7; |
| (...skipping 692 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3060 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. | 3082 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. |
| 3061 | 3083 |
| 3062 private: | 3084 private: |
| 3063 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); | 3085 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); |
| 3064 }; | 3086 }; |
| 3065 #endif // DEBUG | 3087 #endif // DEBUG |
| 3066 | 3088 |
| 3067 } } // namespace v8::internal | 3089 } } // namespace v8::internal |
| 3068 | 3090 |
| 3069 #endif // V8_HEAP_H_ | 3091 #endif // V8_HEAP_H_ |
| OLD | NEW |