< prev index next > src/hotspot/share/c1/c1_LIRAssembler.hpp
Print this page
#include "ci/ciMethodData.hpp"
#include "oops/methodData.hpp"
#include "utilities/macros.hpp"
class Compilation;
+ class CompiledEntrySignature;
class ScopeValue;
class LIR_Assembler: public CompilationResourceObj {
private:
C1_MacroAssembler* _masm;
Instruction* _pending_non_safepoint;
int _pending_non_safepoint_offset;
int _immediate_oops_patched;
Label _unwind_handler_entry;
+ Label _verified_inline_entry;
#ifdef ASSERT
BlockList _branch_target_blocks;
void check_no_unbound_labels();
#endif
void metadata2reg(Metadata* o, Register reg);
void klass2reg_with_patching(Register reg, CodeEmitInfo* info);
void emit_stubs(CodeStubList* stub_list);
public:
// addresses
Address as_Address(LIR_Address* addr);
Address as_Address_lo(LIR_Address* addr);
Address as_Address_hi(LIR_Address* addr);
// debug information
! void add_call_info(int pc_offset, CodeEmitInfo* cinfo);
void add_debug_info_for_branch(CodeEmitInfo* info);
void add_debug_info_for_div0(int pc_offset, CodeEmitInfo* cinfo);
void add_debug_info_for_div0_here(CodeEmitInfo* info);
ImplicitNullCheckStub* add_debug_info_for_null_check(int pc_offset, CodeEmitInfo* cinfo);
ImplicitNullCheckStub* add_debug_info_for_null_check_here(CodeEmitInfo* info);
void metadata2reg(Metadata* o, Register reg);
void klass2reg_with_patching(Register reg, CodeEmitInfo* info);
void emit_stubs(CodeStubList* stub_list);
+ bool needs_stack_repair() const {
+ return compilation()->needs_stack_repair();
+ }
+
public:
// addresses
Address as_Address(LIR_Address* addr);
Address as_Address_lo(LIR_Address* addr);
Address as_Address_hi(LIR_Address* addr);
// debug information
! void add_call_info(int pc_offset, CodeEmitInfo* cinfo, bool maybe_return_as_fields = false);
void add_debug_info_for_branch(CodeEmitInfo* info);
void add_debug_info_for_div0(int pc_offset, CodeEmitInfo* cinfo);
void add_debug_info_for_div0_here(CodeEmitInfo* info);
ImplicitNullCheckStub* add_debug_info_for_null_check(int pc_offset, CodeEmitInfo* cinfo);
ImplicitNullCheckStub* add_debug_info_for_null_check_here(CodeEmitInfo* info);
void emit_updatecrc32(LIR_OpUpdateCRC32* op);
void emit_opConvert(LIR_OpConvert* op);
void emit_alloc_obj(LIR_OpAllocObj* op);
void emit_alloc_array(LIR_OpAllocArray* op);
void emit_opTypeCheck(LIR_OpTypeCheck* op);
+ void emit_opFlattenedArrayCheck(LIR_OpFlattenedArrayCheck* op);
+ void emit_opNullFreeArrayCheck(LIR_OpNullFreeArrayCheck* op);
+ void emit_opSubstitutabilityCheck(LIR_OpSubstitutabilityCheck* op);
void emit_typecheck_helper(LIR_OpTypeCheck *op, Label* success, Label* failure, Label* obj_is_null);
void emit_compare_and_swap(LIR_OpCompareAndSwap* op);
void emit_lock(LIR_OpLock* op);
void emit_load_klass(LIR_OpLoadKlass* op);
void emit_call(LIR_OpJavaCall* op);
void emit_rtcall(LIR_OpRTCall* op);
void emit_profile_call(LIR_OpProfileCall* op);
void emit_profile_type(LIR_OpProfileType* op);
+ void emit_profile_inline_type(LIR_OpProfileInlineType* op);
void emit_delay(LIR_OpDelay* op);
+ void emit_std_entries();
+ void emit_std_entry(CodeOffsets::Entries entry, const CompiledEntrySignature* ces);
+ void add_scalarized_entry_info(int call_offset);
void arith_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr dest, CodeEmitInfo* info, bool pop_fpu_stack);
void arithmetic_idiv(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr temp, LIR_Opr result, CodeEmitInfo* info);
void intrinsic_op(LIR_Code code, LIR_Opr value, LIR_Opr unused, LIR_Opr dest, LIR_Op* op);
#ifdef ASSERT
void cmove(LIR_Condition code, LIR_Opr left, LIR_Opr right, LIR_Opr result, BasicType type,
LIR_Opr cmp_opr1 = LIR_OprFact::illegalOpr, LIR_Opr cmp_opr2 = LIR_OprFact::illegalOpr);
void call( LIR_OpJavaCall* op, relocInfo::relocType rtype);
void ic_call( LIR_OpJavaCall* op);
void vtable_call( LIR_OpJavaCall* op);
+ int store_inline_type_fields_to_buf(ciInlineKlass* vk);
void osr_entry();
void build_frame();
void membar_storestore();
void membar_loadstore();
void membar_storeload();
void on_spin_wait();
void get_thread(LIR_Opr result);
+ void check_orig_pc();
void verify_oop_map(CodeEmitInfo* info);
void atomic_op(LIR_Code code, LIR_Opr src, LIR_Opr data, LIR_Opr dest, LIR_Opr tmp);
< prev index next >