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, |