Index: src/runtime/runtime-scopes.cc |
diff --git a/src/runtime/runtime-scopes.cc b/src/runtime/runtime-scopes.cc |
index a138fff5c34db05a0263bf7636ec6fd010940e64..2f4da3cbc03c660be29ddc4096dcc5eaad404600 100644 |
--- a/src/runtime/runtime-scopes.cc |
+++ b/src/runtime/runtime-scopes.cc |
@@ -613,10 +613,15 @@ RUNTIME_FUNCTION(Runtime_NewClosure) { |
HandleScope scope(isolate); |
DCHECK_EQ(3, args.length()); |
CONVERT_ARG_HANDLE_CHECKED(SharedFunctionInfo, shared, 0); |
+ CONVERT_ARG_HANDLE_CHECKED(TypeFeedbackVector, vector, 1); |
+ CONVERT_SMI_ARG_CHECKED(index, 2); |
Handle<Context> context(isolate->context(), isolate); |
+ FeedbackVectorSlot slot = TypeFeedbackVector::ToSlot(index); |
+ Handle<LiteralsArray> literals(LiteralsArray::cast(vector->Get(slot)), |
+ isolate); |
Handle<JSFunction> function = |
- isolate->factory()->NewFunctionFromSharedFunctionInfo(shared, context, |
- NOT_TENURED); |
+ isolate->factory()->NewFunctionFromSharedFunctionInfo( |
+ shared, context, literals, NOT_TENURED); |
return *function; |
} |
@@ -625,12 +630,17 @@ RUNTIME_FUNCTION(Runtime_NewClosure_Tenured) { |
HandleScope scope(isolate); |
DCHECK_EQ(3, args.length()); |
CONVERT_ARG_HANDLE_CHECKED(SharedFunctionInfo, shared, 0); |
+ CONVERT_ARG_HANDLE_CHECKED(TypeFeedbackVector, vector, 1); |
+ CONVERT_SMI_ARG_CHECKED(index, 2); |
Handle<Context> context(isolate->context(), isolate); |
+ FeedbackVectorSlot slot = TypeFeedbackVector::ToSlot(index); |
+ Handle<LiteralsArray> literals(LiteralsArray::cast(vector->Get(slot)), |
+ isolate); |
// The caller ensures that we pretenure closures that are assigned |
// directly to properties. |
Handle<JSFunction> function = |
isolate->factory()->NewFunctionFromSharedFunctionInfo(shared, context, |
- TENURED); |
+ literals, TENURED); |
return *function; |
} |