Class IRMethodCallExpressionCompiler
- java.lang.Object
-
- gw.internal.gosu.ir.compiler.bytecode.AbstractBytecodeCompiler
-
- gw.internal.gosu.ir.compiler.bytecode.expression.IRMethodCallExpressionCompiler
-
public class IRMethodCallExpressionCompiler extends AbstractBytecodeCompiler
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.Map<java.lang.Class,java.util.Map<java.lang.Class,java.lang.reflect.Constructor>>PROXY_CACHEstatic java.lang.StringSTRUCTURAL_PROXY-
Fields inherited from class gw.internal.gosu.ir.compiler.bytecode.AbstractBytecodeCompiler
OBJECT_TYPE
-
-
Constructor Summary
Constructors Constructor Description IRMethodCallExpressionCompiler()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidcompile(IRMethodCallExpression expression, IRBytecodeContext context)static java.lang.ObjectconstructProxy(java.lang.Object root, java.lang.Class iface)private static java.lang.ObjectcreateNewProxy(java.lang.Object root, java.lang.Class iface)private static java.lang.ClasscreateProxy(java.lang.Class iface, java.lang.Class rootClass, boolean bStaticImpl)private static booleanisObjectMethod(IRMethodCallExpression expression)Determines whether or not the method in question is a method directly on Object, which thus needs to be invoked using INVOKEVIRTUAL regardless of the expression's root type.private static IRTypemaybeProxyStructuralCallRoot(IRMethodCallExpression expression, IRBytecodeContext context)-
Methods inherited from class gw.internal.gosu.ir.compiler.bytecode.AbstractBytecodeCompiler
compileConditionAssignment, getIns, isNotPartOfBooleanExpr, isWide, negateOpcode
-
-
-
-
Field Detail
-
STRUCTURAL_PROXY
public static final java.lang.String STRUCTURAL_PROXY
- See Also:
- Constant Field Values
-
PROXY_CACHE
private static java.util.Map<java.lang.Class,java.util.Map<java.lang.Class,java.lang.reflect.Constructor>> PROXY_CACHE
-
-
Method Detail
-
compile
public static void compile(IRMethodCallExpression expression, IRBytecodeContext context)
-
maybeProxyStructuralCallRoot
private static IRType maybeProxyStructuralCallRoot(IRMethodCallExpression expression, IRBytecodeContext context)
-
constructProxy
public static java.lang.Object constructProxy(java.lang.Object root, java.lang.Class iface)
-
createNewProxy
private static java.lang.Object createNewProxy(java.lang.Object root, java.lang.Class iface)
-
createProxy
private static java.lang.Class createProxy(java.lang.Class iface, java.lang.Class rootClass, boolean bStaticImpl)
-
isObjectMethod
private static boolean isObjectMethod(IRMethodCallExpression expression)
Determines whether or not the method in question is a method directly on Object, which thus needs to be invoked using INVOKEVIRTUAL regardless of the expression's root type.
-
-