5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 class Compilation;
26 class ScopeValue;
27 class BarrierSet;
28
29 class LIR_Assembler: public CompilationResourceObj {
30 private:
31 C1_MacroAssembler* _masm;
32 CodeStubList* _slow_case_stubs;
33 BarrierSet* _bs;
34
35 Compilation* _compilation;
36 FrameMap* _frame_map;
37 BlockBegin* _current_block;
38
39 Instruction* _pending_non_safepoint;
40 int _pending_non_safepoint_offset;
41
42 Label _unwind_handler_entry;
43
44 #ifdef ASSERT
219
220 void throw_op(LIR_Opr exceptionPC, LIR_Opr exceptionOop, CodeEmitInfo* info);
221 void unwind_op(LIR_Opr exceptionOop);
222 void monitor_address(int monitor_ix, LIR_Opr dst);
223
224 void align_backward_branch_target();
225 void align_call(LIR_Code code);
226
227 void negate(LIR_Opr left, LIR_Opr dest);
228 void leal(LIR_Opr left, LIR_Opr dest);
229
230 void rt_call(LIR_Opr result, address dest, const LIR_OprList* args, LIR_Opr tmp, CodeEmitInfo* info);
231
232 void membar();
233 void membar_acquire();
234 void membar_release();
235 void get_thread(LIR_Opr result);
236
237 void verify_oop_map(CodeEmitInfo* info);
238
239 #include "incls/_c1_LIRAssembler_pd.hpp.incl"
240 };
|
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_C1_C1_LIRASSEMBLER_HPP
26 #define SHARE_VM_C1_C1_LIRASSEMBLER_HPP
27
28 #include "c1/c1_CodeStubs.hpp"
29 #include "ci/ciMethodData.hpp"
30 #include "oops/methodDataOop.hpp"
31 #include "utilities/top.hpp"
32
33 class Compilation;
34 class ScopeValue;
35 class BarrierSet;
36
37 class LIR_Assembler: public CompilationResourceObj {
38 private:
39 C1_MacroAssembler* _masm;
40 CodeStubList* _slow_case_stubs;
41 BarrierSet* _bs;
42
43 Compilation* _compilation;
44 FrameMap* _frame_map;
45 BlockBegin* _current_block;
46
47 Instruction* _pending_non_safepoint;
48 int _pending_non_safepoint_offset;
49
50 Label _unwind_handler_entry;
51
52 #ifdef ASSERT
227
228 void throw_op(LIR_Opr exceptionPC, LIR_Opr exceptionOop, CodeEmitInfo* info);
229 void unwind_op(LIR_Opr exceptionOop);
230 void monitor_address(int monitor_ix, LIR_Opr dst);
231
232 void align_backward_branch_target();
233 void align_call(LIR_Code code);
234
235 void negate(LIR_Opr left, LIR_Opr dest);
236 void leal(LIR_Opr left, LIR_Opr dest);
237
238 void rt_call(LIR_Opr result, address dest, const LIR_OprList* args, LIR_Opr tmp, CodeEmitInfo* info);
239
240 void membar();
241 void membar_acquire();
242 void membar_release();
243 void get_thread(LIR_Opr result);
244
245 void verify_oop_map(CodeEmitInfo* info);
246
247 #ifdef TARGET_ARCH_x86
248 # include "c1_LIRAssembler_x86.hpp"
249 #endif
250 #ifdef TARGET_ARCH_sparc
251 # include "c1_LIRAssembler_sparc.hpp"
252 #endif
253
254 };
255
256 #endif // SHARE_VM_C1_C1_LIRASSEMBLER_HPP
|