src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp Thu Apr 24 15:52:58 2014
--- new/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp Thu Apr 24 15:52:58 2014
*** 1010,1020 ****
--- 1010,1020 ----
#ifdef _LP64
if (UseCompressedOops && !wide) {
__ movptr(compressed_src, src->as_register());
__ encode_heap_oop(compressed_src);
if (patch_code != lir_patch_none) {
! info->oop_map()->set_narrowoop(compressed_src->as_VMReg());
! info->oop_map()->set_narrowoop(compressed_src.as_VMReg());
}
}
#endif
}
*** 1110,1120 ****
--- 1110,1120 ----
case T_BYTE: // fall through
case T_BOOLEAN: {
Register src_reg = src->as_register();
Address dst_addr = as_Address(to_addr);
! assert(VM_Version::is_P6() || src_reg->has_byte_register(), "must use byte registers if not P6");
! assert(VM_Version::is_P6() || src_reg.has_byte_register(), "must use byte registers if not P6");
__ movb(dst_addr, src_reg);
break;
}
case T_CHAR: // fall through
*** 1336,1346 ****
--- 1336,1346 ----
}
case T_BOOLEAN: // fall through
case T_BYTE: {
Register dest_reg = dest->as_register();
! assert(VM_Version::is_P6() || dest_reg->has_byte_register(), "must use byte registers if not P6");
! assert(VM_Version::is_P6() || dest_reg.has_byte_register(), "must use byte registers if not P6");
if (VM_Version::is_P6() || from_addr.uses(dest_reg)) {
__ movsbl(dest_reg, from_addr);
} else {
__ movb(dest_reg, from_addr);
__ shll(dest_reg, 24);
*** 1349,1359 ****
--- 1349,1359 ----
break;
}
case T_CHAR: {
Register dest_reg = dest->as_register();
! assert(VM_Version::is_P6() || dest_reg->has_byte_register(), "must use byte registers if not P6");
! assert(VM_Version::is_P6() || dest_reg.has_byte_register(), "must use byte registers if not P6");
if (VM_Version::is_P6() || from_addr.uses(dest_reg)) {
__ movzwl(dest_reg, from_addr);
} else {
__ movw(dest_reg, from_addr);
}
*** 1986,1996 ****
--- 1986,1996 ----
NOT_LP64(assert(op->addr()->is_single_cpu(), "must be single");)
Register addr = (op->addr()->is_single_cpu() ? op->addr()->as_register() : op->addr()->as_register_lo());
Register newval = op->new_value()->as_register();
Register cmpval = op->cmp_value()->as_register();
assert(cmpval == rax, "wrong register");
! assert(newval != NULL, "new val must be register");
! assert(newval != noreg, "new val must be register");
assert(cmpval != newval, "cmp and new values must be in different registers");
assert(cmpval != addr, "cmp and addr must be in different registers");
assert(newval != addr, "new value and addr must be in different registers");
if ( op->code() == lir_cas_obj) {
*** 2023,2033 ****
--- 2023,2033 ----
} else if (op->code() == lir_cas_long) {
Register addr = (op->addr()->is_single_cpu() ? op->addr()->as_register() : op->addr()->as_register_lo());
Register newval = op->new_value()->as_register_lo();
Register cmpval = op->cmp_value()->as_register_lo();
assert(cmpval == rax, "wrong register");
! assert(newval != NULL, "new val must be register");
! assert(newval != noreg, "new val must be register");
assert(cmpval != newval, "cmp and new values must be in different registers");
assert(cmpval != addr, "cmp and addr must be in different registers");
assert(newval != addr, "new value and addr must be in different registers");
if (os::is_MP()) {
__ lock();
src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File