| 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 #if V8_TARGET_ARCH_PPC | 5 #if V8_TARGET_ARCH_PPC | 
| 6 | 6 | 
| 7 #include "src/codegen.h" | 7 #include "src/codegen.h" | 
| 8 #include "src/debug/debug.h" | 8 #include "src/debug/debug.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 554 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 565     // Call the function. | 565     // Call the function. | 
| 566     // r3: number of arguments | 566     // r3: number of arguments | 
| 567     // r4: constructor function | 567     // r4: constructor function | 
| 568     // r6: new target | 568     // r6: new target | 
| 569     if (is_api_function) { | 569     if (is_api_function) { | 
| 570       __ LoadP(cp, FieldMemOperand(r4, JSFunction::kContextOffset)); | 570       __ LoadP(cp, FieldMemOperand(r4, JSFunction::kContextOffset)); | 
| 571       Handle<Code> code = masm->isolate()->builtins()->HandleApiCallConstruct(); | 571       Handle<Code> code = masm->isolate()->builtins()->HandleApiCallConstruct(); | 
| 572       __ Call(code, RelocInfo::CODE_TARGET); | 572       __ Call(code, RelocInfo::CODE_TARGET); | 
| 573     } else { | 573     } else { | 
| 574       ParameterCount actual(r3); | 574       ParameterCount actual(r3); | 
| 575       __ InvokeFunction(r4, r6, actual, CALL_FUNCTION, NullCallWrapper()); | 575       __ InvokeFunction(r4, r6, actual, CALL_FUNCTION, | 
|  | 576                         CheckDebugStepCallWrapper()); | 
| 576     } | 577     } | 
| 577 | 578 | 
| 578     // Store offset of return address for deoptimizer. | 579     // Store offset of return address for deoptimizer. | 
| 579     if (create_implicit_receiver && !is_api_function) { | 580     if (create_implicit_receiver && !is_api_function) { | 
| 580       masm->isolate()->heap()->SetConstructStubDeoptPCOffset(masm->pc_offset()); | 581       masm->isolate()->heap()->SetConstructStubDeoptPCOffset(masm->pc_offset()); | 
| 581     } | 582     } | 
| 582 | 583 | 
| 583     // Restore context from the frame. | 584     // Restore context from the frame. | 
| 584     // r3: result | 585     // r3: result | 
| 585     // sp[0]: receiver | 586     // sp[0]: receiver | 
| (...skipping 1114 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1700   //  -- r4 : the function to call (checked to be a JSFunction) | 1701   //  -- r4 : the function to call (checked to be a JSFunction) | 
| 1701   //  -- r5 : the shared function info. | 1702   //  -- r5 : the shared function info. | 
| 1702   //  -- cp : the function context. | 1703   //  -- cp : the function context. | 
| 1703   // ----------------------------------- | 1704   // ----------------------------------- | 
| 1704 | 1705 | 
| 1705   __ LoadWordArith( | 1706   __ LoadWordArith( | 
| 1706       r5, FieldMemOperand(r5, SharedFunctionInfo::kFormalParameterCountOffset)); | 1707       r5, FieldMemOperand(r5, SharedFunctionInfo::kFormalParameterCountOffset)); | 
| 1707 #if !V8_TARGET_ARCH_PPC64 | 1708 #if !V8_TARGET_ARCH_PPC64 | 
| 1708   __ SmiUntag(r5); | 1709   __ SmiUntag(r5); | 
| 1709 #endif | 1710 #endif | 
| 1710   __ LoadP(r7, FieldMemOperand(r4, JSFunction::kCodeEntryOffset)); |  | 
| 1711   ParameterCount actual(r3); | 1711   ParameterCount actual(r3); | 
| 1712   ParameterCount expected(r5); | 1712   ParameterCount expected(r5); | 
| 1713   __ InvokeCode(r7, no_reg, expected, actual, JUMP_FUNCTION, NullCallWrapper()); | 1713   __ InvokeFunctionCode(r4, no_reg, expected, actual, JUMP_FUNCTION, | 
|  | 1714                         CheckDebugStepCallWrapper()); | 
| 1714 | 1715 | 
| 1715   // The function is a "classConstructor", need to raise an exception. | 1716   // The function is a "classConstructor", need to raise an exception. | 
| 1716   __ bind(&class_constructor); | 1717   __ bind(&class_constructor); | 
| 1717   { | 1718   { | 
| 1718     FrameAndConstantPoolScope frame(masm, StackFrame::INTERNAL); | 1719     FrameAndConstantPoolScope frame(masm, StackFrame::INTERNAL); | 
| 1719     __ push(r4); | 1720     __ push(r4); | 
| 1720     __ CallRuntime(Runtime::kThrowConstructorNonCallableError, 1); | 1721     __ CallRuntime(Runtime::kThrowConstructorNonCallableError, 1); | 
| 1721   } | 1722   } | 
| 1722 } | 1723 } | 
| 1723 | 1724 | 
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2010     __ bkpt(0); | 2011     __ bkpt(0); | 
| 2011   } | 2012   } | 
| 2012 } | 2013 } | 
| 2013 | 2014 | 
| 2014 | 2015 | 
| 2015 #undef __ | 2016 #undef __ | 
| 2016 }  // namespace internal | 2017 }  // namespace internal | 
| 2017 }  // namespace v8 | 2018 }  // namespace v8 | 
| 2018 | 2019 | 
| 2019 #endif  // V8_TARGET_ARCH_PPC | 2020 #endif  // V8_TARGET_ARCH_PPC | 
| OLD | NEW | 
|---|