1.1 --- a/src/cpu/ppc/vm/macroAssembler_ppc.cpp Thu Sep 05 11:04:39 2013 -0700 1.2 +++ b/src/cpu/ppc/vm/macroAssembler_ppc.cpp Fri Sep 06 10:13:17 2013 +0200 1.3 @@ -2382,17 +2382,11 @@ 1.4 1.5 void MacroAssembler::encode_klass_not_null(Register dst, Register src) { 1.6 if (src == noreg) src = dst; 1.7 - if (Universe::narrow_klass_base() != NULL) { 1.8 - // heapbased 1.9 - assert(Universe::narrow_klass_shift() != 0, "sanity"); 1.10 - sub(dst, src, R30); 1.11 - srdi(dst, dst, Universe::narrow_klass_shift()); 1.12 - } else if (Universe::narrow_klass_shift() != 0) { 1.13 - // zerobased 1.14 + assert(Universe::narrow_klass_base() != NULL, "Base should be initialized"); 1.15 + load_const(R0, Universe::narrow_klass_base()); 1.16 + sub(dst, src, R0); 1.17 + if (Universe::narrow_klass_shift() != 0) { 1.18 srdi(dst, src, Universe::narrow_klass_shift()); 1.19 - } else if (src != dst) { 1.20 - // unscaled 1.21 - mr(dst, src); 1.22 } 1.23 } 1.24 1.25 @@ -2407,18 +2401,14 @@ 1.26 1.27 void MacroAssembler::decode_klass_not_null(Register dst, Register src) { 1.28 if (src == noreg) src = dst; 1.29 - if (Universe::narrow_klass_base() != NULL) { 1.30 - // heapbased 1.31 - assert(Universe::narrow_klass_shift() != 0, "sanity"); 1.32 - sldi(dst, src, Universe::narrow_klass_shift()); 1.33 - add(dst, dst, R30); 1.34 - } else if (Universe::narrow_klass_shift() != 0) { 1.35 - // zerobased 1.36 - sldi(dst, src, Universe::narrow_klass_shift()); 1.37 - } else if (src != dst) { 1.38 - // unscaled 1.39 - mr(dst, src); 1.40 + Register shifted_src = src; 1.41 + assert(Universe::narrow_klass_base() != NULL, "Base should be initialized"); 1.42 + if (Universe::narrow_klass_shift() != 0) { 1.43 + shifted_src = dst; 1.44 + sldi(shifted_src, src, Universe::narrow_klass_shift()); 1.45 } 1.46 + load_const(R0, Universe::narrow_klass_base()); 1.47 + add(dst, shifted_src, R0); 1.48 } 1.49 1.50 void MacroAssembler::load_klass(Register dst, Register src) { 1.51 @@ -2441,7 +2431,13 @@ 1.52 } 1.53 1.54 void MacroAssembler::reinit_heapbase(Register d, Register tmp) { 1.55 - if (UseCompressedOops || UseCompressedKlassPointers) { 1.56 + if (Universe::heap() != NULL) { 1.57 + if (Universe::narrow_oop_base() == NULL) { 1.58 + Assembler::xorr(R30, R30, R30); 1.59 + } else { 1.60 + load_const(R30, Universe::narrow_ptrs_base(), tmp); 1.61 + } 1.62 + } else { 1.63 load_const(R30, Universe::narrow_ptrs_base_addr(), tmp); 1.64 ld(R30, 0, R30); 1.65 }