1 /*
2 * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
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/methodData.hpp"
31
32 class Compilation;
33 class ScopeValue;
34 class BarrierSet;
35
36 class LIR_Assembler: public CompilationResourceObj {
37 private:
38 C1_MacroAssembler* _masm;
39 CodeStubList* _slow_case_stubs;
40 BarrierSet* _bs;
41
42 Compilation* _compilation;
43 FrameMap* _frame_map;
44 BlockBegin* _current_block;
45
46 Instruction* _pending_non_safepoint;
47 int _pending_non_safepoint_offset;
48
49 Label _unwind_handler_entry;
50
240
241 void negate(LIR_Opr left, LIR_Opr dest);
242 void leal(LIR_Opr left, LIR_Opr dest);
243
244 void rt_call(LIR_Opr result, address dest, const LIR_OprList* args, LIR_Opr tmp, CodeEmitInfo* info);
245
246 void membar();
247 void membar_acquire();
248 void membar_release();
249 void membar_loadload();
250 void membar_storestore();
251 void membar_loadstore();
252 void membar_storeload();
253 void on_spin_wait();
254 void get_thread(LIR_Opr result);
255
256 void verify_oop_map(CodeEmitInfo* info);
257
258 void atomic_op(LIR_Code code, LIR_Opr src, LIR_Opr data, LIR_Opr dest, LIR_Opr tmp);
259
260 #ifdef TARGET_ARCH_x86
261 # include "c1_LIRAssembler_x86.hpp"
262 #endif
263 #ifdef TARGET_ARCH_sparc
264 # include "c1_LIRAssembler_sparc.hpp"
265 #endif
266 #ifdef TARGET_ARCH_arm
267 # include "c1_LIRAssembler_arm.hpp"
268 #endif
269 #ifdef TARGET_ARCH_ppc
270 # include "c1_LIRAssembler_ppc.hpp"
271 #endif
272 #ifdef TARGET_ARCH_aarch64
273 # include "c1_LIRAssembler_aarch64.hpp"
274 #endif
275
276 };
277
278 #endif // SHARE_VM_C1_C1_LIRASSEMBLER_HPP
|
1 /*
2 * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
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/methodData.hpp"
31 #include "utilities/macros.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
241
242 void negate(LIR_Opr left, LIR_Opr dest);
243 void leal(LIR_Opr left, LIR_Opr dest);
244
245 void rt_call(LIR_Opr result, address dest, const LIR_OprList* args, LIR_Opr tmp, CodeEmitInfo* info);
246
247 void membar();
248 void membar_acquire();
249 void membar_release();
250 void membar_loadload();
251 void membar_storestore();
252 void membar_loadstore();
253 void membar_storeload();
254 void on_spin_wait();
255 void get_thread(LIR_Opr result);
256
257 void verify_oop_map(CodeEmitInfo* info);
258
259 void atomic_op(LIR_Code code, LIR_Opr src, LIR_Opr data, LIR_Opr dest, LIR_Opr tmp);
260
261 #include CPU_HEADER(c1_LIRAssembler)
262
263 };
264
265 #endif // SHARE_VM_C1_C1_LIRASSEMBLER_HPP
|