Mercurial > hg > graal-compiler
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); |