< prev index next >

src/hotspot/share/c1/c1_LIRAssembler.hpp

Print this page
@@ -29,10 +29,11 @@
  #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;

@@ -45,10 +46,11 @@
    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

@@ -89,18 +91,22 @@
    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);
+   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);

@@ -194,19 +200,26 @@
    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

@@ -224,10 +237,11 @@
    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();
  

@@ -250,10 +264,11 @@
    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 >