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