782 LIR_Const* c = src->as_constant_ptr(); 783 LIR_Address* addr = dest->as_address_ptr(); 784 785 int null_check_here = code_offset(); 786 switch (type) { 787 case T_INT: // fall through 788 case T_FLOAT: 789 __ movl(as_Address(addr), c->as_jint_bits()); 790 break; 791 792 case T_ADDRESS: 793 __ movptr(as_Address(addr), c->as_jint_bits()); 794 break; 795 796 case T_OBJECT: // fall through 797 case T_ARRAY: 798 if (c->as_jobject() == NULL) { 799 if (UseCompressedOops && !wide) { 800 __ movl(as_Address(addr), (int32_t)NULL_WORD); 801 } else { 802 __ movptr(as_Address(addr), NULL_WORD); 803 } 804 } else { 805 if (is_literal_address(addr)) { 806 ShouldNotReachHere(); 807 __ movoop(as_Address(addr, noreg), c->as_jobject()); 808 } else { 809 #ifdef _LP64 810 __ movoop(rscratch1, c->as_jobject()); 811 if (UseCompressedOops && !wide) { 812 __ encode_heap_oop(rscratch1); 813 null_check_here = code_offset(); 814 __ movl(as_Address_lo(addr), rscratch1); 815 } else { 816 null_check_here = code_offset(); 817 __ movptr(as_Address_lo(addr), rscratch1); 818 } 819 #else 820 __ movoop(as_Address(addr), c->as_jobject()); 821 #endif 822 } | 782 LIR_Const* c = src->as_constant_ptr(); 783 LIR_Address* addr = dest->as_address_ptr(); 784 785 int null_check_here = code_offset(); 786 switch (type) { 787 case T_INT: // fall through 788 case T_FLOAT: 789 __ movl(as_Address(addr), c->as_jint_bits()); 790 break; 791 792 case T_ADDRESS: 793 __ movptr(as_Address(addr), c->as_jint_bits()); 794 break; 795 796 case T_OBJECT: // fall through 797 case T_ARRAY: 798 if (c->as_jobject() == NULL) { 799 if (UseCompressedOops && !wide) { 800 __ movl(as_Address(addr), (int32_t)NULL_WORD); 801 } else { 802 #ifdef _LP64 803 __ xorptr(rscratch1, rscratch1); 804 null_check_here = code_offset(); 805 __ movptr(as_Address(addr), rscratch1); 806 #else 807 __ movptr(as_Address(addr), NULL_WORD); 808 #endif 809 } 810 } else { 811 if (is_literal_address(addr)) { 812 ShouldNotReachHere(); 813 __ movoop(as_Address(addr, noreg), c->as_jobject()); 814 } else { 815 #ifdef _LP64 816 __ movoop(rscratch1, c->as_jobject()); 817 if (UseCompressedOops && !wide) { 818 __ encode_heap_oop(rscratch1); 819 null_check_here = code_offset(); 820 __ movl(as_Address_lo(addr), rscratch1); 821 } else { 822 null_check_here = code_offset(); 823 __ movptr(as_Address_lo(addr), rscratch1); 824 } 825 #else 826 __ movoop(as_Address(addr), c->as_jobject()); 827 #endif 828 } |