8319211: Regression in LoopOverNonConstantFP

Reviewed-by: jvernee
This commit is contained in:
Maurizio Cimadamore 2023-11-01 17:49:21 +00:00
parent bfaf5704e7
commit f262f06c97
4 changed files with 42 additions and 37 deletions

View file

@ -62,6 +62,7 @@ class MethodHandleStatics {
static final boolean VAR_HANDLE_GUARDS;
static final int MAX_ARITY;
static final boolean VAR_HANDLE_IDENTITY_ADAPT;
static final boolean VAR_HANDLE_SEGMENT_FORCE_EXACT;
static final ClassFileDumper DUMP_CLASS_FILES;
static {
@ -91,6 +92,8 @@ class MethodHandleStatics {
props.getProperty("java.lang.invoke.VarHandle.VAR_HANDLE_GUARDS", "true"));
VAR_HANDLE_IDENTITY_ADAPT = Boolean.parseBoolean(
props.getProperty("java.lang.invoke.VarHandle.VAR_HANDLE_IDENTITY_ADAPT", "false"));
VAR_HANDLE_SEGMENT_FORCE_EXACT = Boolean.parseBoolean(
props.getProperty("java.lang.invoke.VarHandle.VAR_HANDLE_SEGMENT_FORCE_EXACT", "false"));
// Do not adjust this except for special platforms:
MAX_ARITY = Integer.parseInt(

View file

@ -41,6 +41,7 @@ import java.util.concurrent.ConcurrentMap;
import java.util.stream.Stream;
import static java.lang.invoke.MethodHandleStatics.UNSAFE;
import static java.lang.invoke.MethodHandleStatics.VAR_HANDLE_SEGMENT_FORCE_EXACT;
import static java.lang.invoke.MethodHandleStatics.VAR_HANDLE_IDENTITY_ADAPT;
import static java.lang.invoke.MethodHandleStatics.newIllegalArgumentException;
@ -317,7 +318,7 @@ final class VarHandles {
}
long size = Utils.byteWidthOfPrimitive(carrier);
boolean be = byteOrder == ByteOrder.BIG_ENDIAN;
boolean exact = false;
boolean exact = VAR_HANDLE_SEGMENT_FORCE_EXACT;
if (carrier == byte.class) {
return maybeAdapt(new VarHandleSegmentAsBytes(be, size, alignmentMask, exact));