Class ASMAccessorOptimizer

    • Field Detail

      • LIST_IMPL

        private static java.lang.String LIST_IMPL
      • NAMESPACE

        private static java.lang.String NAMESPACE
      • OPCODES_VERSION

        private static final int OPCODES_VERSION
      • ctx

        private java.lang.Object ctx
      • thisRef

        private java.lang.Object thisRef
      • EMPTYARG

        private static final java.lang.Object[] EMPTYARG
      • EMPTYCLS

        private static final java.lang.Class[] EMPTYCLS
      • first

        private boolean first
      • noinit

        private boolean noinit
      • deferFinish

        private boolean deferFinish
      • literal

        private boolean literal
      • propNull

        private boolean propNull
      • methNull

        private boolean methNull
      • className

        private java.lang.String className
      • cw

        private org.objectweb.asm.ClassWriter cw
      • mv

        private org.objectweb.asm.MethodVisitor mv
      • val

        private java.lang.Object val
      • stacksize

        private int stacksize
      • maxlocals

        private int maxlocals
      • time

        private long time
      • ingressType

        private java.lang.Class ingressType
      • returnType

        private java.lang.Class returnType
      • compileDepth

        private int compileDepth
    • Constructor Detail

      • ASMAccessorOptimizer

        public ASMAccessorOptimizer()
      • ASMAccessorOptimizer

        private ASMAccessorOptimizer​(org.objectweb.asm.ClassWriter cw,
                                     org.objectweb.asm.MethodVisitor mv,
                                     java.util.ArrayList<ExecutableStatement> compiledInputs,
                                     java.lang.String className,
                                     StringAppender buildLog,
                                     int compileDepth)
    • Method Detail

      • _initJIT

        private void _initJIT()
        Does all the boilerplate for initiating the JIT.
      • _initJIT2

        private void _initJIT2()
      • _finishJIT

        private void _finishJIT()
      • visitConstantClass

        private void visitConstantClass​(java.lang.Class<?> clazz)
      • _initializeAccessor

        private Accessor _initializeAccessor()
                                      throws java.lang.Exception
        Throws:
        java.lang.Exception
      • compileAccessor

        private Accessor compileAccessor()
      • getWithProperty

        private java.lang.Object getWithProperty​(java.lang.Object ctx)
      • getBeanPropertyAO

        private java.lang.Object getBeanPropertyAO​(java.lang.Object ctx,
                                                   java.lang.String property)
                                            throws java.lang.IllegalAccessException,
                                                   java.lang.reflect.InvocationTargetException
        Throws:
        java.lang.IllegalAccessException
        java.lang.reflect.InvocationTargetException
      • getBeanProperty

        private java.lang.Object getBeanProperty​(java.lang.Object ctx,
                                                 java.lang.String property)
                                          throws java.lang.IllegalAccessException,
                                                 java.lang.reflect.InvocationTargetException
        Throws:
        java.lang.IllegalAccessException
        java.lang.reflect.InvocationTargetException
      • optimizeFieldMethodProperty

        private java.lang.Object optimizeFieldMethodProperty​(java.lang.Object ctx,
                                                             java.lang.String property,
                                                             java.lang.Class<?> cls,
                                                             java.lang.reflect.Member member)
                                                      throws java.lang.IllegalAccessException
        Throws:
        java.lang.IllegalAccessException
      • writeFunctionPointerStub

        private void writeFunctionPointerStub​(java.lang.Class c,
                                              java.lang.reflect.Method m)
      • getCollectionProperty

        private java.lang.Object getCollectionProperty​(java.lang.Object ctx,
                                                       java.lang.String prop)
                                                throws java.lang.IllegalAccessException,
                                                       java.lang.reflect.InvocationTargetException
        Throws:
        java.lang.IllegalAccessException
        java.lang.reflect.InvocationTargetException
      • getCollectionPropertyAO

        private java.lang.Object getCollectionPropertyAO​(java.lang.Object ctx,
                                                         java.lang.String prop)
                                                  throws java.lang.IllegalAccessException,
                                                         java.lang.reflect.InvocationTargetException
        Throws:
        java.lang.IllegalAccessException
        java.lang.reflect.InvocationTargetException
      • getMethod

        private java.lang.Object getMethod​(java.lang.Object ctx,
                                           java.lang.String name)
                                    throws java.lang.IllegalAccessException,
                                           java.lang.reflect.InvocationTargetException
        Throws:
        java.lang.IllegalAccessException
        java.lang.reflect.InvocationTargetException
      • dataConversion

        private void dataConversion​(java.lang.Class target)
      • setMVELClassLoader

        public static void setMVELClassLoader​(MVELClassLoader cl)
      • loadClass

        private java.lang.Class loadClass​(java.lang.String className,
                                          byte[] b)
                                   throws java.lang.Exception
        Throws:
        java.lang.Exception
      • debug

        private boolean debug​(java.lang.String instruction)
      • getName

        public java.lang.String getName()
      • getWrapperClass

        private java.lang.Class getWrapperClass​(java.lang.Class cls)
      • unwrapPrimitive

        private void unwrapPrimitive​(java.lang.Class cls)
      • wrapPrimitive

        private void wrapPrimitive​(java.lang.Class<? extends java.lang.Object> cls)
      • anyArrayCheck

        private void anyArrayCheck​(java.lang.Class cls)
      • writeOutLiteralWrapped

        private void writeOutLiteralWrapped​(java.lang.Object lit)
      • toPrimitiveTypeOperand

        public static int toPrimitiveTypeOperand​(java.lang.Class<?> c)
        Gets the ASM instruction operand for the given primitive type. Will throw IllegalStateException if the type is not primitive.
        Parameters:
        c - The class representing the primitive type.
        Returns:
        The operand
      • createArray

        private void createArray​(java.lang.Class componentType,
                                 int length)
        Create an array of any type (primitive or reference)
        Parameters:
        componentType - The type of array elements
        length - The length of the array
      • arrayStore

        public void arrayStore​(java.lang.Class cls)
      • wrapRuntimeConverstion

        public void wrapRuntimeConverstion​(java.lang.Class toType)
      • loadVariableByName

        private void loadVariableByName​(java.lang.String name)
      • loadVariableByIndex

        private void loadVariableByIndex​(int pos)
      • loadField

        private void loadField​(int number)
      • ldcClassConstant

        private void ldcClassConstant​(java.lang.Class cls)
      • buildInputs

        private void buildInputs()
      • _getAccessor

        private int _getAccessor​(java.lang.Object o,
                                 java.lang.Class type)
      • writeLiteralOrSubexpression

        private java.lang.Class writeLiteralOrSubexpression​(java.lang.Object stmt)
      • writeLiteralOrSubexpression

        private java.lang.Class writeLiteralOrSubexpression​(java.lang.Object stmt,
                                                            java.lang.Class desiredTarget)
      • writeLiteralOrSubexpression

        private java.lang.Class writeLiteralOrSubexpression​(java.lang.Object stmt,
                                                            java.lang.Class desiredTarget,
                                                            java.lang.Class knownIngressType)
      • addPrintOut

        private void addPrintOut​(java.lang.String text)
      • checkcast

        private void checkcast​(java.lang.Class cls)
      • intPush

        private void intPush​(int index)
      • dumpAdvancedDebugging

        private void dumpAdvancedDebugging()
      • propHandlerByteCode

        private java.lang.Object propHandlerByteCode​(java.lang.String property,
                                                     java.lang.Object ctx,
                                                     java.lang.Class handler)
      • propHandlerByteCodePut

        private void propHandlerByteCodePut​(java.lang.String property,
                                            java.lang.Object ctx,
                                            java.lang.Class handler,
                                            java.lang.Object value)
      • writeOutNullHandler

        private void writeOutNullHandler​(java.lang.reflect.Member member,
                                         int type)