Modifier and Type | Class and Description |
---|---|
pack-priv static class | |
private static class | |
pack-priv static class |
Modifier and Type | Field and Description |
---|---|
private static final int | |
private static final int | |
pack-priv static final BoundMethodHandle. |
Access | Constructor and Description |
---|---|
pack-priv |
Modifier and Type | Method and Description |
---|---|
pack-priv final Object | |
pack-priv BoundMethodHandle | |
pack-priv BoundMethodHandle | |
pack-priv BoundMethodHandle | |
pack-priv BoundMethodHandle | |
pack-priv BoundMethodHandle | |
pack-priv static BoundMethodHandle | |
pack-priv abstract BoundMethodHandle | |
pack-priv abstract BoundMethodHandle | |
pack-priv abstract BoundMethodHandle | |
pack-priv abstract BoundMethodHandle | |
pack-priv abstract BoundMethodHandle | |
pack-priv abstract BoundMethodHandle | |
pack-priv LambdaFormEditor | |
pack-priv final int | |
pack-priv Object | |
pack-priv final String | |
pack-priv static BoundMethodHandle | makeReinvoker(MethodHandle target)
A reinvoker MH has this form:
|
pack-priv BoundMethodHandle | rebind()
Implements abstract java. Require this method handle to be a BMH, or else replace it with a "wrapper" BMH. |
pack-priv abstract BoundMethodHandle. | |
pack-priv static BoundMethodHandle. | |
pack-priv static BoundMethodHandle. | |
pack-priv static BoundMethodHandle. | |
pack-priv static BoundMethodHandle. | |
pack-priv static BoundMethodHandle. | |
pack-priv static BoundMethodHandle. | |
private boolean |
FIELD_COUNT_THRESHOLD | back to summary |
---|---|
private static final int FIELD_COUNT_THRESHOLD |
FORM_EXPRESSION_THRESHOLD | back to summary |
---|---|
private static final int FORM_EXPRESSION_THRESHOLD |
SPECIALIZER | back to summary |
---|---|
pack-priv static final BoundMethodHandle. |
BoundMethodHandle | back to summary |
---|---|
pack-priv BoundMethodHandle(MethodType type, LambdaForm form) |
arg | back to summary |
---|---|
pack-priv final Object arg(int i) |
bindArgumentD | back to summary |
---|---|
pack-priv BoundMethodHandle bindArgumentD(int pos, double value) |
bindArgumentF | back to summary |
---|---|
pack-priv BoundMethodHandle bindArgumentF(int pos, float value) |
bindArgumentI | back to summary |
---|---|
pack-priv BoundMethodHandle bindArgumentI(int pos, int value) |
bindArgumentJ | back to summary |
---|---|
pack-priv BoundMethodHandle bindArgumentJ(int pos, long value) |
bindArgumentL | back to summary |
---|---|
pack-priv BoundMethodHandle bindArgumentL(int pos, Object value) Overrides java.
|
bindSingle | back to summary |
---|---|
pack-priv static BoundMethodHandle bindSingle(MethodType type, LambdaForm form, Object x) |
copyWith | back to summary |
---|---|
pack-priv abstract BoundMethodHandle copyWith(MethodType mt, LambdaForm lf) Implements abstract java. |
copyWithExtendD | back to summary |
---|---|
pack-priv abstract BoundMethodHandle copyWithExtendD(MethodType mt, LambdaForm lf, double narg) |
copyWithExtendF | back to summary |
---|---|
pack-priv abstract BoundMethodHandle copyWithExtendF(MethodType mt, LambdaForm lf, float narg) |
copyWithExtendI | back to summary |
---|---|
pack-priv abstract BoundMethodHandle copyWithExtendI(MethodType mt, LambdaForm lf, int narg) |
copyWithExtendJ | back to summary |
---|---|
pack-priv abstract BoundMethodHandle copyWithExtendJ(MethodType mt, LambdaForm lf, long narg) |
copyWithExtendL | back to summary |
---|---|
pack-priv abstract BoundMethodHandle copyWithExtendL(MethodType mt, LambdaForm lf, Object narg) |
editor | back to summary |
---|---|
pack-priv LambdaFormEditor editor() |
fieldCount | back to summary |
---|---|
pack-priv final int fieldCount() Return the number of fields in this BMH. Equivalent to speciesData().fieldCount(). |
internalProperties | back to summary |
---|---|
pack-priv Object internalProperties(int indentLevel) Overrides java.
|
internalValues | back to summary |
---|---|
pack-priv final String internalValues(int indentLevel) Overrides java.
|
makeReinvoker | back to summary |
---|---|
pack-priv static BoundMethodHandle makeReinvoker(MethodHandle target) A reinvoker MH has this form:
|
rebind | back to summary |
---|---|
pack-priv BoundMethodHandle rebind() Implements abstract java. Doc from java. Require this method handle to be a BMH, or else replace it with a "wrapper" BMH. Many transforms are implemented only for BMHs.
|
speciesData | back to summary |
---|---|
pack-priv abstract BoundMethodHandle. Return the |
speciesData_L | back to summary |
---|---|
pack-priv static BoundMethodHandle. |
speciesData_LL | back to summary |
---|---|
pack-priv static BoundMethodHandle. |
speciesData_LLL | back to summary |
---|---|
pack-priv static BoundMethodHandle. |
speciesData_LLLL | back to summary |
---|---|
pack-priv static BoundMethodHandle. |
speciesData_LLLLL | back to summary |
---|---|
pack-priv static BoundMethodHandle. |
speciesDataFor | back to summary |
---|---|
pack-priv static BoundMethodHandle. |
tooComplex | back to summary |
---|---|
private boolean tooComplex() |
Modifier and Type | Class and Description |
---|---|
pack-priv class | BoundMethodHandle.
Generation of concrete BMH classes. |
Modifier and Type | Field and Description |
---|---|
pack-priv static final List | |
private static final MemberName | |
pack-priv static final int |
Access | Constructor and Description |
---|---|
private |
Modifier and Type | Method and Description |
---|---|
protected BoundMethodHandle. | makeFactory()
Overrides java. Hook that virtualizes the Factory class, allowing subclasses to extend it. |
protected BoundMethodHandle. | |
protected String |
BMH_TRANSFORMS | back to summary |
---|---|
pack-priv static final List<MemberName> BMH_TRANSFORMS |
SPECIES_DATA_ACCESSOR | back to summary |
---|---|
private static final MemberName SPECIES_DATA_ACCESSOR |
TN_COPY_NO_EXTEND | back to summary |
---|---|
pack-priv static final int TN_COPY_NO_EXTEND |
Specializer | back to summary |
---|---|
private Specializer() |
makeFactory | back to summary |
---|---|
protected BoundMethodHandle. Overrides java. Doc from java. Hook that virtualizes the Factory class, allowing subclasses to extend it.
|
newSpeciesData | back to summary |
---|---|
protected BoundMethodHandle. Implements abstract java.
|
topSpeciesKey | back to summary |
---|---|
protected String topSpeciesKey() Overrides java.
|
Access | Constructor and Description |
---|---|
pack-priv |
Modifier and Type | Method and Description |
---|---|
protected String | chooseFieldName(Class<?> type, int index)
Overrides java. Field names in concrete species classes adhere to this pattern: type + index, where type is a single character (L, I, J, F, D). |
Factory | back to summary |
---|---|
pack-priv Factory() |
chooseFieldName | back to summary |
---|---|
protected String chooseFieldName(Class<?> type, int index) Overrides java. Doc from java. Field names in concrete species classes adhere to this pattern: type + index, where type is a single character (L, I, J, F, D). The factory subclass can customize this. The name is purely cosmetic, since it applies to a private field.
|
Modifier and Type | Field and Description |
---|---|
pack-priv final Object | |
pack-priv static BoundMethodHandle. |
Access | Constructor and Description |
---|---|
private |
argL0 | back to summary |
---|---|
pack-priv final Object argL0 |
BMH_SPECIES | back to summary |
---|---|
pack-priv static BoundMethodHandle. |
Species_L | back to summary |
---|---|
private Species_L(MethodType mt, LambdaForm lf, Object argL0) |
copyWith | back to summary |
---|---|
pack-priv final BoundMethodHandle copyWith(MethodType mt, LambdaForm lf) Implements abstract java.
|
copyWithExtendD | back to summary |
---|---|
pack-priv final BoundMethodHandle copyWithExtendD(MethodType mt, LambdaForm lf, double narg) Implements abstract java.
|
copyWithExtendF | back to summary |
---|---|
pack-priv final BoundMethodHandle copyWithExtendF(MethodType mt, LambdaForm lf, float narg) Implements abstract java.
|
copyWithExtendI | back to summary |
---|---|
pack-priv final BoundMethodHandle copyWithExtendI(MethodType mt, LambdaForm lf, int narg) Implements abstract java.
|
copyWithExtendJ | back to summary |
---|---|
pack-priv final BoundMethodHandle copyWithExtendJ(MethodType mt, LambdaForm lf, long narg) Implements abstract java.
|
copyWithExtendL | back to summary |
---|---|
pack-priv final BoundMethodHandle copyWithExtendL(MethodType mt, LambdaForm lf, Object narg) Implements abstract java.
|
make | back to summary |
---|---|
pack-priv static BoundMethodHandle make(MethodType mt, LambdaForm lf, Object argL0) |
speciesData | back to summary |
---|---|
pack-priv BoundMethodHandle. Implements abstract java. Doc from java. Return the
|
Modifier and Type | Field and Description |
---|---|
private final BoundMethodHandle. |
Access | Constructor and Description |
---|---|
public |
Modifier and Type | Method and Description |
---|---|
protected String | deriveClassName()
Overrides java. Given a key, generate the name of the class which implements the species for that key. |
protected List | deriveFieldTypes(String key)
Implements abstract java. Given a key, derive the list of field types, which all instances of this species must store. |
protected MethodHandle | deriveTransformHelper(MemberName
the transform being implemented transform, int the index of that transform in the original list of transforms whichtm)Implements abstract java. Given the index of a method in the transforms list, supply a factory method that takes the arguments of the transform, plus the local fields, and produce a value of the required type. |
protected <X> List | deriveTransformHelperArguments(MemberName
the transform being implemented transform, int the index of that transform in the original list of transforms whichtm, List<X> a list of opaque objects representing the incoming transform arguments args, List<X> a list of opaque objects representing the field values of the receiver fields)Implements abstract java. During code generation, this method is called once per transform to determine what is the mix of arguments to hand to the transform-helper. |
protected String | deriveTypeString()
Overrides java. Default implementation collects basic type characters, plus possibly type names, if some types don't correspond to basic types. |
pack-priv BoundMethodHandle. | |
private boolean |
extensions | back to summary |
---|---|
private final BoundMethodHandle. |
SpeciesData | back to summary |
---|---|
public SpeciesData(BoundMethodHandle. |
deriveClassName | back to summary |
---|---|
protected String deriveClassName() Overrides java. Doc from java. Given a key, generate the name of the class which implements the species for that key. This algorithm must be stable. |
deriveFieldTypes | back to summary |
---|---|
protected List Implements abstract java. Doc from java. Given a key, derive the list of field types, which all instances of this species must store.
|
deriveTransformHelper | back to summary |
---|---|
protected MethodHandle deriveTransformHelper(MemberName transform, int whichtm) Implements abstract java. Doc from java. Given the index of a method in the transforms list, supply a factory method that takes the arguments of the transform, plus the local fields, and produce a value of the required type. You can override this to return null or throw if there are no transforms. This method exists so that the transforms can be "grown" lazily. This is necessary if the transform *adds* a field to an instance, which sometimes requires the creation, on the fly, of an extended species. This method is only called once for any particular parameter. The species caches the result in a private array.
|
deriveTransformHelperArguments | back to summary |
---|---|
protected <X> List Implements abstract java. Doc from java. During code generation, this method is called once per transform to determine what is the mix of arguments to hand to the transform-helper. The bytecode which marshals these arguments is open-coded in the species-specific transform. The two lists are of opaque objects, which you shouldn't do anything with besides reordering them into the output list. (They are both mutable, to make editing easier.) The imputed types of the args correspond to the transform's parameter list, while the imputed types of the fields correspond to the species field types. After code generation, this method may be called occasionally by error-checking code.
|
deriveTypeString | back to summary |
---|---|
protected String deriveTypeString() Overrides java. Doc from java. Default implementation collects basic type characters, plus possibly type names, if some types don't correspond to basic types. |
extendWith | back to summary |
---|---|
pack-priv BoundMethodHandle. |
verifyTHAargs | back to summary |
---|---|
private boolean verifyTHAargs(MemberName transform, int whichtm, List<?> args, List<?> fields) |