< prev index next >

src/hotspot/share/gc/shared/c1/barrierSetC1.hpp

Print this page

        

*** 94,110 **** --- 94,112 ---- LIRGenerator* gen() const { return _gen; } CodeEmitInfo*& patch_emit_info() { return _patch_emit_info; } CodeEmitInfo*& access_emit_info() { return _access_emit_info; } LIRAddressOpr& base() { return _base; } + void set_base(LIRAddressOpr base) { _base = base; } LIRAddressOpr& offset() { return _offset; } BasicType type() const { return _type; } LIR_Opr resolved_addr() const { return _resolved_addr; } void set_resolved_addr(LIR_Opr addr) { _resolved_addr = addr; } bool is_oop() const { return _type == T_ARRAY || _type == T_OBJECT; } DecoratorSet decorators() const { return _decorators; } bool is_raw() const { return (_decorators & AS_RAW) != 0; } + bool needs_null_check() const { return (_decorators & IS_NOT_NULL) == 0; } }; // The BarrierSetC1 class is the main entry point for the GC backend of the Access API in C1. // It is called by the LIRGenerator::access_* functions, which is the main entry poing for // access calls in C1.
*** 131,139 **** --- 133,144 ---- virtual LIR_Opr atomic_cmpxchg_at(LIRAccess& access, LIRItem& cmp_value, LIRItem& new_value); virtual LIR_Opr atomic_xchg_at(LIRAccess& access, LIRItem& value); virtual LIR_Opr atomic_add_at(LIRAccess& access, LIRItem& value); + virtual LIR_Opr resolve_for_read(LIRAccess& access); + virtual LIR_Opr resolve_for_write(LIRAccess& access); + virtual void generate_c1_runtime_stubs(BufferBlob* buffer_blob) {} }; #endif // SHARE_GC_SHARED_C1_BARRIERSETC1_HPP
< prev index next >