diff --git a/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp index 4ab4d3be8f3..24268a07b9b 100644 --- a/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp @@ -1219,6 +1219,8 @@ void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) { } void LIR_Assembler::increment_mdo(MacroAssembler *masm, Address dst, int32_t src) { + assert(masm->is_C1_MacroAssembler(), "must be"); + #undef __ #define __ ((C1_MacroAssembler*)masm)-> int ratio_shift = exact_log2(ProfileCaptureRatio); diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp index ee81cd91165..e0247186156 100644 --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp @@ -2830,7 +2830,7 @@ void MacroAssembler::decrementw(Register reg, int value) { if (value < 0) { incrementw(reg, -value); return; } if (value == 0) { return; } - if (value < (1 << 12)) { subw(reg, reg, value); return; } + if (value < (1 << 24)) { subw(reg, reg, value); return; } /* else */ { guarantee(reg != rscratch2, "invalid dst for register decrement"); movw(rscratch2, (unsigned)value); @@ -2842,7 +2842,7 @@ void MacroAssembler::decrement(Register reg, int value) { if (value < 0) { increment(reg, -value); return; } if (value == 0) { return; } - if (value < (1 << 12)) { sub(reg, reg, value); return; } + if (value < (1 << 24)) { sub(reg, reg, value); return; } /* else */ { assert(reg != rscratch2, "invalid dst for register decrement"); mov(rscratch2, (uint64_t)value); @@ -2854,7 +2854,7 @@ void MacroAssembler::decrementw(Address dst, int value) { assert(!dst.uses(rscratch1), "invalid dst for address decrement"); if (dst.getMode() == Address::literal) { - assert(abs(value) < (1 << 12), "invalid value and address mode combination"); + assert(abs(value) < (1 << 24), "invalid value and address mode combination"); lea(rscratch2, dst); dst = Address(rscratch2); } @@ -2867,7 +2867,7 @@ void MacroAssembler::decrement(Address dst, int value) { assert(!dst.uses(rscratch1), "invalid address for decrement"); if (dst.getMode() == Address::literal) { - assert(abs(value) < (1 << 12), "invalid value and address mode combination"); + assert(abs(value) < (1 << 24), "invalid value and address mode combination"); lea(rscratch2, dst); dst = Address(rscratch2); } @@ -2880,7 +2880,7 @@ void MacroAssembler::incrementw(Register reg, int value) { if (value < 0) { decrementw(reg, -value); return; } if (value == 0) { return; } - if (value < (1 << 12)) { addw(reg, reg, value); return; } + if (value < (1 << 24)) { addw(reg, reg, value); return; } /* else */ { assert(reg != rscratch2, "invalid dst for register increment"); movw(rscratch2, (unsigned)value); @@ -2892,7 +2892,7 @@ void MacroAssembler::increment(Register reg, int value) { if (value < 0) { decrement(reg, -value); return; } if (value == 0) { return; } - if (value < (1 << 12)) { add(reg, reg, value); return; } + if (value < (1 << 24)) { add(reg, reg, value); return; } /* else */ { assert(reg != rscratch2, "invalid dst for register increment"); movw(rscratch2, (unsigned)value); @@ -2906,7 +2906,7 @@ void MacroAssembler::incrementw(Address dst, int value, Register result) assert(result->is_valid(), "must be"); assert_different_registers(result, rscratch2); if (dst.getMode() == Address::literal) { - assert(abs(value) < (1 << 12), "invalid value and address mode combination"); + assert(abs(value) < (1 << 24), "invalid value and address mode combination"); lea(rscratch2, dst); dst = Address(rscratch2); } @@ -2921,7 +2921,7 @@ void MacroAssembler::increment(Address dst, int value, Register result) assert(result->is_valid(), "must be"); assert_different_registers(result, rscratch2); if (dst.getMode() == Address::literal) { - assert(abs(value) < (1 << 12), "invalid value and address mode combination"); + assert(abs(value) < (1 << 24), "invalid value and address mode combination"); lea(rscratch2, dst); dst = Address(rscratch2); } diff --git a/src/hotspot/share/asm/assembler.hpp b/src/hotspot/share/asm/assembler.hpp index 961b5fab700..8180fd16d51 100644 --- a/src/hotspot/share/asm/assembler.hpp +++ b/src/hotspot/share/asm/assembler.hpp @@ -218,6 +218,10 @@ class AbstractAssembler : public ResourceObj { // Code emission & accessing address addr_at(int pos) const { return code_section()->start() + pos; } +#ifdef ASSERT + virtual bool is_C1_MacroAssembler() { return false; } +#endif + protected: // This routine is called with a label is used for an address. // Labels and displacements truck in offsets, but target must return a PC. diff --git a/src/hotspot/share/c1/c1_MacroAssembler.hpp b/src/hotspot/share/c1/c1_MacroAssembler.hpp index 0fe0d0ff285..a8ede8477f2 100644 --- a/src/hotspot/share/c1/c1_MacroAssembler.hpp +++ b/src/hotspot/share/c1/c1_MacroAssembler.hpp @@ -45,6 +45,10 @@ class C1_MacroAssembler: public MacroAssembler { void verify_stack_oop(int offset) PRODUCT_RETURN; void verify_not_null_oop(Register r) PRODUCT_RETURN; +#ifdef ASSERT + virtual bool is_C1_MacroAssembler() { return true; } +#endif + #include CPU_HEADER(c1_MacroAssembler) };