comparison src/cpu/sparc/vm/assembler_sparc.cpp @ 124:b130b98db9cf

6689060: Escape Analysis does not work with Compressed Oops Summary: 64-bits VM crashes with -XX:+AggresiveOpts (Escape Analysis + Compressed Oops) Reviewed-by: never, sgoldman
author kvn
date Wed, 23 Apr 2008 11:20:36 -0700
parents ba764ed4b6f2
children c436414a719e 6d172e3548cb 37f87013dfd8
comparison
equal deleted inserted replaced
123:9e5a7340635e 124:b130b98db9cf
3645 assert (UseCompressedOops, "must be compressed"); 3645 assert (UseCompressedOops, "must be compressed");
3646 sub(r, G6_heapbase, r); 3646 sub(r, G6_heapbase, r);
3647 srlx(r, LogMinObjAlignmentInBytes, r); 3647 srlx(r, LogMinObjAlignmentInBytes, r);
3648 } 3648 }
3649 3649
3650 void MacroAssembler::encode_heap_oop_not_null(Register src, Register dst) {
3651 assert (UseCompressedOops, "must be compressed");
3652 sub(src, G6_heapbase, dst);
3653 srlx(dst, LogMinObjAlignmentInBytes, dst);
3654 }
3655
3650 // Same algorithm as oops.inline.hpp decode_heap_oop. 3656 // Same algorithm as oops.inline.hpp decode_heap_oop.
3651 void MacroAssembler::decode_heap_oop(Register src, Register dst) { 3657 void MacroAssembler::decode_heap_oop(Register src, Register dst) {
3652 assert (UseCompressedOops, "must be compressed"); 3658 assert (UseCompressedOops, "must be compressed");
3653 Label done; 3659 Label done;
3654 sllx(src, LogMinObjAlignmentInBytes, dst); 3660 sllx(src, LogMinObjAlignmentInBytes, dst);
3663 assert (UseCompressedOops, "must be compressed"); 3669 assert (UseCompressedOops, "must be compressed");
3664 sllx(r, LogMinObjAlignmentInBytes, r); 3670 sllx(r, LogMinObjAlignmentInBytes, r);
3665 add(r, G6_heapbase, r); 3671 add(r, G6_heapbase, r);
3666 } 3672 }
3667 3673
3674 void MacroAssembler::decode_heap_oop_not_null(Register src, Register dst) {
3675 // Do not add assert code to this unless you change vtableStubs_sparc.cpp
3676 // pd_code_size_limit.
3677 assert (UseCompressedOops, "must be compressed");
3678 sllx(src, LogMinObjAlignmentInBytes, dst);
3679 add(dst, G6_heapbase, dst);
3680 }
3681
3668 void MacroAssembler::reinit_heapbase() { 3682 void MacroAssembler::reinit_heapbase() {
3669 if (UseCompressedOops) { 3683 if (UseCompressedOops) {
3670 // call indirectly to solve generation ordering problem 3684 // call indirectly to solve generation ordering problem
3671 Address base(G6_heapbase, (address)Universe::heap_base_addr()); 3685 Address base(G6_heapbase, (address)Universe::heap_base_addr());
3672 load_ptr_contents(base, G6_heapbase); 3686 load_ptr_contents(base, G6_heapbase);