public final class Def
extends java.lang.Object
Dynamic types can invoke methods, load/store fields, and be passed as parameters to operators without compile-time type information.
Dynamic methods, loads, stores, and array/list/map load/stores involve locating the appropriate field
or method depending on the receiver's class. For these, we emit an invokedynamic instruction that,
for each new type encountered will query a corresponding lookupXXX method to retrieve the appropriate
method. In most cases, the lookupXXX methods here will only be called once for a given call site, because
caching (DefBootstrap) generally works: usually all objects at any call site will be consistently
the same type (or just a few types). In extreme cases, if there is type explosion, they may be called every
single time, but simplicity is still more valuable than performance in this code.
| Constructor and Description |
|---|
Def() |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
DefToboolean(java.lang.Object value) |
static byte |
DefTobyteExplicit(java.lang.Object value) |
static byte |
DefTobyteImplicit(java.lang.Object value) |
static char |
DefTocharExplicit(java.lang.Object value) |
static char |
DefTocharImplicit(java.lang.Object value) |
static double |
DefTodoubleExplicit(java.lang.Object value) |
static double |
DefTodoubleImplicit(java.lang.Object value) |
static float |
DefTofloatExplicit(java.lang.Object value) |
static float |
DefTofloatImplicit(java.lang.Object value) |
static int |
DefTointExplicit(java.lang.Object value) |
static int |
DefTointImplicit(java.lang.Object value) |
static long |
DefTolongExplicit(java.lang.Object value) |
static long |
DefTolongImplicit(java.lang.Object value) |
static short |
DefToshortExplicit(java.lang.Object value) |
static short |
DefToshortImplicit(java.lang.Object value) |
static int |
listIndexNormalize(java.util.List<?> value,
int index)
"Normalizes" the idnex into a
List by flipping negative indexes around so they are "from the end" of the list. |
static java.lang.Object |
mapIndexNormalize(java.util.Map<?,?> value,
java.lang.Object index)
"Normalizes" the index into a
Map by making no change to the index. |
public static boolean DefToboolean(java.lang.Object value)
public static byte DefTobyteImplicit(java.lang.Object value)
public static short DefToshortImplicit(java.lang.Object value)
public static char DefTocharImplicit(java.lang.Object value)
public static int DefTointImplicit(java.lang.Object value)
public static long DefTolongImplicit(java.lang.Object value)
public static float DefTofloatImplicit(java.lang.Object value)
public static double DefTodoubleImplicit(java.lang.Object value)
public static byte DefTobyteExplicit(java.lang.Object value)
public static short DefToshortExplicit(java.lang.Object value)
public static char DefTocharExplicit(java.lang.Object value)
public static int DefTointExplicit(java.lang.Object value)
public static long DefTolongExplicit(java.lang.Object value)
public static float DefTofloatExplicit(java.lang.Object value)
public static double DefTodoubleExplicit(java.lang.Object value)
public static java.lang.Object mapIndexNormalize(java.util.Map<?,?> value,
java.lang.Object index)
Map by making no change to the index.public static int listIndexNormalize(java.util.List<?> value,
int index)
List by flipping negative indexes around so they are "from the end" of the list.