< prev index next >
src/hotspot/cpu/arm/c1_CodeStubs_arm.cpp
BarrierSetC1
#include "c1/c1_Runtime1.hpp"
#include "nativeInst_arm.hpp"
#include "runtime/sharedRuntime.hpp"
#include "utilities/macros.hpp"
#include "vmreg_arm.inline.hpp"
- #if INCLUDE_ALL_GCS
- #include "gc/g1/g1BarrierSet.hpp"
- #endif // INCLUDE_ALL_GCS
#define __ ce->masm()->
void CounterOverflowStub::emit_code(LIR_Assembler* ce) {
__ bind(_entry);
***************
ce->add_call_info_here(info());
ce->verify_oop_map(info());
__ b(_continuation);
}
- /////////////////////////////////////////////////////////////////////////////
- #if INCLUDE_ALL_GCS
-
- void G1PreBarrierStub::emit_code(LIR_Assembler* ce) {
- // At this point we know that marking is in progress.
- // If do_load() is true then we have to emit the
- // load of the previous value; otherwise it has already
- // been loaded into _pre_val.
-
- __ bind(_entry);
- assert(pre_val()->is_register(), "Precondition.");
-
- Register pre_val_reg = pre_val()->as_register();
-
- if (do_load()) {
- ce->mem2reg(addr(), pre_val(), T_OBJECT, patch_code(), info(), false /*wide*/, false /*unaligned*/);
- }
-
- __ cbz(pre_val_reg, _continuation);
- ce->verify_reserved_argument_area_size(1);
- __ str(pre_val_reg, Address(SP));
- __ call(Runtime1::entry_for(Runtime1::g1_pre_barrier_slow_id), relocInfo::runtime_call_type);
-
- __ b(_continuation);
- }
-
- void G1PostBarrierStub::emit_code(LIR_Assembler* ce) {
- __ bind(_entry);
- assert(addr()->is_register(), "Precondition.");
- assert(new_val()->is_register(), "Precondition.");
- Register new_val_reg = new_val()->as_register();
- __ cbz(new_val_reg, _continuation);
- ce->verify_reserved_argument_area_size(1);
- __ str(addr()->as_pointer_register(), Address(SP));
- __ call(Runtime1::entry_for(Runtime1::g1_post_barrier_slow_id), relocInfo::runtime_call_type);
- __ b(_continuation);
- }
-
- #endif // INCLUDE_ALL_GCS
- /////////////////////////////////////////////////////////////////////////////
-
#undef __
< prev index next >