< prev index next >

src/hotspot/share/c1/c1_CodeStubs.hpp

BarrierSetC1
 /*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -531,94 +531,6 #ifndef PRODUCT virtual void print_name(outputStream* out) const { out->print("ArrayCopyStub"); } #endif // PRODUCT }; -////////////////////////////////////////////////////////////////////////////////////////// -#if INCLUDE_ALL_GCS - -// Code stubs for Garbage-First barriers. -class G1PreBarrierStub: public CodeStub { - private: - bool _do_load; - LIR_Opr _addr; - LIR_Opr _pre_val; - LIR_PatchCode _patch_code; - CodeEmitInfo* _info; - - public: - // Version that _does_ generate a load of the previous value from addr. - // addr (the address of the field to be read) must be a LIR_Address - // pre_val (a temporary register) must be a register; - G1PreBarrierStub(LIR_Opr addr, LIR_Opr pre_val, LIR_PatchCode patch_code, CodeEmitInfo* info) : - _addr(addr), _pre_val(pre_val), _do_load(true), - _patch_code(patch_code), _info(info) - { - assert(_pre_val->is_register(), "should be temporary register"); - assert(_addr->is_address(), "should be the address of the field"); - } - - // Version that _does not_ generate load of the previous value; the - // previous value is assumed to have already been loaded into pre_val. - G1PreBarrierStub(LIR_Opr pre_val) : - _addr(LIR_OprFact::illegalOpr), _pre_val(pre_val), _do_load(false), - _patch_code(lir_patch_none), _info(NULL) - { - assert(_pre_val->is_register(), "should be a register"); - } - - LIR_Opr addr() const { return _addr; } - LIR_Opr pre_val() const { return _pre_val; } - LIR_PatchCode patch_code() const { return _patch_code; } - CodeEmitInfo* info() const { return _info; } - bool do_load() const { return _do_load; } - - virtual void emit_code(LIR_Assembler* e); - virtual void visit(LIR_OpVisitState* visitor) { - if (_do_load) { - // don't pass in the code emit info since it's processed in the fast - // path - if (_info != NULL) - visitor->do_slow_case(_info); - else - visitor->do_slow_case(); - - visitor->do_input(_addr); - visitor->do_temp(_pre_val); - } else { - visitor->do_slow_case(); - visitor->do_input(_pre_val); - } - } -#ifndef PRODUCT - virtual void print_name(outputStream* out) const { out->print("G1PreBarrierStub"); } -#endif // PRODUCT -}; - -class G1PostBarrierStub: public CodeStub { - private: - LIR_Opr _addr; - LIR_Opr _new_val; - - public: - // addr (the address of the object head) and new_val must be registers. - G1PostBarrierStub(LIR_Opr addr, LIR_Opr new_val): _addr(addr), _new_val(new_val) { } - - LIR_Opr addr() const { return _addr; } - LIR_Opr new_val() const { return _new_val; } - - virtual void emit_code(LIR_Assembler* e); - virtual void visit(LIR_OpVisitState* visitor) { - // don't pass in the code emit info since it's processed in the fast path - visitor->do_slow_case(); - visitor->do_input(_addr); - visitor->do_input(_new_val); - } -#ifndef PRODUCT - virtual void print_name(outputStream* out) const { out->print("G1PostBarrierStub"); } -#endif // PRODUCT -}; - -#endif // INCLUDE_ALL_GCS -////////////////////////////////////////////////////////////////////////////////////////// - #endif // SHARE_VM_C1_C1_CODESTUBS_HPP
< prev index next >