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