comparison src/cpu/sparc/vm/assembler_sparc.cpp @ 179:1f809e010142

Merge
author kamg
date Fri, 06 Jun 2008 13:43:36 -0400
parents feeb96a45707 6d172e3548cb
children d1605aabd0a1 6aae2f9d0294
comparison
equal deleted inserted replaced
175:f2759c126e9d 179:1f809e010142
3641 } 3641 }
3642 3642
3643 3643
3644 void MacroAssembler::encode_heap_oop(Register src, Register dst) { 3644 void MacroAssembler::encode_heap_oop(Register src, Register dst) {
3645 assert (UseCompressedOops, "must be compressed"); 3645 assert (UseCompressedOops, "must be compressed");
3646 verify_oop(src);
3646 Label done; 3647 Label done;
3647 if (src == dst) { 3648 if (src == dst) {
3648 // optimize for frequent case src == dst 3649 // optimize for frequent case src == dst
3649 bpr(rc_nz, true, Assembler::pt, src, done); 3650 bpr(rc_nz, true, Assembler::pt, src, done);
3650 delayed() -> sub(src, G6_heapbase, dst); // annuled if not taken 3651 delayed() -> sub(src, G6_heapbase, dst); // annuled if not taken
3662 } 3663 }
3663 3664
3664 3665
3665 void MacroAssembler::encode_heap_oop_not_null(Register r) { 3666 void MacroAssembler::encode_heap_oop_not_null(Register r) {
3666 assert (UseCompressedOops, "must be compressed"); 3667 assert (UseCompressedOops, "must be compressed");
3668 verify_oop(r);
3667 sub(r, G6_heapbase, r); 3669 sub(r, G6_heapbase, r);
3668 srlx(r, LogMinObjAlignmentInBytes, r); 3670 srlx(r, LogMinObjAlignmentInBytes, r);
3669 } 3671 }
3670 3672
3671 void MacroAssembler::encode_heap_oop_not_null(Register src, Register dst) { 3673 void MacroAssembler::encode_heap_oop_not_null(Register src, Register dst) {
3672 assert (UseCompressedOops, "must be compressed"); 3674 assert (UseCompressedOops, "must be compressed");
3675 verify_oop(src);
3673 sub(src, G6_heapbase, dst); 3676 sub(src, G6_heapbase, dst);
3674 srlx(dst, LogMinObjAlignmentInBytes, dst); 3677 srlx(dst, LogMinObjAlignmentInBytes, dst);
3675 } 3678 }
3676 3679
3677 // Same algorithm as oops.inline.hpp decode_heap_oop. 3680 // Same algorithm as oops.inline.hpp decode_heap_oop.
3680 Label done; 3683 Label done;
3681 sllx(src, LogMinObjAlignmentInBytes, dst); 3684 sllx(src, LogMinObjAlignmentInBytes, dst);
3682 bpr(rc_nz, true, Assembler::pt, dst, done); 3685 bpr(rc_nz, true, Assembler::pt, dst, done);
3683 delayed() -> add(dst, G6_heapbase, dst); // annuled if not taken 3686 delayed() -> add(dst, G6_heapbase, dst); // annuled if not taken
3684 bind(done); 3687 bind(done);
3688 verify_oop(dst);
3685 } 3689 }
3686 3690
3687 void MacroAssembler::decode_heap_oop_not_null(Register r) { 3691 void MacroAssembler::decode_heap_oop_not_null(Register r) {
3688 // Do not add assert code to this unless you change vtableStubs_sparc.cpp 3692 // Do not add assert code to this unless you change vtableStubs_sparc.cpp
3689 // pd_code_size_limit. 3693 // pd_code_size_limit.
3694 // Also do not verify_oop as this is called by verify_oop.
3690 assert (UseCompressedOops, "must be compressed"); 3695 assert (UseCompressedOops, "must be compressed");
3691 sllx(r, LogMinObjAlignmentInBytes, r); 3696 sllx(r, LogMinObjAlignmentInBytes, r);
3692 add(r, G6_heapbase, r); 3697 add(r, G6_heapbase, r);
3693 } 3698 }
3694 3699
3695 void MacroAssembler::decode_heap_oop_not_null(Register src, Register dst) { 3700 void MacroAssembler::decode_heap_oop_not_null(Register src, Register dst) {
3696 // Do not add assert code to this unless you change vtableStubs_sparc.cpp 3701 // Do not add assert code to this unless you change vtableStubs_sparc.cpp
3697 // pd_code_size_limit. 3702 // pd_code_size_limit.
3703 // Also do not verify_oop as this is called by verify_oop.
3698 assert (UseCompressedOops, "must be compressed"); 3704 assert (UseCompressedOops, "must be compressed");
3699 sllx(src, LogMinObjAlignmentInBytes, dst); 3705 sllx(src, LogMinObjAlignmentInBytes, dst);
3700 add(dst, G6_heapbase, dst); 3706 add(dst, G6_heapbase, dst);
3701 } 3707 }
3702 3708