| Index: src/runtime/runtime-scopes.cc
|
| diff --git a/src/runtime/runtime-scopes.cc b/src/runtime/runtime-scopes.cc
|
| index 9d35ffaed28305a53905ba8b13499619e0038a53..c48075a1faf87fba3c441caf6b192f20fa6e672b 100644
|
| --- a/src/runtime/runtime-scopes.cc
|
| +++ b/src/runtime/runtime-scopes.cc
|
| @@ -525,7 +525,8 @@ RUNTIME_FUNCTION(Runtime_NewStrictArguments) {
|
| static Handle<JSArray> NewRestParam(Isolate* isolate,
|
| Object** parameters,
|
| int num_params,
|
| - int rest_index) {
|
| + int rest_index,
|
| + LanguageMode language_mode) {
|
| parameters -= rest_index;
|
| int num_elements = std::max(0, num_params - rest_index);
|
| Handle<FixedArray> elements =
|
| @@ -534,25 +535,29 @@ static Handle<JSArray> NewRestParam(Isolate* isolate,
|
| elements->set(i, *--parameters);
|
| }
|
| return isolate->factory()->NewJSArrayWithElements(elements, FAST_ELEMENTS,
|
| - num_elements);
|
| + num_elements,
|
| + strength(language_mode));
|
| }
|
|
|
|
|
| RUNTIME_FUNCTION(Runtime_NewRestParam) {
|
| HandleScope scope(isolate);
|
| - DCHECK(args.length() == 3);
|
| + DCHECK(args.length() == 4);
|
| Object** parameters = reinterpret_cast<Object**>(args[0]);
|
| CONVERT_SMI_ARG_CHECKED(num_params, 1);
|
| CONVERT_SMI_ARG_CHECKED(rest_index, 2);
|
| + CONVERT_SMI_ARG_CHECKED(language_mode, 3);
|
|
|
| - return *NewRestParam(isolate, parameters, num_params, rest_index);
|
| + return *NewRestParam(isolate, parameters, num_params, rest_index,
|
| + static_cast<LanguageMode>(language_mode));
|
| }
|
|
|
|
|
| RUNTIME_FUNCTION(Runtime_NewRestParamSlow) {
|
| HandleScope scope(isolate);
|
| - DCHECK(args.length() == 1);
|
| + DCHECK(args.length() == 2);
|
| CONVERT_SMI_ARG_CHECKED(rest_index, 0);
|
| + CONVERT_SMI_ARG_CHECKED(language_mode, 1);
|
|
|
| JavaScriptFrameIterator it(isolate);
|
|
|
| @@ -563,7 +568,8 @@ RUNTIME_FUNCTION(Runtime_NewRestParamSlow) {
|
| int argument_count = frame->GetArgumentsLength();
|
| Object** parameters = reinterpret_cast<Object**>(frame->GetParameterSlot(-1));
|
|
|
| - return *NewRestParam(isolate, parameters, argument_count, rest_index);
|
| + return *NewRestParam(isolate, parameters, argument_count, rest_index,
|
| + static_cast<LanguageMode>(language_mode));
|
| }
|
|
|
|
|
|
|