| 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 |