Index: src/factory.cc |
diff --git a/src/factory.cc b/src/factory.cc |
index 3c3b187f7d02b9b497c47b01eca0de1f4aa58efb..b3f79a182897ec52afc052f227e8276fd624b784 100644 |
--- a/src/factory.cc |
+++ b/src/factory.cc |
@@ -179,7 +179,6 @@ Handle<TypeFeedbackInfo> Factory::NewTypeFeedbackInfo() { |
Handle<TypeFeedbackInfo> info = |
Handle<TypeFeedbackInfo>::cast(NewStruct(TYPE_FEEDBACK_INFO_TYPE)); |
info->initialize_storage(); |
- info->set_feedback_vector(*empty_fixed_array(), SKIP_WRITE_BARRIER); |
return info; |
} |
@@ -1814,15 +1813,32 @@ void Factory::BecomeJSFunction(Handle<JSReceiver> object) { |
} |
+Handle<FixedArray> Factory::NewTypeFeedbackVector(int slot_count) { |
+ // Ensure we can skip the write barrier |
+ ASSERT_EQ(isolate()->heap()->uninitialized_symbol(), |
+ *TypeFeedbackInfo::UninitializedSentinel(isolate())); |
+ |
+ CALL_HEAP_FUNCTION( |
+ isolate(), |
+ isolate()->heap()->AllocateFixedArrayWithFiller( |
+ slot_count, |
+ TENURED, |
+ *TypeFeedbackInfo::UninitializedSentinel(isolate())), |
+ FixedArray); |
+} |
+ |
+ |
Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo( |
Handle<String> name, |
int number_of_literals, |
bool is_generator, |
Handle<Code> code, |
- Handle<ScopeInfo> scope_info) { |
+ Handle<ScopeInfo> scope_info, |
+ Handle<FixedArray> feedback_vector) { |
Handle<SharedFunctionInfo> shared = NewSharedFunctionInfo(name); |
shared->set_code(*code); |
shared->set_scope_info(*scope_info); |
+ shared->set_feedback_vector(*feedback_vector); |
int literals_array_size = number_of_literals; |
// If the function contains object, regexp or array literals, |
// allocate extra space for a literals array prefix containing the |
@@ -1880,6 +1896,7 @@ Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo(Handle<String> name) { |
share->set_script(*undefined_value(), SKIP_WRITE_BARRIER); |
share->set_debug_info(*undefined_value(), SKIP_WRITE_BARRIER); |
share->set_inferred_name(*empty_string(), SKIP_WRITE_BARRIER); |
+ share->set_feedback_vector(*empty_fixed_array(), SKIP_WRITE_BARRIER); |
share->set_initial_map(*undefined_value(), SKIP_WRITE_BARRIER); |
share->set_profiler_ticks(0); |
share->set_ast_node_count(0); |