< prev index next >

src/hotspot/cpu/ppc/gc/g1/g1BarrierSetAssembler_ppc.cpp

Print this page
rev 50535 : [mq]: rename_IN_ROOT


 318     // these parameters the pre-barrier does not generate
 319     // the load of the previous value
 320     // We only reach here if value is not null.
 321     g1_write_barrier_pre(masm, decorators | OOP_NOT_NULL, noreg /* obj */, (intptr_t)0, dst /* pre_val */,
 322                          tmp1, tmp2, needs_frame);
 323   }
 324   __ bind(done);
 325 }
 326 
 327 void G1BarrierSetAssembler::resolve_jobject(MacroAssembler* masm, Register value, Register tmp1, Register tmp2, bool needs_frame) {
 328   Label done, not_weak;
 329   __ cmpdi(CCR0, value, 0);
 330   __ beq(CCR0, done);         // Use NULL as-is.
 331 
 332   __ clrrdi(tmp1, value, JNIHandles::weak_tag_size);
 333   __ andi_(tmp2, value, JNIHandles::weak_tag_mask);
 334   __ ld(value, 0, tmp1);      // Resolve (untagged) jobject.
 335 
 336   __ beq(CCR0, not_weak);     // Test for jweak tag.
 337   __ verify_oop(value);
 338   g1_write_barrier_pre(masm, IN_ROOT | ON_PHANTOM_OOP_REF,
 339                        noreg, noreg, value,
 340                        tmp1, tmp2, needs_frame);
 341   __ bind(not_weak);
 342   __ verify_oop(value);
 343   __ bind(done);
 344 }
 345 
 346 #ifdef COMPILER1
 347 
 348 #undef __
 349 #define __ ce->masm()->
 350 
 351 void G1BarrierSetAssembler::gen_pre_barrier_stub(LIR_Assembler* ce, G1PreBarrierStub* stub) {
 352   G1BarrierSetC1* bs = (G1BarrierSetC1*)BarrierSet::barrier_set()->barrier_set_c1();
 353   // At this point we know that marking is in progress.
 354   // If do_load() is true then we have to emit the
 355   // load of the previous value; otherwise it has already
 356   // been loaded into _pre_val.
 357 
 358   __ bind(*stub->entry());




 318     // these parameters the pre-barrier does not generate
 319     // the load of the previous value
 320     // We only reach here if value is not null.
 321     g1_write_barrier_pre(masm, decorators | OOP_NOT_NULL, noreg /* obj */, (intptr_t)0, dst /* pre_val */,
 322                          tmp1, tmp2, needs_frame);
 323   }
 324   __ bind(done);
 325 }
 326 
 327 void G1BarrierSetAssembler::resolve_jobject(MacroAssembler* masm, Register value, Register tmp1, Register tmp2, bool needs_frame) {
 328   Label done, not_weak;
 329   __ cmpdi(CCR0, value, 0);
 330   __ beq(CCR0, done);         // Use NULL as-is.
 331 
 332   __ clrrdi(tmp1, value, JNIHandles::weak_tag_size);
 333   __ andi_(tmp2, value, JNIHandles::weak_tag_mask);
 334   __ ld(value, 0, tmp1);      // Resolve (untagged) jobject.
 335 
 336   __ beq(CCR0, not_weak);     // Test for jweak tag.
 337   __ verify_oop(value);
 338   g1_write_barrier_pre(masm, IN_NATIVE | ON_PHANTOM_OOP_REF,
 339                        noreg, noreg, value,
 340                        tmp1, tmp2, needs_frame);
 341   __ bind(not_weak);
 342   __ verify_oop(value);
 343   __ bind(done);
 344 }
 345 
 346 #ifdef COMPILER1
 347 
 348 #undef __
 349 #define __ ce->masm()->
 350 
 351 void G1BarrierSetAssembler::gen_pre_barrier_stub(LIR_Assembler* ce, G1PreBarrierStub* stub) {
 352   G1BarrierSetC1* bs = (G1BarrierSetC1*)BarrierSet::barrier_set()->barrier_set_c1();
 353   // At this point we know that marking is in progress.
 354   // If do_load() is true then we have to emit the
 355   // load of the previous value; otherwise it has already
 356   // been loaded into _pre_val.
 357 
 358   __ bind(*stub->entry());


< prev index next >