8301460: Clean up LambdaForm to reference BasicType enums directly
Reviewed-by: jvernee
This commit is contained in:
parent
28f5250fa5
commit
50dcc2aec5
@ -233,7 +233,7 @@ abstract non-sealed class BoundMethodHandle extends MethodHandle {
|
||||
/*non-public*/
|
||||
final BoundMethodHandle copyWithExtendL(MethodType mt, LambdaForm lf, Object narg) {
|
||||
try {
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(L_TYPE_NUM).factory().invokeBasic(mt, lf, argL0, narg);
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(L_TYPE).factory().invokeBasic(mt, lf, argL0, narg);
|
||||
} catch (Throwable ex) {
|
||||
throw uncaughtException(ex);
|
||||
}
|
||||
@ -242,7 +242,7 @@ abstract non-sealed class BoundMethodHandle extends MethodHandle {
|
||||
/*non-public*/
|
||||
final BoundMethodHandle copyWithExtendI(MethodType mt, LambdaForm lf, int narg) {
|
||||
try {
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(I_TYPE_NUM).factory().invokeBasic(mt, lf, argL0, narg);
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(I_TYPE).factory().invokeBasic(mt, lf, argL0, narg);
|
||||
} catch (Throwable ex) {
|
||||
throw uncaughtException(ex);
|
||||
}
|
||||
@ -251,7 +251,7 @@ abstract non-sealed class BoundMethodHandle extends MethodHandle {
|
||||
/*non-public*/
|
||||
final BoundMethodHandle copyWithExtendJ(MethodType mt, LambdaForm lf, long narg) {
|
||||
try {
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(J_TYPE_NUM).factory().invokeBasic(mt, lf, argL0, narg);
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(J_TYPE).factory().invokeBasic(mt, lf, argL0, narg);
|
||||
} catch (Throwable ex) {
|
||||
throw uncaughtException(ex);
|
||||
}
|
||||
@ -260,7 +260,7 @@ abstract non-sealed class BoundMethodHandle extends MethodHandle {
|
||||
/*non-public*/
|
||||
final BoundMethodHandle copyWithExtendF(MethodType mt, LambdaForm lf, float narg) {
|
||||
try {
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(F_TYPE_NUM).factory().invokeBasic(mt, lf, argL0, narg);
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(F_TYPE).factory().invokeBasic(mt, lf, argL0, narg);
|
||||
} catch (Throwable ex) {
|
||||
throw uncaughtException(ex);
|
||||
}
|
||||
@ -269,7 +269,7 @@ abstract non-sealed class BoundMethodHandle extends MethodHandle {
|
||||
/*non-public*/
|
||||
final BoundMethodHandle copyWithExtendD(MethodType mt, LambdaForm lf, double narg) {
|
||||
try {
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(D_TYPE_NUM).factory().invokeBasic(mt, lf, argL0, narg);
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(D_TYPE).factory().invokeBasic(mt, lf, argL0, narg);
|
||||
} catch (Throwable ex) {
|
||||
throw uncaughtException(ex);
|
||||
}
|
||||
@ -319,7 +319,7 @@ abstract non-sealed class BoundMethodHandle extends MethodHandle {
|
||||
if (whichtm == Specializer.TN_COPY_NO_EXTEND) {
|
||||
return factory();
|
||||
} else if (whichtm < ARG_TYPE_LIMIT) {
|
||||
return extendWith((byte) whichtm).factory();
|
||||
return extendWith(BasicType.basicType((byte) whichtm)).factory();
|
||||
} else {
|
||||
throw newInternalError("bad transform");
|
||||
}
|
||||
@ -353,10 +353,11 @@ abstract non-sealed class BoundMethodHandle extends MethodHandle {
|
||||
}
|
||||
|
||||
/*non-public*/
|
||||
SpeciesData extendWith(byte typeNum) {
|
||||
SpeciesData extendWith(BasicType basicType) {
|
||||
int typeNum = basicType.ordinal();
|
||||
SpeciesData sd = extensions[typeNum];
|
||||
if (sd != null) return sd;
|
||||
sd = SPECIALIZER.findSpecies(key() + BasicType.basicType(typeNum).basicTypeChar());
|
||||
sd = SPECIALIZER.findSpecies(key() + basicType.basicTypeChar());
|
||||
extensions[typeNum] = sd;
|
||||
return sd;
|
||||
}
|
||||
@ -406,7 +407,7 @@ abstract non-sealed class BoundMethodHandle extends MethodHandle {
|
||||
}
|
||||
|
||||
static final List<MemberName> BMH_TRANSFORMS;
|
||||
static final int TN_COPY_NO_EXTEND = V_TYPE_NUM;
|
||||
static final int TN_COPY_NO_EXTEND = V_TYPE.ordinal();
|
||||
static {
|
||||
final Class<BoundMethodHandle> BMH = BoundMethodHandle.class;
|
||||
// copyWithExtendLIJFD + copyWith
|
||||
|
@ -150,16 +150,6 @@ class LambdaForm {
|
||||
static final int ARG_TYPE_LIMIT = ARG_TYPES.length;
|
||||
static final int TYPE_LIMIT = ALL_TYPES.length;
|
||||
|
||||
// Derived int constants, which (unlike the enums) can be constant folded.
|
||||
// We can remove them when JDK-8161245 is fixed.
|
||||
static final byte
|
||||
L_TYPE_NUM = (byte) L_TYPE.ordinal(),
|
||||
I_TYPE_NUM = (byte) I_TYPE.ordinal(),
|
||||
J_TYPE_NUM = (byte) J_TYPE.ordinal(),
|
||||
F_TYPE_NUM = (byte) F_TYPE.ordinal(),
|
||||
D_TYPE_NUM = (byte) D_TYPE.ordinal(),
|
||||
V_TYPE_NUM = (byte) V_TYPE.ordinal();
|
||||
|
||||
final char btChar;
|
||||
final Class<?> btClass;
|
||||
final Wrapper btWrapper;
|
||||
|
@ -513,7 +513,7 @@ class LambdaFormEditor {
|
||||
}
|
||||
|
||||
private BoundMethodHandle.SpeciesData newSpeciesData(BasicType type) {
|
||||
return oldSpeciesData().extendWith((byte) type.ordinal());
|
||||
return oldSpeciesData().extendWith(type);
|
||||
}
|
||||
|
||||
BoundMethodHandle bindArgumentL(BoundMethodHandle mh, int pos, Object value) {
|
||||
|
@ -74,7 +74,7 @@ final class SimpleMethodHandle extends BoundMethodHandle {
|
||||
/*non-public*/
|
||||
final BoundMethodHandle copyWithExtendI(MethodType mt, LambdaForm lf, int narg) {
|
||||
try {
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(I_TYPE_NUM).factory().invokeBasic(mt, lf, narg);
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(I_TYPE).factory().invokeBasic(mt, lf, narg);
|
||||
} catch (Throwable ex) {
|
||||
throw uncaughtException(ex);
|
||||
}
|
||||
@ -83,7 +83,7 @@ final class SimpleMethodHandle extends BoundMethodHandle {
|
||||
/*non-public*/
|
||||
final BoundMethodHandle copyWithExtendJ(MethodType mt, LambdaForm lf, long narg) {
|
||||
try {
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(J_TYPE_NUM).factory().invokeBasic(mt, lf, narg);
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(J_TYPE).factory().invokeBasic(mt, lf, narg);
|
||||
} catch (Throwable ex) {
|
||||
throw uncaughtException(ex);
|
||||
}
|
||||
@ -92,7 +92,7 @@ final class SimpleMethodHandle extends BoundMethodHandle {
|
||||
/*non-public*/
|
||||
final BoundMethodHandle copyWithExtendF(MethodType mt, LambdaForm lf, float narg) {
|
||||
try {
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(F_TYPE_NUM).factory().invokeBasic(mt, lf, narg);
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(F_TYPE).factory().invokeBasic(mt, lf, narg);
|
||||
} catch (Throwable ex) {
|
||||
throw uncaughtException(ex);
|
||||
}
|
||||
@ -101,7 +101,7 @@ final class SimpleMethodHandle extends BoundMethodHandle {
|
||||
/*non-public*/
|
||||
final BoundMethodHandle copyWithExtendD(MethodType mt, LambdaForm lf, double narg) {
|
||||
try {
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(D_TYPE_NUM).factory().invokeBasic(mt, lf, narg);
|
||||
return (BoundMethodHandle) BMH_SPECIES.extendWith(D_TYPE).factory().invokeBasic(mt, lf, narg);
|
||||
} catch (Throwable ex) {
|
||||
throw uncaughtException(ex);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user