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_S390_MACRO_ASSEMBLER_S390_H_ | 5 #ifndef V8_S390_MACRO_ASSEMBLER_S390_H_ |
6 #define V8_S390_MACRO_ASSEMBLER_S390_H_ | 6 #define V8_S390_MACRO_ASSEMBLER_S390_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 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
727 #endif | 727 #endif |
728 | 728 |
729 // Generates function and stub prologue code. | 729 // Generates function and stub prologue code. |
730 void StubPrologue(StackFrame::Type type, Register base = no_reg, | 730 void StubPrologue(StackFrame::Type type, Register base = no_reg, |
731 int prologue_offset = 0); | 731 int prologue_offset = 0); |
732 void Prologue(bool code_pre_aging, Register base, int prologue_offset = 0); | 732 void Prologue(bool code_pre_aging, Register base, int prologue_offset = 0); |
733 | 733 |
734 // Enter exit frame. | 734 // Enter exit frame. |
735 // stack_space - extra stack space, used for parameters before call to C. | 735 // stack_space - extra stack space, used for parameters before call to C. |
736 // At least one slot (for the return address) should be provided. | 736 // At least one slot (for the return address) should be provided. |
737 void EnterExitFrame(bool save_doubles, int stack_space = 1); | 737 void EnterExitFrame(bool save_doubles, int stack_space = 1, |
| 738 StackFrame::Type frame_type = StackFrame::EXIT); |
738 | 739 |
739 // Leave the current exit frame. Expects the return value in r0. | 740 // Leave the current exit frame. Expects the return value in r0. |
740 // Expect the number of values, pushed prior to the exit frame, to | 741 // Expect the number of values, pushed prior to the exit frame, to |
741 // remove in a register (or no_reg, if there is nothing to remove). | 742 // remove in a register (or no_reg, if there is nothing to remove). |
742 void LeaveExitFrame(bool save_doubles, Register argument_count, | 743 void LeaveExitFrame(bool save_doubles, Register argument_count, |
743 bool restore_context, | 744 bool restore_context, |
744 bool argument_count_is_length = false); | 745 bool argument_count_is_length = false); |
745 | 746 |
746 // Get the actual activation frame alignment for target environment. | 747 // Get the actual activation frame alignment for target environment. |
747 static int ActivationFrameAlignment(); | 748 static int ActivationFrameAlignment(); |
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1330 void CallCFunction(Register function, int num_arguments); | 1331 void CallCFunction(Register function, int num_arguments); |
1331 void CallCFunction(ExternalReference function, int num_reg_arguments, | 1332 void CallCFunction(ExternalReference function, int num_reg_arguments, |
1332 int num_double_arguments); | 1333 int num_double_arguments); |
1333 void CallCFunction(Register function, int num_reg_arguments, | 1334 void CallCFunction(Register function, int num_reg_arguments, |
1334 int num_double_arguments); | 1335 int num_double_arguments); |
1335 | 1336 |
1336 void MovFromFloatParameter(DoubleRegister dst); | 1337 void MovFromFloatParameter(DoubleRegister dst); |
1337 void MovFromFloatResult(DoubleRegister dst); | 1338 void MovFromFloatResult(DoubleRegister dst); |
1338 | 1339 |
1339 // Jump to a runtime routine. | 1340 // Jump to a runtime routine. |
1340 void JumpToExternalReference(const ExternalReference& builtin); | 1341 void JumpToExternalReference(const ExternalReference& builtin, |
| 1342 bool builtin_exit_frame = false); |
1341 | 1343 |
1342 Handle<Object> CodeObject() { | 1344 Handle<Object> CodeObject() { |
1343 DCHECK(!code_object_.is_null()); | 1345 DCHECK(!code_object_.is_null()); |
1344 return code_object_; | 1346 return code_object_; |
1345 } | 1347 } |
1346 | 1348 |
1347 // Emit code for a truncating division by a constant. The dividend register is | 1349 // Emit code for a truncating division by a constant. The dividend register is |
1348 // unchanged and ip gets clobbered. Dividend and result must be different. | 1350 // unchanged and ip gets clobbered. Dividend and result must be different. |
1349 void TruncatingDiv(Register result, Register dividend, int32_t divisor); | 1351 void TruncatingDiv(Register result, Register dividend, int32_t divisor); |
1350 | 1352 |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1909 #define ACCESS_MASM(masm) \ | 1911 #define ACCESS_MASM(masm) \ |
1910 masm->stop(__FILE_LINE__); \ | 1912 masm->stop(__FILE_LINE__); \ |
1911 masm-> | 1913 masm-> |
1912 #else | 1914 #else |
1913 #define ACCESS_MASM(masm) masm-> | 1915 #define ACCESS_MASM(masm) masm-> |
1914 #endif | 1916 #endif |
1915 } // namespace internal | 1917 } // namespace internal |
1916 } // namespace v8 | 1918 } // namespace v8 |
1917 | 1919 |
1918 #endif // V8_S390_MACRO_ASSEMBLER_S390_H_ | 1920 #endif // V8_S390_MACRO_ASSEMBLER_S390_H_ |
OLD | NEW |