Chromium Code Reviews| Index: src/factory.cc |
| diff --git a/src/factory.cc b/src/factory.cc |
| index c3a3b1570ffac982490b184681f153691e8e021b..c1d430818c724956a3ba3ab119686a1e351a00e7 100644 |
| --- a/src/factory.cc |
| +++ b/src/factory.cc |
| @@ -1324,7 +1324,8 @@ Handle<JSFunction> Factory::NewFunctionFromSharedFunctionInfo( |
| } else if (!info->bound()) { |
| int number_of_literals = info->num_literals(); |
| - Handle<FixedArray> literals = NewFixedArray(number_of_literals, pretenure); |
| + Handle<LiteralsArray> literals = NewLiteralsArray( |
| + handle(info->feedback_vector()), number_of_literals, pretenure); |
| result->set_literals(*literals); |
| // Cache context-specific literals. |
| if (FLAG_cache_optimized_code) { |
| @@ -2086,6 +2087,17 @@ Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo( |
| } |
| +Handle<LiteralsArray> Factory::NewLiteralsArray( |
| + Handle<TypeFeedbackVector> vector, int number_of_literals, |
| + PretenureFlag pretenure) { |
| + Handle<FixedArray> literals = |
| + NewFixedArray(LiteralsArray::SizeFor(number_of_literals), pretenure); |
|
Igor Sheludko
2015/09/28 16:35:27
I'm afraid that here we will actually call FixedAr
mvstanton
2015/09/29 08:25:13
Okay, I see I was using SizeFor incorrectly. It is
|
| + Handle<LiteralsArray> casted_literals = Handle<LiteralsArray>::cast(literals); |
| + casted_literals->set_feedback_vector(*vector); |
| + return casted_literals; |
| +} |
| + |
| + |
| Handle<JSMessageObject> Factory::NewJSMessageObject( |
| MessageTemplate::Template message, Handle<Object> argument, |
| int start_position, int end_position, Handle<Object> script, |