| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 #if V8_TARGET_ARCH_X64 | 5 #if V8_TARGET_ARCH_X64 | 
| 6 | 6 | 
| 7 #include "src/code-factory.h" | 7 #include "src/code-factory.h" | 
| 8 #include "src/codegen.h" | 8 #include "src/codegen.h" | 
| 9 #include "src/deoptimizer.h" | 9 #include "src/deoptimizer.h" | 
| 10 #include "src/full-codegen/full-codegen.h" | 10 #include "src/full-codegen/full-codegen.h" | 
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 325     __ j(greater_equal, &loop); | 325     __ j(greater_equal, &loop); | 
| 326 | 326 | 
| 327     // Call the function. | 327     // Call the function. | 
| 328     if (is_api_function) { | 328     if (is_api_function) { | 
| 329       __ movp(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); | 329       __ movp(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); | 
| 330       Handle<Code> code = | 330       Handle<Code> code = | 
| 331           masm->isolate()->builtins()->HandleApiCallConstruct(); | 331           masm->isolate()->builtins()->HandleApiCallConstruct(); | 
| 332       __ Call(code, RelocInfo::CODE_TARGET); | 332       __ Call(code, RelocInfo::CODE_TARGET); | 
| 333     } else { | 333     } else { | 
| 334       ParameterCount actual(rax); | 334       ParameterCount actual(rax); | 
| 335       __ InvokeFunction(rdi, rdx, actual, CALL_FUNCTION, | 335       __ InvokeFunction(rdi, rdx, actual, CALL_FUNCTION, NullCallWrapper()); | 
| 336                         CheckDebugStepCallWrapper()); |  | 
| 337     } | 336     } | 
| 338 | 337 | 
| 339     // Store offset of return address for deoptimizer. | 338     // Store offset of return address for deoptimizer. | 
| 340     if (create_implicit_receiver && !is_api_function) { | 339     if (create_implicit_receiver && !is_api_function) { | 
| 341       masm->isolate()->heap()->SetConstructStubDeoptPCOffset(masm->pc_offset()); | 340       masm->isolate()->heap()->SetConstructStubDeoptPCOffset(masm->pc_offset()); | 
| 342     } | 341     } | 
| 343 | 342 | 
| 344     // Restore context from the frame. | 343     // Restore context from the frame. | 
| 345     __ movp(rsi, Operand(rbp, StandardFrameConstants::kContextOffset)); | 344     __ movp(rsi, Operand(rbp, StandardFrameConstants::kContextOffset)); | 
| 346 | 345 | 
| (...skipping 1380 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1727 | 1726 | 
| 1728   // ----------- S t a t e ------------- | 1727   // ----------- S t a t e ------------- | 
| 1729   //  -- rax : the number of arguments (not including the receiver) | 1728   //  -- rax : the number of arguments (not including the receiver) | 
| 1730   //  -- rdx : the shared function info. | 1729   //  -- rdx : the shared function info. | 
| 1731   //  -- rdi : the function to call (checked to be a JSFunction) | 1730   //  -- rdi : the function to call (checked to be a JSFunction) | 
| 1732   //  -- rsi : the function context. | 1731   //  -- rsi : the function context. | 
| 1733   // ----------------------------------- | 1732   // ----------------------------------- | 
| 1734 | 1733 | 
| 1735   __ LoadSharedFunctionInfoSpecialField( | 1734   __ LoadSharedFunctionInfoSpecialField( | 
| 1736       rbx, rdx, SharedFunctionInfo::kFormalParameterCountOffset); | 1735       rbx, rdx, SharedFunctionInfo::kFormalParameterCountOffset); | 
|  | 1736   __ movp(r8, FieldOperand(rdi, JSFunction::kCodeEntryOffset)); | 
| 1737   ParameterCount actual(rax); | 1737   ParameterCount actual(rax); | 
| 1738   ParameterCount expected(rbx); | 1738   ParameterCount expected(rbx); | 
| 1739 | 1739   __ InvokeCode(r8, no_reg, expected, actual, JUMP_FUNCTION, NullCallWrapper()); | 
| 1740   __ InvokeFunctionCode(rdi, no_reg, expected, actual, JUMP_FUNCTION, |  | 
| 1741                         CheckDebugStepCallWrapper()); |  | 
| 1742 | 1740 | 
| 1743   // The function is a "classConstructor", need to raise an exception. | 1741   // The function is a "classConstructor", need to raise an exception. | 
| 1744   __ bind(&class_constructor); | 1742   __ bind(&class_constructor); | 
| 1745   { | 1743   { | 
| 1746     FrameScope frame(masm, StackFrame::INTERNAL); | 1744     FrameScope frame(masm, StackFrame::INTERNAL); | 
| 1747     __ Push(rdi); | 1745     __ Push(rdi); | 
| 1748     __ CallRuntime(Runtime::kThrowConstructorNonCallableError, 1); | 1746     __ CallRuntime(Runtime::kThrowConstructorNonCallableError, 1); | 
| 1749   } | 1747   } | 
| 1750 } | 1748 } | 
| 1751 | 1749 | 
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2061   __ ret(0); | 2059   __ ret(0); | 
| 2062 } | 2060 } | 
| 2063 | 2061 | 
| 2064 | 2062 | 
| 2065 #undef __ | 2063 #undef __ | 
| 2066 | 2064 | 
| 2067 }  // namespace internal | 2065 }  // namespace internal | 
| 2068 }  // namespace v8 | 2066 }  // namespace v8 | 
| 2069 | 2067 | 
| 2070 #endif  // V8_TARGET_ARCH_X64 | 2068 #endif  // V8_TARGET_ARCH_X64 | 
| OLD | NEW | 
|---|