< prev index next >
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
Print this page
@@ -554,15 +554,13 @@
// sparc has different condition codes for testing 32-bit
// vs. 64-bit values. We could always test xcc is we could
// guarantee that 32-bit loads always sign extended but that isn't
// true and since sign extension isn't free, it would impose a
// slight cost.
-#ifdef _LP64
if (op->type() == T_INT) {
__ br(acond, false, Assembler::pn, *(op->label()));
} else
-#endif
__ brx(acond, false, Assembler::pn, *(op->label()));
}
// The peephole pass fills the delay slot
}
@@ -574,16 +572,11 @@
switch(code) {
case Bytecodes::_i2l: {
Register rlo = dst->as_register_lo();
Register rhi = dst->as_register_hi();
Register rval = op->in_opr()->as_register();
-#ifdef _LP64
__ sra(rval, 0, rlo);
-#else
- __ mov(rval, rlo);
- __ sra(rval, BitsPerInt-1, rhi);
-#endif
break;
}
case Bytecodes::_i2d:
case Bytecodes::_i2f: {
bool is_double = (code == Bytecodes::_i2d);
@@ -612,15 +605,11 @@
}
case Bytecodes::_l2i: {
Register rlo = op->in_opr()->as_register_lo();
Register rhi = op->in_opr()->as_register_hi();
Register rdst = dst->as_register();
-#ifdef _LP64
__ sra(rlo, 0, rdst);
-#else
- __ mov(rlo, rdst);
-#endif
break;
}
case Bytecodes::_d2f:
case Bytecodes::_f2d: {
bool is_double = (code == Bytecodes::_f2d);
@@ -709,26 +698,20 @@
case T_BYTE : __ stb(from_reg->as_register(), base, offset); break;
case T_CHAR : __ sth(from_reg->as_register(), base, offset); break;
case T_SHORT : __ sth(from_reg->as_register(), base, offset); break;
case T_INT : __ stw(from_reg->as_register(), base, offset); break;
case T_LONG :
-#ifdef _LP64
if (unaligned || PatchALot) {
// Don't use O7 here because it may be equal to 'base' (see LIR_Assembler::reg2mem)
assert(G3_scratch != base, "can't handle this");
assert(G3_scratch != from_reg->as_register_lo(), "can't handle this");
__ srax(from_reg->as_register_lo(), 32, G3_scratch);
__ stw(from_reg->as_register_lo(), base, offset + lo_word_offset_in_bytes);
__ stw(G3_scratch, base, offset + hi_word_offset_in_bytes);
} else {
__ stx(from_reg->as_register_lo(), base, offset);
}
-#else
- assert(Assembler::is_simm13(offset + 4), "must be");
- __ stw(from_reg->as_register_lo(), base, offset + lo_word_offset_in_bytes);
- __ stw(from_reg->as_register_hi(), base, offset + hi_word_offset_in_bytes);
-#endif
break;
case T_ADDRESS:
case T_METADATA:
__ st_ptr(from_reg->as_register(), base, offset);
break;
@@ -776,16 +759,11 @@
case T_BYTE : __ stb(from_reg->as_register(), base, disp); break;
case T_CHAR : __ sth(from_reg->as_register(), base, disp); break;
case T_SHORT : __ sth(from_reg->as_register(), base, disp); break;
case T_INT : __ stw(from_reg->as_register(), base, disp); break;
case T_LONG :
-#ifdef _LP64
__ stx(from_reg->as_register_lo(), base, disp);
-#else
- assert(from_reg->as_register_hi()->successor() == from_reg->as_register_lo(), "must match");
- __ std(from_reg->as_register_hi(), base, disp);
-#endif
break;
case T_ADDRESS:
__ st_ptr(from_reg->as_register(), base, disp);
break;
case T_ARRAY : // fall through
@@ -824,44 +802,26 @@
case T_CHAR : __ lduh(base, offset, to_reg->as_register()); break;
case T_SHORT : __ ldsh(base, offset, to_reg->as_register()); break;
case T_INT : __ ld(base, offset, to_reg->as_register()); break;
case T_LONG :
if (!unaligned && !PatchALot) {
-#ifdef _LP64
__ ldx(base, offset, to_reg->as_register_lo());
-#else
- assert(to_reg->as_register_hi()->successor() == to_reg->as_register_lo(),
- "must be sequential");
- __ ldd(base, offset, to_reg->as_register_hi());
-#endif
} else {
-#ifdef _LP64
assert(base != to_reg->as_register_lo(), "can't handle this");
assert(O7 != to_reg->as_register_lo(), "can't handle this");
__ ld(base, offset + hi_word_offset_in_bytes, to_reg->as_register_lo());
__ lduw(base, offset + lo_word_offset_in_bytes, O7); // in case O7 is base or offset, use it last
__ sllx(to_reg->as_register_lo(), 32, to_reg->as_register_lo());
__ or3(to_reg->as_register_lo(), O7, to_reg->as_register_lo());
-#else
- if (base == to_reg->as_register_lo()) {
- __ ld(base, offset + hi_word_offset_in_bytes, to_reg->as_register_hi());
- __ ld(base, offset + lo_word_offset_in_bytes, to_reg->as_register_lo());
- } else {
- __ ld(base, offset + lo_word_offset_in_bytes, to_reg->as_register_lo());
- __ ld(base, offset + hi_word_offset_in_bytes, to_reg->as_register_hi());
- }
-#endif
}
break;
case T_METADATA: __ ld_ptr(base, offset, to_reg->as_register()); break;
case T_ADDRESS:
-#ifdef _LP64
if (offset == oopDesc::klass_offset_in_bytes() && UseCompressedClassPointers) {
__ lduw(base, offset, to_reg->as_register());
__ decode_klass_not_null(to_reg->as_register());
} else
-#endif
{
__ ld_ptr(base, offset, to_reg->as_register());
}
break;
case T_ARRAY : // fall through
@@ -919,17 +879,11 @@
break;
}
case T_FLOAT: __ ldf(FloatRegisterImpl::S, base, disp, to_reg->as_float_reg()); break;
case T_DOUBLE: __ ldf(FloatRegisterImpl::D, base, disp, to_reg->as_double_reg()); break;
case T_LONG :
-#ifdef _LP64
__ ldx(base, disp, to_reg->as_register_lo());
-#else
- assert(to_reg->as_register_hi()->successor() == to_reg->as_register_lo(),
- "must be sequential");
- __ ldd(base, disp, to_reg->as_register_hi());
-#endif
break;
default : ShouldNotReachHere();
}
if (type == T_ARRAY || type == T_OBJECT) {
__ verify_oop(to_reg->as_register());
@@ -1105,20 +1059,13 @@
case T_LONG:
{
jlong con = c->as_jlong();
if (to_reg->is_double_cpu()) {
-#ifdef _LP64
__ set(con, to_reg->as_register_lo());
-#else
- __ set(low(con), to_reg->as_register_lo());
- __ set(high(con), to_reg->as_register_hi());
-#endif
-#ifdef _LP64
} else if (to_reg->is_single_cpu()) {
__ set(con, to_reg->as_register());
-#endif
} else {
ShouldNotReachHere();
assert(to_reg->is_double_fpu(), "wrong register kind");
Address temp_slot_lo(SP, ((frame::register_save_words ) * wordSize) + STACK_BIAS);
Address temp_slot_hi(SP, ((frame::register_save_words) * wordSize) + (longSize/2) + STACK_BIAS);
@@ -1188,16 +1135,11 @@
__ patchable_sethi(const_addrlit, O7);
__ relocate(rspec);
__ ldf (FloatRegisterImpl::D, O7, const_addrlit.low10(), to_reg->as_double_reg());
} else {
assert(to_reg->is_double_cpu(), "Must be a long register.");
-#ifdef _LP64
__ set(jlong_cast(c->as_jdouble()), to_reg->as_register_lo());
-#else
- __ set(low(jlong_cast(c->as_jdouble())), to_reg->as_register_lo());
- __ set(high(jlong_cast(c->as_jdouble())), to_reg->as_register_hi());
-#endif
}
}
break;
@@ -1364,26 +1306,14 @@
assert(to_reg->is_single_fpu(), "should match");
__ fmov(FloatRegisterImpl::S, from_reg->as_float_reg(), to_reg->as_float_reg());
}
} else if (!from_reg->is_float_kind() && !to_reg->is_float_kind()) {
if (from_reg->is_double_cpu()) {
-#ifdef _LP64
__ mov(from_reg->as_pointer_register(), to_reg->as_pointer_register());
-#else
- assert(to_reg->is_double_cpu() &&
- from_reg->as_register_hi() != to_reg->as_register_lo() &&
- from_reg->as_register_lo() != to_reg->as_register_hi(),
- "should both be long and not overlap");
- // long to long moves
- __ mov(from_reg->as_register_hi(), to_reg->as_register_hi());
- __ mov(from_reg->as_register_lo(), to_reg->as_register_lo());
-#endif
-#ifdef _LP64
} else if (to_reg->is_double_cpu()) {
// int to int moves
__ mov(from_reg->as_register(), to_reg->as_register_lo());
-#endif
} else {
// int to int moves
__ mov(from_reg->as_register(), to_reg->as_register());
}
} else {
@@ -1459,24 +1389,10 @@
void LIR_Assembler::return_op(LIR_Opr result) {
if (StackReservedPages > 0 && compilation()->has_reserved_stack_access()) {
__ reserved_stack_check();
}
// the poll may need a register so just pick one that isn't the return register
-#if defined(TIERED) && !defined(_LP64)
- if (result->type_field() == LIR_OprDesc::long_type) {
- // Must move the result to G1
- // Must leave proper result in O0,O1 and G1 (TIERED only)
- __ sllx(I0, 32, G1); // Shift bits into high G1
- __ srl (I1, 0, I1); // Zero extend O1 (harmless?)
- __ or3 (I1, G1, G1); // OR 64 bits into G1
-#ifdef ASSERT
- // mangle it so any problems will show up
- __ set(0xdeadbeef, I0);
- __ set(0xdeadbeef, I1);
-#endif
- }
-#endif // TIERED
__ set((intptr_t)os::get_polling_page(), L0);
__ relocate(relocInfo::poll_return_type);
__ ld_ptr(L0, 0, G0);
__ ret();
__ delayed()->restore();
@@ -1566,27 +1482,15 @@
} else if (opr1->is_double_cpu()) {
Register xlo = opr1->as_register_lo();
Register xhi = opr1->as_register_hi();
if (opr2->is_constant() && opr2->as_jlong() == 0) {
assert(condition == lir_cond_equal || condition == lir_cond_notEqual, "only handles these cases");
-#ifdef _LP64
__ orcc(xhi, G0, G0);
-#else
- __ orcc(xhi, xlo, G0);
-#endif
} else if (opr2->is_register()) {
Register ylo = opr2->as_register_lo();
Register yhi = opr2->as_register_hi();
-#ifdef _LP64
__ cmp(xlo, ylo);
-#else
- __ subcc(xlo, ylo, xlo);
- __ subccc(xhi, yhi, xhi);
- if (condition == lir_cond_equal || condition == lir_cond_notEqual) {
- __ orcc(xhi, xlo, G0);
- }
-#endif
} else {
ShouldNotReachHere();
}
} else if (opr1->is_address()) {
LIR_Address * addr = opr1->as_address_ptr();
@@ -1610,17 +1514,11 @@
__ float_cmp(false, is_unordered_less ? -1 : 1, left->as_double_reg(), right->as_double_reg(), dst->as_register());
} else {
ShouldNotReachHere();
}
} else if (code == lir_cmp_l2i) {
-#ifdef _LP64
__ lcmp(left->as_register_lo(), right->as_register_lo(), dst->as_register());
-#else
- __ lcmp(left->as_register_hi(), left->as_register_lo(),
- right->as_register_hi(), right->as_register_lo(),
- dst->as_register());
-#endif
} else {
ShouldNotReachHere();
}
}
@@ -1654,15 +1552,13 @@
stack2reg(opr1, result, result->type());
} else {
ShouldNotReachHere();
}
Label skip;
-#ifdef _LP64
if (type == T_INT) {
__ br(acond, false, Assembler::pt, skip);
} else
-#endif
__ brx(acond, false, Assembler::pt, skip); // checks icc on 32bit and xcc on 64bit
if (opr1->is_constant() && opr1->type() == T_INT) {
Register dest = result->as_register();
if (Assembler::is_simm13(opr1->as_jint())) {
__ delayed()->or3(G0, opr1->as_jint(), dest);
@@ -1718,11 +1614,10 @@
case lir_div_strictfp: __ fdiv(w, lreg, rreg, res); break;
default: ShouldNotReachHere();
}
} else if (dest->is_double_cpu()) {
-#ifdef _LP64
Register dst_lo = dest->as_register_lo();
Register op1_lo = left->as_pointer_register();
Register op2_lo = right->as_pointer_register();
switch (code) {
@@ -1734,32 +1629,10 @@
__ sub(op1_lo, op2_lo, dst_lo);
break;
default: ShouldNotReachHere();
}
-#else
- Register op1_lo = left->as_register_lo();
- Register op1_hi = left->as_register_hi();
- Register op2_lo = right->as_register_lo();
- Register op2_hi = right->as_register_hi();
- Register dst_lo = dest->as_register_lo();
- Register dst_hi = dest->as_register_hi();
-
- switch (code) {
- case lir_add:
- __ addcc(op1_lo, op2_lo, dst_lo);
- __ addc (op1_hi, op2_hi, dst_hi);
- break;
-
- case lir_sub:
- __ subcc(op1_lo, op2_lo, dst_lo);
- __ subc (op1_hi, op2_hi, dst_hi);
- break;
-
- default: ShouldNotReachHere();
- }
-#endif
} else {
assert (right->is_single_cpu(), "Just Checking");
Register lreg = left->as_register();
Register res = dest->as_register();
@@ -1850,27 +1723,18 @@
long c = right->as_constant_ptr()->as_jlong();
assert(c == (int)c && Assembler::is_simm13(c), "out of range");
int simm13 = (int)c;
switch (code) {
case lir_logic_and:
-#ifndef _LP64
- __ and3 (left->as_register_hi(), 0, dest->as_register_hi());
-#endif
__ and3 (left->as_register_lo(), simm13, dest->as_register_lo());
break;
case lir_logic_or:
-#ifndef _LP64
- __ or3 (left->as_register_hi(), 0, dest->as_register_hi());
-#endif
__ or3 (left->as_register_lo(), simm13, dest->as_register_lo());
break;
case lir_logic_xor:
-#ifndef _LP64
- __ xor3 (left->as_register_hi(), 0, dest->as_register_hi());
-#endif
__ xor3 (left->as_register_lo(), simm13, dest->as_register_lo());
break;
default: ShouldNotReachHere();
}
@@ -1884,11 +1748,10 @@
case lir_logic_or: __ or3 (left->as_register(), right->as_register(), dest->as_register()); break;
case lir_logic_xor: __ xor3 (left->as_register(), right->as_register(), dest->as_register()); break;
default: ShouldNotReachHere();
}
} else {
-#ifdef _LP64
Register l = (left->is_single_cpu() && left->is_oop_register()) ? left->as_register() :
left->as_register_lo();
Register r = (right->is_single_cpu() && right->is_oop_register()) ? right->as_register() :
right->as_register_lo();
@@ -1896,30 +1759,10 @@
case lir_logic_and: __ and3 (l, r, dest->as_register_lo()); break;
case lir_logic_or: __ or3 (l, r, dest->as_register_lo()); break;
case lir_logic_xor: __ xor3 (l, r, dest->as_register_lo()); break;
default: ShouldNotReachHere();
}
-#else
- switch (code) {
- case lir_logic_and:
- __ and3 (left->as_register_hi(), right->as_register_hi(), dest->as_register_hi());
- __ and3 (left->as_register_lo(), right->as_register_lo(), dest->as_register_lo());
- break;
-
- case lir_logic_or:
- __ or3 (left->as_register_hi(), right->as_register_hi(), dest->as_register_hi());
- __ or3 (left->as_register_lo(), right->as_register_lo(), dest->as_register_lo());
- break;
-
- case lir_logic_xor:
- __ xor3 (left->as_register_hi(), right->as_register_hi(), dest->as_register_hi());
- __ xor3 (left->as_register_lo(), right->as_register_lo(), dest->as_register_lo());
- break;
-
- default: ShouldNotReachHere();
- }
-#endif
}
}
}
@@ -1973,16 +1816,14 @@
int flags = op->flags();
ciArrayKlass* default_type = op->expected_type();
BasicType basic_type = default_type != NULL ? default_type->element_type()->basic_type() : T_ILLEGAL;
if (basic_type == T_ARRAY) basic_type = T_OBJECT;
-#ifdef _LP64
// higher 32bits must be null
__ sra(dst_pos, 0, dst_pos);
__ sra(src_pos, 0, src_pos);
__ sra(length, 0, length);
-#endif
// set up the arraycopy stub information
ArrayCopyStub* stub = op->stub();
// always do stub if no type information is available. it's ok if
@@ -2314,48 +2155,36 @@
}
void LIR_Assembler::shift_op(LIR_Code code, LIR_Opr left, LIR_Opr count, LIR_Opr dest, LIR_Opr tmp) {
if (dest->is_single_cpu()) {
-#ifdef _LP64
if (left->type() == T_OBJECT) {
switch (code) {
case lir_shl: __ sllx (left->as_register(), count->as_register(), dest->as_register()); break;
case lir_shr: __ srax (left->as_register(), count->as_register(), dest->as_register()); break;
case lir_ushr: __ srl (left->as_register(), count->as_register(), dest->as_register()); break;
default: ShouldNotReachHere();
}
} else
-#endif
switch (code) {
case lir_shl: __ sll (left->as_register(), count->as_register(), dest->as_register()); break;
case lir_shr: __ sra (left->as_register(), count->as_register(), dest->as_register()); break;
case lir_ushr: __ srl (left->as_register(), count->as_register(), dest->as_register()); break;
default: ShouldNotReachHere();
}
} else {
-#ifdef _LP64
switch (code) {
case lir_shl: __ sllx (left->as_register_lo(), count->as_register(), dest->as_register_lo()); break;
case lir_shr: __ srax (left->as_register_lo(), count->as_register(), dest->as_register_lo()); break;
case lir_ushr: __ srlx (left->as_register_lo(), count->as_register(), dest->as_register_lo()); break;
default: ShouldNotReachHere();
}
-#else
- switch (code) {
- case lir_shl: __ lshl (left->as_register_hi(), left->as_register_lo(), count->as_register(), dest->as_register_hi(), dest->as_register_lo(), G3_scratch); break;
- case lir_shr: __ lshr (left->as_register_hi(), left->as_register_lo(), count->as_register(), dest->as_register_hi(), dest->as_register_lo(), G3_scratch); break;
- case lir_ushr: __ lushr (left->as_register_hi(), left->as_register_lo(), count->as_register(), dest->as_register_hi(), dest->as_register_lo(), G3_scratch); break;
- default: ShouldNotReachHere();
- }
-#endif
}
}
void LIR_Assembler::shift_op(LIR_Code code, LIR_Opr left, jint count, LIR_Opr dest) {
-#ifdef _LP64
if (left->type() == T_OBJECT) {
count = count & 63; // shouldn't shift by more than sizeof(intptr_t)
Register l = left->as_register();
Register d = dest->as_register_lo();
switch (code) {
@@ -2364,11 +2193,10 @@
case lir_ushr: __ srlx (l, count, d); break;
default: ShouldNotReachHere();
}
return;
}
-#endif
if (dest->is_single_cpu()) {
count = count & 0x1F; // Java spec
switch (code) {
case lir_shl: __ sll (left->as_register(), count, dest->as_register()); break;
@@ -2423,11 +2251,11 @@
op->tmp2()->as_register() == G3 &&
op->tmp3()->as_register() == G4 &&
op->tmp4()->as_register() == O1 &&
op->klass()->as_register() == G5, "must be");
- LP64_ONLY( __ signx(op->len()->as_register()); )
+ __ signx(op->len()->as_register());
if (UseSlowPath ||
(!UseFastNewObjectArray && (op->type() == T_OBJECT || op->type() == T_ARRAY)) ||
(!UseFastNewTypeArray && (op->type() != T_OBJECT && op->type() != T_ARRAY))) {
__ br(Assembler::always, false, Assembler::pt, *op->stub()->entry());
__ delayed()->nop();
@@ -2746,35 +2574,17 @@
Register cmp_value_hi = op->cmp_value()->as_register_hi();
Register new_value_lo = op->new_value()->as_register_lo();
Register new_value_hi = op->new_value()->as_register_hi();
Register t1 = op->tmp1()->as_register();
Register t2 = op->tmp2()->as_register();
-#ifdef _LP64
__ mov(cmp_value_lo, t1);
__ mov(new_value_lo, t2);
// perform the compare and swap operation
__ casx(addr, t1, t2);
// generate condition code - if the swap succeeded, t2 ("new value" reg) was
// overwritten with the original value in "addr" and will be equal to t1.
__ cmp(t1, t2);
-#else
- // move high and low halves of long values into single registers
- __ sllx(cmp_value_hi, 32, t1); // shift high half into temp reg
- __ srl(cmp_value_lo, 0, cmp_value_lo); // clear upper 32 bits of low half
- __ or3(t1, cmp_value_lo, t1); // t1 holds 64-bit compare value
- __ sllx(new_value_hi, 32, t2);
- __ srl(new_value_lo, 0, new_value_lo);
- __ or3(t2, new_value_lo, t2); // t2 holds 64-bit value to swap
- // perform the compare and swap operation
- __ casx(addr, t1, t2);
- // generate condition code - if the swap succeeded, t2 ("new value" reg) was
- // overwritten with the original value in "addr" and will be equal to t1.
- // Produce icc flag for 32bit.
- __ sub(t1, t2, t2);
- __ srlx(t2, 32, t1);
- __ orcc(t2, t1, G0);
-#endif
} else if (op->code() == lir_cas_int || op->code() == lir_cas_obj) {
Register addr = op->addr()->as_pointer_register();
Register cmp_value = op->cmp_value()->as_register();
Register new_value = op->new_value()->as_register();
Register t1 = op->tmp1()->as_register();
@@ -2912,17 +2722,12 @@
assert(md != NULL, "Sanity");
ciProfileData* data = md->bci_to_data(bci);
assert(data->is_CounterData(), "need CounterData for calls");
assert(op->mdo()->is_single_cpu(), "mdo must be allocated");
Register mdo = op->mdo()->as_register();
-#ifdef _LP64
assert(op->tmp1()->is_double_cpu(), "tmp1 must be allocated");
Register tmp1 = op->tmp1()->as_register_lo();
-#else
- assert(op->tmp1()->is_single_cpu(), "tmp1 must be allocated");
- Register tmp1 = op->tmp1()->as_register();
-#endif
metadata2reg(md->constant_encoding(), mdo);
int mdo_offset_bias = 0;
if (!Assembler::is_simm13(md->byte_offset_of_slot(data, CounterData::count_offset()) +
data->size_in_bytes())) {
// The offset is large so bias the mdo by the base of the slot so
@@ -3198,16 +3003,11 @@
__ fneg(FloatRegisterImpl::D, left->as_double_reg(), dest->as_double_reg());
} else {
assert (left->is_double_cpu(), "Must be a long");
Register Rlow = left->as_register_lo();
Register Rhi = left->as_register_hi();
-#ifdef _LP64
__ sub(G0, Rlow, dest->as_register_lo());
-#else
- __ subcc(G0, Rlow, dest->as_register_lo());
- __ subc (G0, Rhi, dest->as_register_hi());
-#endif
}
}
void LIR_Assembler::fxch(int i) {
@@ -3243,13 +3043,11 @@
#endif // ASSERT
}
void LIR_Assembler::volatile_move_op(LIR_Opr src, LIR_Opr dest, BasicType type, CodeEmitInfo* info) {
-#ifdef _LP64
ShouldNotReachHere();
-#endif
NEEDS_CLEANUP;
if (type == T_LONG) {
LIR_Address* mem_addr = dest->is_address() ? dest->as_address_ptr() : src->as_address_ptr();
@@ -3489,35 +3287,10 @@
} else {
LIR_Op* delay_op = new LIR_OpDelay(new LIR_Op0(lir_nop), op->as_OpJavaCall()->info());
inst->insert_before(i + 1, delay_op);
i++;
}
-
-#if defined(TIERED) && !defined(_LP64)
- // fixup the return value from G1 to O0/O1 for long returns.
- // It's done here instead of in LIRGenerator because there's
- // such a mismatch between the single reg and double reg
- // calling convention.
- LIR_OpJavaCall* callop = op->as_OpJavaCall();
- if (callop->result_opr() == FrameMap::out_long_opr) {
- LIR_OpJavaCall* call;
- LIR_OprList* arguments = new LIR_OprList(callop->arguments()->length());
- for (int a = 0; a < arguments->length(); a++) {
- arguments[a] = callop->arguments()[a];
- }
- if (op->code() == lir_virtual_call) {
- call = new LIR_OpJavaCall(op->code(), callop->method(), callop->receiver(), FrameMap::g1_long_single_opr,
- callop->vtable_offset(), arguments, callop->info());
- } else {
- call = new LIR_OpJavaCall(op->code(), callop->method(), callop->receiver(), FrameMap::g1_long_single_opr,
- callop->addr(), arguments, callop->info());
- }
- inst->at_put(i - 1, call);
- inst->insert_before(i + 1, new LIR_Op1(lir_unpack64, FrameMap::g1_long_single_opr, callop->result_opr(),
- T_LONG, lir_patch_none, NULL));
- }
-#endif
break;
}
}
}
}
@@ -3531,18 +3304,14 @@
if (data->type() == T_INT) {
__ swap(as_Address(addr), data->as_register());
} else if (data->is_oop()) {
Register obj = data->as_register();
Register narrow = tmp->as_register();
-#ifdef _LP64
assert(UseCompressedOops, "swap is 32bit only");
__ encode_heap_oop(obj, narrow);
__ swap(as_Address(addr), narrow);
__ decode_heap_oop(narrow, obj);
-#else
- __ swap(as_Address(addr), obj);
-#endif
} else {
ShouldNotReachHere();
}
}
< prev index next >