Index: src/heap.h |
diff --git a/src/heap.h b/src/heap.h |
index c9101bea9f71687ff9c73f559f081fddc2f137c0..fae21176617e17780d17857ce751e3f8467ae939 100644 |
--- a/src/heap.h |
+++ b/src/heap.h |
@@ -201,12 +201,58 @@ namespace internal { |
V(Symbol, elements_transition_symbol, ElementsTransitionSymbol) \ |
V(SeededNumberDictionary, empty_slow_element_dictionary, \ |
EmptySlowElementDictionary) \ |
- V(Symbol, observed_symbol, ObservedSymbol) |
+ V(Symbol, observed_symbol, ObservedSymbol) \ |
+ V(FixedArray, materialized_objects, MaterializedObjects) |
#define ROOT_LIST(V) \ |
STRONG_ROOT_LIST(V) \ |
V(StringTable, string_table, StringTable) |
+// Heap roots that are known to be immortal immovable, for which we can safely |
+// skip write barriers. |
+#define IMMORTAL_IMMOVABLE_ROOT_LIST(V) \ |
+ V(byte_array_map) \ |
+ V(free_space_map) \ |
+ V(one_pointer_filler_map) \ |
+ V(two_pointer_filler_map) \ |
+ V(undefined_value) \ |
+ V(the_hole_value) \ |
+ V(null_value) \ |
+ V(true_value) \ |
+ V(false_value) \ |
+ V(uninitialized_value) \ |
+ V(cell_map) \ |
+ V(global_property_cell_map) \ |
+ V(shared_function_info_map) \ |
+ V(meta_map) \ |
+ V(heap_number_map) \ |
+ V(native_context_map) \ |
+ V(fixed_array_map) \ |
+ V(code_map) \ |
+ V(scope_info_map) \ |
+ V(fixed_cow_array_map) \ |
+ V(fixed_double_array_map) \ |
+ V(constant_pool_array_map) \ |
+ V(no_interceptor_result_sentinel) \ |
+ V(hash_table_map) \ |
+ V(empty_fixed_array) \ |
+ V(empty_byte_array) \ |
+ V(empty_descriptor_array) \ |
+ V(empty_constant_pool_array) \ |
+ V(arguments_marker) \ |
+ V(symbol_map) \ |
+ V(non_strict_arguments_elements_map) \ |
+ V(function_context_map) \ |
+ V(catch_context_map) \ |
+ V(with_context_map) \ |
+ V(block_context_map) \ |
+ V(module_context_map) \ |
+ V(global_context_map) \ |
+ V(oddball_map) \ |
+ V(message_object_map) \ |
+ V(foreign_map) \ |
+ V(neander_map) |
+ |
#define INTERNALIZED_STRING_LIST(V) \ |
V(Array_string, "Array") \ |
V(Object_string, "Object") \ |
@@ -1367,6 +1413,10 @@ class Heap { |
roots_[kStoreBufferTopRootIndex] = reinterpret_cast<Smi*>(top); |
} |
+ void public_set_materialized_objects(FixedArray* objects) { |
+ roots_[kMaterializedObjectsRootIndex] = objects; |
+ } |
+ |
// Generated code can embed this address to get access to the roots. |
Object** roots_array_start() { return roots_; } |
@@ -1512,17 +1562,11 @@ class Heap { |
8 * (Page::kPageSize > MB ? Page::kPageSize : MB); |
intptr_t OldGenerationAllocationLimit(intptr_t old_gen_size) { |
- const int divisor = FLAG_stress_compaction ? 10 : |
- new_space_high_promotion_mode_active_ ? 1 : 3; |
+ const int divisor = FLAG_stress_compaction ? 10 : 1; |
intptr_t limit = |
Max(old_gen_size + old_gen_size / divisor, |
kMinimumOldGenerationAllocationLimit); |
limit += new_space_.Capacity(); |
- // TODO(hpayer): Can be removed when when pretenuring is supported for all |
- // allocation sites. |
- if (IsHighSurvivalRate() && IsStableOrIncreasingSurvivalTrend()) { |
- limit *= 2; |
- } |
intptr_t halfway_to_the_max = (old_gen_size + max_old_generation_size_) / 2; |
return Min(limit, halfway_to_the_max); |
} |
@@ -2134,7 +2178,6 @@ class Heap { |
NO_INLINE(void CreateJSConstructEntryStub()); |
void CreateFixedStubs(); |
- void CreateStubsRequiringBuiltins(); |
MUST_USE_RESULT MaybeObject* CreateOddball(const char* to_string, |
Object* to_number, |