Skip to content

Commit 01d06f9

Browse files
committed
Avoid JIT compilation bug in validator.
1 parent 1304b41 commit 01d06f9

File tree

1 file changed

+18
-19
lines changed

1 file changed

+18
-19
lines changed

byte-buddy-dep/src/main/java/net/bytebuddy/dynamic/scaffold/TypeWriter.java

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2509,26 +2509,25 @@ public FieldVisitor visitField(int modifiers, String name, String descriptor, @M
25092509
if (!type.isInstance(value)) {
25102510
throw new IllegalStateException("Field " + name + " defines an incompatible default value " + value + " (" + value.getClass().getName() + ")");
25112511
} else if (type == Integer.class) {
2512-
char character = descriptor.charAt(0);
2513-
int minimum, maximum;
2514-
if (character == 'Z') {
2515-
minimum = 0;
2516-
maximum = 1;
2517-
} else if (character == 'B') {
2518-
minimum = Byte.MIN_VALUE;
2519-
maximum = Byte.MAX_VALUE;
2520-
} else if (character == 'S') {
2521-
minimum = Short.MIN_VALUE;
2522-
maximum = Short.MAX_VALUE;
2523-
} else if (character == 'C') {
2524-
minimum = Character.MIN_VALUE;
2525-
maximum = Character.MAX_VALUE;
2526-
} else {
2527-
minimum = Integer.MIN_VALUE;
2528-
maximum = Integer.MAX_VALUE;
2512+
boolean outOfRange;
2513+
switch (descriptor.charAt(0)) {
2514+
case 'Z':
2515+
outOfRange = (Integer) value < 0 || (Integer) value > 1;
2516+
break;
2517+
case 'B':
2518+
outOfRange = (Integer) value < Byte.MIN_VALUE || (Integer) value > Byte.MAX_VALUE;
2519+
break;
2520+
case 'S':
2521+
outOfRange = (Integer) value < Short.MIN_VALUE || (Integer) value > Short.MAX_VALUE;
2522+
break;
2523+
case 'C':
2524+
outOfRange = (Integer) value < Character.MIN_VALUE || (Integer) value > Character.MAX_VALUE;
2525+
break;
2526+
default:
2527+
outOfRange = false;
25292528
}
2530-
if ((Integer) value < minimum || (Integer) value > maximum) {
2531-
throw new IllegalStateException("Field " + name + " defines an incompatible default value " + value + " (" + minimum + "-" + maximum + ")");
2529+
if (outOfRange) {
2530+
throw new IllegalStateException("Field " + name + " defines an incompatible default value " + value);
25322531
}
25332532
}
25342533
}

0 commit comments

Comments
 (0)