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

Side by Side Diff: src/heap.h

Issue 39973003: Merge bleeding_edge. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/parser
Patch Set: again Created 7 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « src/harmony-math.js ('k') | src/heap.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 // 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
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
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
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
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
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
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
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
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
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
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_
OLDNEW
« no previous file with comments | « src/harmony-math.js ('k') | src/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698