Mercurial > hg > graal-compiler
comparison src/cpu/ppc/vm/macroAssembler_ppc.cpp @ 14413:7687c56b6693
8024379: Adapt PPC64 port to 8003424
Reviewed-by: coleenp
author | goetz |
---|---|
date | Fri, 06 Sep 2013 10:13:17 +0200 |
parents | ec28f9c041ff |
children | a0d02bb625e2 |
comparison
equal
deleted
inserted
replaced
14412:e2722a66aba7 | 14413:7687c56b6693 |
---|---|
2380 } | 2380 } |
2381 | 2381 |
2382 | 2382 |
2383 void MacroAssembler::encode_klass_not_null(Register dst, Register src) { | 2383 void MacroAssembler::encode_klass_not_null(Register dst, Register src) { |
2384 if (src == noreg) src = dst; | 2384 if (src == noreg) src = dst; |
2385 if (Universe::narrow_klass_base() != NULL) { | 2385 assert(Universe::narrow_klass_base() != NULL, "Base should be initialized"); |
2386 // heapbased | 2386 load_const(R0, Universe::narrow_klass_base()); |
2387 assert(Universe::narrow_klass_shift() != 0, "sanity"); | 2387 sub(dst, src, R0); |
2388 sub(dst, src, R30); | 2388 if (Universe::narrow_klass_shift() != 0) { |
2389 srdi(dst, dst, Universe::narrow_klass_shift()); | |
2390 } else if (Universe::narrow_klass_shift() != 0) { | |
2391 // zerobased | |
2392 srdi(dst, src, Universe::narrow_klass_shift()); | 2389 srdi(dst, src, Universe::narrow_klass_shift()); |
2393 } else if (src != dst) { | |
2394 // unscaled | |
2395 mr(dst, src); | |
2396 } | 2390 } |
2397 } | 2391 } |
2398 | 2392 |
2399 void MacroAssembler::store_klass(Register dst_oop, Register klass, Register ck) { | 2393 void MacroAssembler::store_klass(Register dst_oop, Register klass, Register ck) { |
2400 if (UseCompressedKlassPointers) { | 2394 if (UseCompressedKlassPointers) { |
2405 } | 2399 } |
2406 } | 2400 } |
2407 | 2401 |
2408 void MacroAssembler::decode_klass_not_null(Register dst, Register src) { | 2402 void MacroAssembler::decode_klass_not_null(Register dst, Register src) { |
2409 if (src == noreg) src = dst; | 2403 if (src == noreg) src = dst; |
2410 if (Universe::narrow_klass_base() != NULL) { | 2404 Register shifted_src = src; |
2411 // heapbased | 2405 assert(Universe::narrow_klass_base() != NULL, "Base should be initialized"); |
2412 assert(Universe::narrow_klass_shift() != 0, "sanity"); | 2406 if (Universe::narrow_klass_shift() != 0) { |
2413 sldi(dst, src, Universe::narrow_klass_shift()); | 2407 shifted_src = dst; |
2414 add(dst, dst, R30); | 2408 sldi(shifted_src, src, Universe::narrow_klass_shift()); |
2415 } else if (Universe::narrow_klass_shift() != 0) { | 2409 } |
2416 // zerobased | 2410 load_const(R0, Universe::narrow_klass_base()); |
2417 sldi(dst, src, Universe::narrow_klass_shift()); | 2411 add(dst, shifted_src, R0); |
2418 } else if (src != dst) { | |
2419 // unscaled | |
2420 mr(dst, src); | |
2421 } | |
2422 } | 2412 } |
2423 | 2413 |
2424 void MacroAssembler::load_klass(Register dst, Register src) { | 2414 void MacroAssembler::load_klass(Register dst, Register src) { |
2425 if (UseCompressedKlassPointers) { | 2415 if (UseCompressedKlassPointers) { |
2426 lwz(dst, oopDesc::klass_offset_in_bytes(), src); | 2416 lwz(dst, oopDesc::klass_offset_in_bytes(), src); |
2439 } | 2429 } |
2440 load_klass(dst, src); | 2430 load_klass(dst, src); |
2441 } | 2431 } |
2442 | 2432 |
2443 void MacroAssembler::reinit_heapbase(Register d, Register tmp) { | 2433 void MacroAssembler::reinit_heapbase(Register d, Register tmp) { |
2444 if (UseCompressedOops || UseCompressedKlassPointers) { | 2434 if (Universe::heap() != NULL) { |
2435 if (Universe::narrow_oop_base() == NULL) { | |
2436 Assembler::xorr(R30, R30, R30); | |
2437 } else { | |
2438 load_const(R30, Universe::narrow_ptrs_base(), tmp); | |
2439 } | |
2440 } else { | |
2445 load_const(R30, Universe::narrow_ptrs_base_addr(), tmp); | 2441 load_const(R30, Universe::narrow_ptrs_base_addr(), tmp); |
2446 ld(R30, 0, R30); | 2442 ld(R30, 0, R30); |
2447 } | 2443 } |
2448 } | 2444 } |
2449 | 2445 |