< prev index next >

src/hotspot/cpu/aarch64/gc/z/zBarrierSetAssembler_aarch64.cpp

Print this page
8248238: Adding Windows support to OpenJDK on AArch64

Summary: LP64 vs LLP64 changes to add Windows support

Contributed-by: Monica Beckwith <monica.beckwith@microsoft.com>, Ludovic Henry <luhenry@microsoft.com>
Reviewed-by:


 189 
 190   __ call_VM_leaf(ZBarrierSetRuntime::load_barrier_on_oop_array_addr(), 2);
 191 
 192   __ popa();
 193   BLOCK_COMMENT("} ZBarrierSetAssembler::arraycopy_prologue");
 194 }
 195 
 196 void ZBarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm,
 197                                                          Register jni_env,
 198                                                          Register robj,
 199                                                          Register tmp,
 200                                                          Label& slowpath) {
 201   BLOCK_COMMENT("ZBarrierSetAssembler::try_resolve_jobject_in_native {");
 202 
 203   assert_different_registers(jni_env, robj, tmp);
 204 
 205   // Resolve jobject
 206   BarrierSetAssembler::try_resolve_jobject_in_native(masm, jni_env, robj, tmp, slowpath);
 207 
 208   // The Address offset is too large to direct load - -784. Our range is +127, -128.
 209   __ mov(tmp, (long int)(in_bytes(ZThreadLocalData::address_bad_mask_offset()) -
 210               in_bytes(JavaThread::jni_environment_offset())));
 211 
 212   // Load address bad mask
 213   __ add(tmp, jni_env, tmp);
 214   __ ldr(tmp, Address(tmp));
 215 
 216   // Check address bad mask
 217   __ tst(robj, tmp);
 218   __ br(Assembler::NE, slowpath);
 219 
 220   BLOCK_COMMENT("} ZBarrierSetAssembler::try_resolve_jobject_in_native");
 221 }
 222 
 223 #ifdef COMPILER1
 224 
 225 #undef __
 226 #define __ ce->masm()->
 227 
 228 void ZBarrierSetAssembler::generate_c1_load_barrier_test(LIR_Assembler* ce,
 229                                                          LIR_Opr ref) const {




 189 
 190   __ call_VM_leaf(ZBarrierSetRuntime::load_barrier_on_oop_array_addr(), 2);
 191 
 192   __ popa();
 193   BLOCK_COMMENT("} ZBarrierSetAssembler::arraycopy_prologue");
 194 }
 195 
 196 void ZBarrierSetAssembler::try_resolve_jobject_in_native(MacroAssembler* masm,
 197                                                          Register jni_env,
 198                                                          Register robj,
 199                                                          Register tmp,
 200                                                          Label& slowpath) {
 201   BLOCK_COMMENT("ZBarrierSetAssembler::try_resolve_jobject_in_native {");
 202 
 203   assert_different_registers(jni_env, robj, tmp);
 204 
 205   // Resolve jobject
 206   BarrierSetAssembler::try_resolve_jobject_in_native(masm, jni_env, robj, tmp, slowpath);
 207 
 208   // The Address offset is too large to direct load - -784. Our range is +127, -128.
 209   __ mov(tmp, (int64_t)(in_bytes(ZThreadLocalData::address_bad_mask_offset()) -
 210               in_bytes(JavaThread::jni_environment_offset())));
 211 
 212   // Load address bad mask
 213   __ add(tmp, jni_env, tmp);
 214   __ ldr(tmp, Address(tmp));
 215 
 216   // Check address bad mask
 217   __ tst(robj, tmp);
 218   __ br(Assembler::NE, slowpath);
 219 
 220   BLOCK_COMMENT("} ZBarrierSetAssembler::try_resolve_jobject_in_native");
 221 }
 222 
 223 #ifdef COMPILER1
 224 
 225 #undef __
 226 #define __ ce->masm()->
 227 
 228 void ZBarrierSetAssembler::generate_c1_load_barrier_test(LIR_Assembler* ce,
 229                                                          LIR_Opr ref) const {


< prev index next >