hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
changeset 42068 18c8a4d5998e
parent 41334 8b28be7b8613
child 42661 2343dd675325
equal deleted inserted replaced
42067:34b99c8faa51 42068:18c8a4d5998e
  1920   beq(CCR0, *L_success);
  1920   beq(CCR0, *L_success);
  1921 
  1921 
  1922   // Check the supertype display:
  1922   // Check the supertype display:
  1923   if (must_load_sco) {
  1923   if (must_load_sco) {
  1924     // The super check offset is always positive...
  1924     // The super check offset is always positive...
  1925   lwz(check_cache_offset, sco_offset, super_klass);
  1925     lwz(check_cache_offset, sco_offset, super_klass);
  1926     super_check_offset = RegisterOrConstant(check_cache_offset);
  1926     super_check_offset = RegisterOrConstant(check_cache_offset);
  1927     // super_check_offset is register.
  1927     // super_check_offset is register.
  1928     assert_different_registers(sub_klass, super_klass, cached_super, super_check_offset.as_register());
  1928     assert_different_registers(sub_klass, super_klass, cached_super, super_check_offset.as_register());
  1929   }
  1929   }
  1930   // The loaded value is the offset from KlassOopDesc.
  1930   // The loaded value is the offset from KlassOopDesc.
  3323   } else {
  3323   } else {
  3324     ld(dst, oopDesc::klass_offset_in_bytes(), src);
  3324     ld(dst, oopDesc::klass_offset_in_bytes(), src);
  3325   }
  3325   }
  3326 }
  3326 }
  3327 
  3327 
  3328 void MacroAssembler::load_mirror(Register mirror, Register method) {
  3328 void MacroAssembler::load_mirror_from_const_method(Register mirror, Register const_method) {
  3329   const int mirror_offset = in_bytes(Klass::java_mirror_offset());
  3329   ld(mirror, in_bytes(ConstMethod::constants_offset()), const_method);
  3330   ld(mirror, in_bytes(Method::const_offset()), method);
       
  3331   ld(mirror, in_bytes(ConstMethod::constants_offset()), mirror);
       
  3332   ld(mirror, ConstantPool::pool_holder_offset_in_bytes(), mirror);
  3330   ld(mirror, ConstantPool::pool_holder_offset_in_bytes(), mirror);
  3333   ld(mirror, mirror_offset, mirror);
  3331   ld(mirror, in_bytes(Klass::java_mirror_offset()), mirror);
  3334 }
  3332 }
  3335 
  3333 
  3336 // Clear Array
  3334 // Clear Array
  3337 // Kills both input registers. tmp == R0 is allowed.
  3335 // Kills both input registers. tmp == R0 is allowed.
  3338 void MacroAssembler::clear_memory_doubleword(Register base_ptr, Register cnt_dwords, Register tmp) {
  3336 void MacroAssembler::clear_memory_doubleword(Register base_ptr, Register cnt_dwords, Register tmp) {
  4343  * @param t1              volatile register
  4341  * @param t1              volatile register
  4344  * @param t2              volatile register
  4342  * @param t2              volatile register
  4345  * @param t3              volatile register
  4343  * @param t3              volatile register
  4346  */
  4344  */
  4347 void MacroAssembler::kernel_crc32_1word_vpmsumd(Register crc, Register buf, Register len, Register table,
  4345 void MacroAssembler::kernel_crc32_1word_vpmsumd(Register crc, Register buf, Register len, Register table,
  4348                         Register constants,  Register barretConstants,
  4346                                                 Register constants,  Register barretConstants,
  4349                         Register t0,  Register t1, Register t2, Register t3, Register t4) {
  4347                                                 Register t0,  Register t1, Register t2, Register t3, Register t4) {
  4350   assert_different_registers(crc, buf, len, table);
  4348   assert_different_registers(crc, buf, len, table);
  4351 
  4349 
  4352   Label L_alignedHead, L_tail, L_alignTail, L_start, L_end;
  4350   Label L_alignedHead, L_tail, L_alignTail, L_start, L_end;
  4353 
  4351 
  4354   Register  prealign     = t0;
  4352   Register  prealign     = t0;