Mercurial > hg > graal-compiler
comparison src/cpu/x86/vm/macroAssembler_x86.cpp @ 12355:cefad50507d8
Merge with hs25-b53
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Fri, 11 Oct 2013 10:38:03 +0200 |
parents | 58fc8e2b7b6d 7944aba7ba41 |
children | 359f7e70ae7f |
comparison
equal
deleted
inserted
replaced
12058:ccb4f2af2319 | 12355:cefad50507d8 |
---|---|
1633 assert(number_of_arguments >= 0 , "cannot have negative number of arguments"); | 1633 assert(number_of_arguments >= 0 , "cannot have negative number of arguments"); |
1634 LP64_ONLY(assert(java_thread == r15_thread, "unexpected register")); | 1634 LP64_ONLY(assert(java_thread == r15_thread, "unexpected register")); |
1635 #ifdef ASSERT | 1635 #ifdef ASSERT |
1636 // TraceBytecodes does not use r12 but saves it over the call, so don't verify | 1636 // TraceBytecodes does not use r12 but saves it over the call, so don't verify |
1637 // r12 is the heapbase. | 1637 // r12 is the heapbase. |
1638 LP64_ONLY(if ((UseCompressedOops || UseCompressedKlassPointers) && !TraceBytecodes) verify_heapbase("call_VM_base: heap base corrupted?");) | 1638 LP64_ONLY(if ((UseCompressedOops || UseCompressedClassPointers) && !TraceBytecodes) verify_heapbase("call_VM_base: heap base corrupted?");) |
1639 #endif // ASSERT | 1639 #endif // ASSERT |
1640 | 1640 |
1641 assert(java_thread != oop_result , "cannot use the same register for java_thread & oop_result"); | 1641 assert(java_thread != oop_result , "cannot use the same register for java_thread & oop_result"); |
1642 assert(java_thread != last_java_sp, "cannot use the same register for java_thread & last_java_sp"); | 1642 assert(java_thread != last_java_sp, "cannot use the same register for java_thread & last_java_sp"); |
1643 | 1643 |
4800 } | 4800 } |
4801 | 4801 |
4802 | 4802 |
4803 void MacroAssembler::load_klass(Register dst, Register src) { | 4803 void MacroAssembler::load_klass(Register dst, Register src) { |
4804 #ifdef _LP64 | 4804 #ifdef _LP64 |
4805 if (UseCompressedKlassPointers) { | 4805 if (UseCompressedClassPointers) { |
4806 movl(dst, Address(src, oopDesc::klass_offset_in_bytes())); | 4806 movl(dst, Address(src, oopDesc::klass_offset_in_bytes())); |
4807 decode_klass_not_null(dst); | 4807 decode_klass_not_null(dst); |
4808 } else | 4808 } else |
4809 #endif | 4809 #endif |
4810 movptr(dst, Address(src, oopDesc::klass_offset_in_bytes())); | 4810 movptr(dst, Address(src, oopDesc::klass_offset_in_bytes())); |
4815 movptr(dst, Address(dst, Klass::prototype_header_offset())); | 4815 movptr(dst, Address(dst, Klass::prototype_header_offset())); |
4816 } | 4816 } |
4817 | 4817 |
4818 void MacroAssembler::store_klass(Register dst, Register src) { | 4818 void MacroAssembler::store_klass(Register dst, Register src) { |
4819 #ifdef _LP64 | 4819 #ifdef _LP64 |
4820 if (UseCompressedKlassPointers) { | 4820 if (UseCompressedClassPointers) { |
4821 encode_klass_not_null(src); | 4821 encode_klass_not_null(src); |
4822 movl(Address(dst, oopDesc::klass_offset_in_bytes()), src); | 4822 movl(Address(dst, oopDesc::klass_offset_in_bytes()), src); |
4823 } else | 4823 } else |
4824 #endif | 4824 #endif |
4825 movptr(Address(dst, oopDesc::klass_offset_in_bytes()), src); | 4825 movptr(Address(dst, oopDesc::klass_offset_in_bytes()), src); |
4890 #endif | 4890 #endif |
4891 } | 4891 } |
4892 | 4892 |
4893 #ifdef _LP64 | 4893 #ifdef _LP64 |
4894 void MacroAssembler::store_klass_gap(Register dst, Register src) { | 4894 void MacroAssembler::store_klass_gap(Register dst, Register src) { |
4895 if (UseCompressedKlassPointers) { | 4895 if (UseCompressedClassPointers) { |
4896 // Store to klass gap in destination | 4896 // Store to klass gap in destination |
4897 movl(Address(dst, oopDesc::klass_gap_offset_in_bytes()), src); | 4897 movl(Address(dst, oopDesc::klass_gap_offset_in_bytes()), src); |
4898 } | 4898 } |
4899 } | 4899 } |
4900 | 4900 |