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 #ifndef V8_X64_MACRO_ASSEMBLER_X64_H_ | 5 #ifndef V8_X64_MACRO_ASSEMBLER_X64_H_ |
6 #define V8_X64_MACRO_ASSEMBLER_X64_H_ | 6 #define V8_X64_MACRO_ASSEMBLER_X64_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/base/flags.h" | 10 #include "src/base/flags.h" |
(...skipping 873 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
884 | 884 |
885 // Compare the given value and the value of weak cell. | 885 // Compare the given value and the value of weak cell. |
886 void CmpWeakValue(Register value, Handle<WeakCell> cell, Register scratch); | 886 void CmpWeakValue(Register value, Handle<WeakCell> cell, Register scratch); |
887 | 887 |
888 void GetWeakValue(Register value, Handle<WeakCell> cell); | 888 void GetWeakValue(Register value, Handle<WeakCell> cell); |
889 | 889 |
890 // Load the value of the weak cell in the value register. Branch to the given | 890 // Load the value of the weak cell in the value register. Branch to the given |
891 // miss label if the weak cell was cleared. | 891 // miss label if the weak cell was cleared. |
892 void LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss); | 892 void LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss); |
893 | 893 |
| 894 // Emit code that loads |parameter_index|'th parameter from the stack to |
| 895 // the register according to the CallInterfaceDescriptor definition. |
| 896 // |sp_to_caller_sp_offset_in_words| specifies the number of words pushed |
| 897 // below the caller's sp (on x64 it's at least return address). |
| 898 template <class Descriptor> |
| 899 void LoadParameterFromStack( |
| 900 Register reg, typename Descriptor::ParameterIndices parameter_index, |
| 901 int sp_to_ra_offset_in_words = 1) { |
| 902 DCHECK(Descriptor::kPassLastArgsOnStack); |
| 903 UNIMPLEMENTED(); |
| 904 } |
| 905 |
894 // Emit code to discard a non-negative number of pointer-sized elements | 906 // Emit code to discard a non-negative number of pointer-sized elements |
895 // from the stack, clobbering only the rsp register. | 907 // from the stack, clobbering only the rsp register. |
896 void Drop(int stack_elements); | 908 void Drop(int stack_elements); |
897 // Emit code to discard a positive number of pointer-sized elements | 909 // Emit code to discard a positive number of pointer-sized elements |
898 // from the stack under the return address which remains on the top, | 910 // from the stack under the return address which remains on the top, |
899 // clobbering the rsp register. | 911 // clobbering the rsp register. |
900 void DropUnderReturnAddress(int stack_elements, | 912 void DropUnderReturnAddress(int stack_elements, |
901 Register scratch = kScratchRegister); | 913 Register scratch = kScratchRegister); |
902 | 914 |
903 void Call(Label* target) { call(target); } | 915 void Call(Label* target) { call(target); } |
(...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1789 inline Operand StackOperandForReturnAddress(int32_t disp) { | 1801 inline Operand StackOperandForReturnAddress(int32_t disp) { |
1790 return Operand(rsp, disp); | 1802 return Operand(rsp, disp); |
1791 } | 1803 } |
1792 | 1804 |
1793 #define ACCESS_MASM(masm) masm-> | 1805 #define ACCESS_MASM(masm) masm-> |
1794 | 1806 |
1795 } // namespace internal | 1807 } // namespace internal |
1796 } // namespace v8 | 1808 } // namespace v8 |
1797 | 1809 |
1798 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ | 1810 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ |
OLD | NEW |