hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
changeset 23221 b70675ece1ce
parent 23211 954e3a81da29
child 23492 af5352f40e65
equal deleted inserted replaced
23220:fc827339dc37 23221:b70675ece1ce
  2410   // TOP_IJAVA_FRAME_ABI.
  2410   // TOP_IJAVA_FRAME_ABI.
  2411   // FIXME: assert that we really have a TOP_IJAVA_FRAME here!
  2411   // FIXME: assert that we really have a TOP_IJAVA_FRAME here!
  2412 #ifdef CC_INTERP
  2412 #ifdef CC_INTERP
  2413   ld(tmp1/*pc*/, _top_ijava_frame_abi(frame_manager_lr), sp);
  2413   ld(tmp1/*pc*/, _top_ijava_frame_abi(frame_manager_lr), sp);
  2414 #else
  2414 #else
  2415   Unimplemented();
  2415   address entry = pc();
       
  2416   load_const_optimized(tmp1, entry);
  2416 #endif
  2417 #endif
  2417 
  2418 
  2418   set_last_Java_frame(/*sp=*/sp, /*pc=*/tmp1);
  2419   set_last_Java_frame(/*sp=*/sp, /*pc=*/tmp1);
  2419 }
  2420 }
  2420 
  2421 
  2467   if (UseCompressedClassPointers) {
  2468   if (UseCompressedClassPointers) {
  2468     encode_klass_not_null(ck, klass);
  2469     encode_klass_not_null(ck, klass);
  2469     stw(ck, oopDesc::klass_offset_in_bytes(), dst_oop);
  2470     stw(ck, oopDesc::klass_offset_in_bytes(), dst_oop);
  2470   } else {
  2471   } else {
  2471     std(klass, oopDesc::klass_offset_in_bytes(), dst_oop);
  2472     std(klass, oopDesc::klass_offset_in_bytes(), dst_oop);
       
  2473   }
       
  2474 }
       
  2475 
       
  2476 void MacroAssembler::store_klass_gap(Register dst_oop, Register val) {
       
  2477   if (UseCompressedClassPointers) {
       
  2478     if (val == noreg) {
       
  2479       val = R0;
       
  2480       li(val, 0);
       
  2481     }
       
  2482     stw(val, oopDesc::klass_gap_offset_in_bytes(), dst_oop); // klass gap if compressed
  2472   }
  2483   }
  2473 }
  2484 }
  2474 
  2485 
  2475 int MacroAssembler::instr_size_for_decode_klass_not_null() {
  2486 int MacroAssembler::instr_size_for_decode_klass_not_null() {
  2476   if (!UseCompressedClassPointers) return 0;
  2487   if (!UseCompressedClassPointers) return 0;
  3141   }
  3152   }
  3142   BLOCK_COMMENT("} zap memory region");
  3153   BLOCK_COMMENT("} zap memory region");
  3143 }
  3154 }
  3144 
  3155 
  3145 #endif // !PRODUCT
  3156 #endif // !PRODUCT
       
  3157 
       
  3158 SkipIfEqualZero::SkipIfEqualZero(MacroAssembler* masm, Register temp, const bool* flag_addr) : _masm(masm), _label() {
       
  3159   int simm16_offset = masm->load_const_optimized(temp, (address)flag_addr, R0, true);
       
  3160   assert(sizeof(bool) == 1, "PowerPC ABI");
       
  3161   masm->lbz(temp, simm16_offset, temp);
       
  3162   masm->cmpwi(CCR0, temp, 0);
       
  3163   masm->beq(CCR0, _label);
       
  3164 }
       
  3165 
       
  3166 SkipIfEqualZero::~SkipIfEqualZero() {
       
  3167   _masm->bind(_label);
       
  3168 }