Index: src/x64/builtins-x64.cc |
diff --git a/src/x64/builtins-x64.cc b/src/x64/builtins-x64.cc |
index 36ec61cdde36aecdd2bb7744594eff9cf39c8753..22153f6d8e4ecf5a2ec52d282b18808d0692add9 100644 |
--- a/src/x64/builtins-x64.cc |
+++ b/src/x64/builtins-x64.cc |
@@ -21,8 +21,6 @@ void Builtins::Generate_Adaptor(MacroAssembler* masm, |
BuiltinExtraArguments extra_args) { |
// ----------- S t a t e ------------- |
// -- rax : number of arguments excluding receiver |
- // (only guaranteed when the called function |
- // is not marked as DontAdaptArguments) |
// -- rdi : called function |
// -- rsp[0] : return address |
// -- rsp[8] : last argument |
@@ -32,13 +30,6 @@ void Builtins::Generate_Adaptor(MacroAssembler* masm, |
// ----------------------------------- |
__ AssertFunction(rdi); |
- // Make sure we operate in the context of the called function (for example |
- // ConstructStubs implemented in C++ will be run in the context of the caller |
- // instead of the callee, due to the way that [[Construct]] is defined for |
- // ordinary functions). |
- // TODO(bmeurer): Can we make this more robust? |
- __ movp(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); |
- |
// Insert extra arguments. |
int num_extra_args = 0; |
if (extra_args == NEEDS_CALLED_FUNCTION) { |
@@ -51,20 +42,8 @@ void Builtins::Generate_Adaptor(MacroAssembler* masm, |
} |
// JumpToExternalReference expects rax to contain the number of arguments |
- // including the receiver and the extra arguments. But rax is only valid |
- // if the called function is marked as DontAdaptArguments, otherwise we |
- // need to load the argument count from the SharedFunctionInfo. |
- Label argc, done_argc; |
- __ movp(rdx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); |
- __ LoadSharedFunctionInfoSpecialField( |
- rbx, rdx, SharedFunctionInfo::kFormalParameterCountOffset); |
- __ cmpp(rbx, Immediate(SharedFunctionInfo::kDontAdaptArgumentsSentinel)); |
- __ j(equal, &argc, Label::kNear); |
- __ leap(rax, Operand(rbx, num_extra_args + 1)); |
- __ jmp(&done_argc, Label::kNear); |
- __ bind(&argc); |
+ // including the receiver and the extra arguments. |
__ addp(rax, Immediate(num_extra_args + 1)); |
- __ bind(&done_argc); |
__ JumpToExternalReference(ExternalReference(id, masm->isolate()), 1); |
} |