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 #ifndef V8_PPC_MACRO_ASSEMBLER_PPC_H_ | 5 #ifndef V8_PPC_MACRO_ASSEMBLER_PPC_H_ |
6 #define V8_PPC_MACRO_ASSEMBLER_PPC_H_ | 6 #define V8_PPC_MACRO_ASSEMBLER_PPC_H_ |
7 | 7 |
8 #include "src/assembler.h" | 8 #include "src/assembler.h" |
9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
10 #include "src/frames.h" | 10 #include "src/frames.h" |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 #endif | 426 #endif |
427 | 427 |
428 // Generates function and stub prologue code. | 428 // Generates function and stub prologue code. |
429 void StubPrologue(StackFrame::Type type, Register base = no_reg, | 429 void StubPrologue(StackFrame::Type type, Register base = no_reg, |
430 int prologue_offset = 0); | 430 int prologue_offset = 0); |
431 void Prologue(bool code_pre_aging, Register base, int prologue_offset = 0); | 431 void Prologue(bool code_pre_aging, Register base, int prologue_offset = 0); |
432 | 432 |
433 // Enter exit frame. | 433 // Enter exit frame. |
434 // stack_space - extra stack space, used for parameters before call to C. | 434 // stack_space - extra stack space, used for parameters before call to C. |
435 // At least one slot (for the return address) should be provided. | 435 // At least one slot (for the return address) should be provided. |
436 void EnterExitFrame(bool save_doubles, int stack_space = 1); | 436 void EnterExitFrame(bool save_doubles, int stack_space = 1, |
| 437 StackFrame::Type frame_type = StackFrame::EXIT); |
437 | 438 |
438 // Leave the current exit frame. Expects the return value in r0. | 439 // Leave the current exit frame. Expects the return value in r0. |
439 // Expect the number of values, pushed prior to the exit frame, to | 440 // Expect the number of values, pushed prior to the exit frame, to |
440 // remove in a register (or no_reg, if there is nothing to remove). | 441 // remove in a register (or no_reg, if there is nothing to remove). |
441 void LeaveExitFrame(bool save_doubles, Register argument_count, | 442 void LeaveExitFrame(bool save_doubles, Register argument_count, |
442 bool restore_context, | 443 bool restore_context, |
443 bool argument_count_is_length = false); | 444 bool argument_count_is_length = false); |
444 | 445 |
445 // Get the actual activation frame alignment for target environment. | 446 // Get the actual activation frame alignment for target environment. |
446 static int ActivationFrameAlignment(); | 447 static int ActivationFrameAlignment(); |
(...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1065 void CallCFunction(Register function, int num_arguments); | 1066 void CallCFunction(Register function, int num_arguments); |
1066 void CallCFunction(ExternalReference function, int num_reg_arguments, | 1067 void CallCFunction(ExternalReference function, int num_reg_arguments, |
1067 int num_double_arguments); | 1068 int num_double_arguments); |
1068 void CallCFunction(Register function, int num_reg_arguments, | 1069 void CallCFunction(Register function, int num_reg_arguments, |
1069 int num_double_arguments); | 1070 int num_double_arguments); |
1070 | 1071 |
1071 void MovFromFloatParameter(DoubleRegister dst); | 1072 void MovFromFloatParameter(DoubleRegister dst); |
1072 void MovFromFloatResult(DoubleRegister dst); | 1073 void MovFromFloatResult(DoubleRegister dst); |
1073 | 1074 |
1074 // Jump to a runtime routine. | 1075 // Jump to a runtime routine. |
1075 void JumpToExternalReference(const ExternalReference& builtin); | 1076 void JumpToExternalReference(const ExternalReference& builtin, |
| 1077 bool builtin_exit_frame = false); |
1076 | 1078 |
1077 Handle<Object> CodeObject() { | 1079 Handle<Object> CodeObject() { |
1078 DCHECK(!code_object_.is_null()); | 1080 DCHECK(!code_object_.is_null()); |
1079 return code_object_; | 1081 return code_object_; |
1080 } | 1082 } |
1081 | 1083 |
1082 | 1084 |
1083 // Emit code for a truncating division by a constant. The dividend register is | 1085 // Emit code for a truncating division by a constant. The dividend register is |
1084 // unchanged and ip gets clobbered. Dividend and result must be different. | 1086 // unchanged and ip gets clobbered. Dividend and result must be different. |
1085 void TruncatingDiv(Register result, Register dividend, int32_t divisor); | 1087 void TruncatingDiv(Register result, Register dividend, int32_t divisor); |
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1667 #define ACCESS_MASM(masm) \ | 1669 #define ACCESS_MASM(masm) \ |
1668 masm->stop(__FILE_LINE__); \ | 1670 masm->stop(__FILE_LINE__); \ |
1669 masm-> | 1671 masm-> |
1670 #else | 1672 #else |
1671 #define ACCESS_MASM(masm) masm-> | 1673 #define ACCESS_MASM(masm) masm-> |
1672 #endif | 1674 #endif |
1673 } // namespace internal | 1675 } // namespace internal |
1674 } // namespace v8 | 1676 } // namespace v8 |
1675 | 1677 |
1676 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_ | 1678 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_ |
OLD | NEW |