8287851: C2 crash: assert(t->meet(t0) == t) failed: Not monotonic

Reviewed-by: thartmann, chagedorn
This commit is contained in:
Jatin Bhateja 2022-07-04 11:31:32 +00:00
parent 5b5bc6c26e
commit 1a271645a8
2 changed files with 5 additions and 3 deletions
src/hotspot/share/opto
test/jdk

@ -165,7 +165,6 @@ Node* compress_expand_identity(PhaseGVN* phase, Node* n) {
if(phase->type(n->in(2))->higher_equal(TypeInteger::zero(bt))) return n->in(2);
// compress(x, -1) == x, expand(x, -1) == x
if(phase->type(n->in(2))->higher_equal(TypeInteger::minus_1(bt))) return n->in(1);
return n;
// expand(-1, x) == x
if(n->Opcode() == Op_ExpandBits &&
phase->type(n->in(1))->higher_equal(TypeInteger::minus_1(bt))) return n->in(2);
@ -259,7 +258,9 @@ static const Type* bitshuffle_value(const TypeInteger* src_type, const TypeInteg
} else {
// Case 3) Mask value range only includes +ve values.
assert(mask_type->lo_as_long() >= 0, "");
mask_max_bw = max_bw - count_leading_zeros(mask_type->hi_as_long());
jlong clz = count_leading_zeros(mask_type->hi_as_long());
clz = bt == T_INT ? clz - 32 : clz;
mask_max_bw = max_bw - clz;
}
if ( opc == Op_CompressBits) {
lo = mask_max_bw == max_bw ? lo : 0L;
@ -270,6 +271,8 @@ static const Type* bitshuffle_value(const TypeInteger* src_type, const TypeInteg
} else {
assert(opc == Op_ExpandBits, "");
jlong max_mask = mask_type->hi_as_long();
// Since mask here a range and not a constant value, hence being
// conservative in determining the value range of result.
lo = mask_type->lo_as_long() >= 0L ? 0L : lo;
hi = mask_type->lo_as_long() >= 0L ? max_mask : hi;
}

@ -495,7 +495,6 @@ java/lang/invoke/LFCaching/LFMultiThreadCachingTest.java 8151492 generic-
java/lang/invoke/LFCaching/LFGarbageCollectedTest.java 8078602 generic-all
java/lang/invoke/lambda/LambdaFileEncodingSerialization.java 8249079 linux-x64
java/lang/invoke/RicochetTest.java 8251969 generic-all
java/lang/CompressExpandTest.java 8287851 generic-all
java/lang/ref/OOMEInReferenceHandler.java 8066859 generic-all
############################################################################