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 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 #define ShiftRightArithP ShiftRightArith | 161 #define ShiftRightArithP ShiftRightArith |
162 | 162 |
163 #endif | 163 #endif |
164 | 164 |
165 // MacroAssembler implements a collection of frequently used macros. | 165 // MacroAssembler implements a collection of frequently used macros. |
166 class MacroAssembler : public Assembler { | 166 class MacroAssembler : public Assembler { |
167 public: | 167 public: |
168 MacroAssembler(Isolate* isolate, void* buffer, int size, | 168 MacroAssembler(Isolate* isolate, void* buffer, int size, |
169 CodeObjectRequired create_code_object); | 169 CodeObjectRequired create_code_object); |
170 | 170 |
| 171 Isolate* isolate() const { return isolate_; } |
| 172 |
171 // Returns the size of a call in instructions. | 173 // Returns the size of a call in instructions. |
172 static int CallSize(Register target); | 174 static int CallSize(Register target); |
173 int CallSize(Address target, RelocInfo::Mode rmode, Condition cond = al); | 175 int CallSize(Address target, RelocInfo::Mode rmode, Condition cond = al); |
174 static int CallSizeNotPredictableCodeSize(Address target, | 176 static int CallSizeNotPredictableCodeSize(Address target, |
175 RelocInfo::Mode rmode, | 177 RelocInfo::Mode rmode, |
176 Condition cond = al); | 178 Condition cond = al); |
177 | 179 |
178 // Jump, Call, and Ret pseudo instructions implementing inter-working. | 180 // Jump, Call, and Ret pseudo instructions implementing inter-working. |
179 void Jump(Register target); | 181 void Jump(Register target); |
180 void JumpToJSEntry(Register target); | 182 void JumpToJSEntry(Register target); |
(...skipping 1627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1808 static const RegList kSafepointSavedRegisters; | 1810 static const RegList kSafepointSavedRegisters; |
1809 static const int kNumSafepointSavedRegisters; | 1811 static const int kNumSafepointSavedRegisters; |
1810 | 1812 |
1811 // Compute memory operands for safepoint stack slots. | 1813 // Compute memory operands for safepoint stack slots. |
1812 static int SafepointRegisterStackIndex(int reg_code); | 1814 static int SafepointRegisterStackIndex(int reg_code); |
1813 MemOperand SafepointRegisterSlot(Register reg); | 1815 MemOperand SafepointRegisterSlot(Register reg); |
1814 MemOperand SafepointRegistersAndDoublesSlot(Register reg); | 1816 MemOperand SafepointRegistersAndDoublesSlot(Register reg); |
1815 | 1817 |
1816 bool generating_stub_; | 1818 bool generating_stub_; |
1817 bool has_frame_; | 1819 bool has_frame_; |
| 1820 Isolate* isolate_; |
1818 // This handle will be patched with the code object on installation. | 1821 // This handle will be patched with the code object on installation. |
1819 Handle<Object> code_object_; | 1822 Handle<Object> code_object_; |
1820 | 1823 |
1821 // Needs access to SafepointRegisterStackIndex for compiled frame | 1824 // Needs access to SafepointRegisterStackIndex for compiled frame |
1822 // traversal. | 1825 // traversal. |
1823 friend class StandardFrame; | 1826 friend class StandardFrame; |
1824 }; | 1827 }; |
1825 | 1828 |
1826 // The code patcher is used to patch (typically) small parts of code e.g. for | 1829 // The code patcher is used to patch (typically) small parts of code e.g. for |
1827 // debugging and other types of instrumentation. When using the code patcher | 1830 // debugging and other types of instrumentation. When using the code patcher |
(...skipping 28 matching lines...) Expand all Loading... |
1856 inline MemOperand NativeContextMemOperand() { | 1859 inline MemOperand NativeContextMemOperand() { |
1857 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); | 1860 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); |
1858 } | 1861 } |
1859 | 1862 |
1860 #define ACCESS_MASM(masm) masm-> | 1863 #define ACCESS_MASM(masm) masm-> |
1861 | 1864 |
1862 } // namespace internal | 1865 } // namespace internal |
1863 } // namespace v8 | 1866 } // namespace v8 |
1864 | 1867 |
1865 #endif // V8_S390_MACRO_ASSEMBLER_S390_H_ | 1868 #endif // V8_S390_MACRO_ASSEMBLER_S390_H_ |
OLD | NEW |