OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/arguments.h" | 8 #include "src/arguments.h" |
9 #include "src/frames-inl.h" | 9 #include "src/frames-inl.h" |
10 #include "src/messages.h" | 10 #include "src/messages.h" |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 | 390 |
391 return *value; | 391 return *value; |
392 } | 392 } |
393 | 393 |
394 | 394 |
395 static Handle<JSObject> NewSloppyArguments(Isolate* isolate, | 395 static Handle<JSObject> NewSloppyArguments(Isolate* isolate, |
396 Handle<JSFunction> callee, | 396 Handle<JSFunction> callee, |
397 Object** parameters, | 397 Object** parameters, |
398 int argument_count) { | 398 int argument_count) { |
399 CHECK(!IsSubclassConstructor(callee->shared()->kind())); | 399 CHECK(!IsSubclassConstructor(callee->shared()->kind())); |
400 DCHECK(callee->is_simple_parameter_list()); | 400 DCHECK(callee->has_simple_parameters()); |
401 Handle<JSObject> result = | 401 Handle<JSObject> result = |
402 isolate->factory()->NewArgumentsObject(callee, argument_count); | 402 isolate->factory()->NewArgumentsObject(callee, argument_count); |
403 | 403 |
404 // Allocate the elements if needed. | 404 // Allocate the elements if needed. |
405 int parameter_count = callee->shared()->internal_formal_parameter_count(); | 405 int parameter_count = callee->shared()->internal_formal_parameter_count(); |
406 if (argument_count > 0) { | 406 if (argument_count > 0) { |
407 if (parameter_count > 0) { | 407 if (parameter_count > 0) { |
408 int mapped_count = Min(argument_count, parameter_count); | 408 int mapped_count = Min(argument_count, parameter_count); |
409 Handle<FixedArray> parameter_map = | 409 Handle<FixedArray> parameter_map = |
410 isolate->factory()->NewFixedArray(mapped_count + 2, NOT_TENURED); | 410 isolate->factory()->NewFixedArray(mapped_count + 2, NOT_TENURED); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
511 | 511 |
512 // Find the frame that holds the actual arguments passed to the function. | 512 // Find the frame that holds the actual arguments passed to the function. |
513 it.AdvanceToArgumentsFrame(); | 513 it.AdvanceToArgumentsFrame(); |
514 JavaScriptFrame* frame = it.frame(); | 514 JavaScriptFrame* frame = it.frame(); |
515 | 515 |
516 // Determine parameter location on the stack and dispatch on language mode. | 516 // Determine parameter location on the stack and dispatch on language mode. |
517 int argument_count = frame->GetArgumentsLength(); | 517 int argument_count = frame->GetArgumentsLength(); |
518 Object** parameters = reinterpret_cast<Object**>(frame->GetParameterSlot(-1)); | 518 Object** parameters = reinterpret_cast<Object**>(frame->GetParameterSlot(-1)); |
519 | 519 |
520 return (is_strict(callee->shared()->language_mode()) || | 520 return (is_strict(callee->shared()->language_mode()) || |
521 !callee->is_simple_parameter_list()) | 521 !callee->has_simple_parameters()) |
522 ? *NewStrictArguments(isolate, callee, parameters, argument_count) | 522 ? *NewStrictArguments(isolate, callee, parameters, argument_count) |
523 : *NewSloppyArguments(isolate, callee, parameters, argument_count); | 523 : *NewSloppyArguments(isolate, callee, parameters, argument_count); |
524 } | 524 } |
525 | 525 |
526 | 526 |
527 RUNTIME_FUNCTION(Runtime_NewSloppyArguments) { | 527 RUNTIME_FUNCTION(Runtime_NewSloppyArguments) { |
528 HandleScope scope(isolate); | 528 HandleScope scope(isolate); |
529 DCHECK(args.length() == 3); | 529 DCHECK(args.length() == 3); |
530 CONVERT_ARG_HANDLE_CHECKED(JSFunction, callee, 0); | 530 CONVERT_ARG_HANDLE_CHECKED(JSFunction, callee, 0); |
531 Object** parameters = reinterpret_cast<Object**>(args[1]); | 531 Object** parameters = reinterpret_cast<Object**>(args[1]); |
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1161 | 1161 |
1162 // Lookup in the initial Object.prototype object. | 1162 // Lookup in the initial Object.prototype object. |
1163 Handle<Object> result; | 1163 Handle<Object> result; |
1164 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | 1164 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
1165 isolate, result, | 1165 isolate, result, |
1166 Object::GetProperty(isolate->initial_object_prototype(), key)); | 1166 Object::GetProperty(isolate->initial_object_prototype(), key)); |
1167 return *result; | 1167 return *result; |
1168 } | 1168 } |
1169 } // namespace internal | 1169 } // namespace internal |
1170 } // namespace v8 | 1170 } // namespace v8 |
OLD | NEW |