Package org.objectweb.asm.tree

Examples of org.objectweb.asm.tree.MethodNode


        private void replaceFieldWriteAccess(String conduitFieldName)
        {
            setAccessName = makeUnique(methodNames, "set_" + node.name);

            MethodNode mn = new MethodNode(ACC_SYNTHETIC | ACC_FINAL, setAccessName, "(" + node.desc + ")V", null, null);

            InstructionBuilder builder = newBuilder(mn);

            pushFieldConduitOntoStack(conduitFieldName, builder);
            pushInstanceContextFieldOntoStack(builder);
View Full Code Here


        private void replaceFieldReadAccess(String conduitFieldName)
        {
            getAccessName = makeUnique(methodNames, "getfieldvalue_" + node.name);

            MethodNode mn = new MethodNode(ACC_SYNTHETIC | ACC_FINAL, getAccessName, "()" + node.desc, null, null);

            InstructionBuilder builder = newBuilder(mn);

            // Get the correct FieldConduit object on the stack
View Full Code Here

        private void makeReadOnly()
        {
            setAccessName = makeUnique(methodNames, "setfieldvalue_" + node.name);

            MethodNode mn = new MethodNode(ACC_SYNTHETIC | ACC_FINAL, setAccessName, "(" + node.desc + ")V", null, null);

            String message = String.format("Field %s of class %s is read-only.", node.name, className);

            newBuilder(mn).throwException(IllegalStateException.class, message);
View Full Code Here

        {
            String name = makeUnique(methodNames, "directset_" + node.name);

            // Takes two Object parameters (instance, and value) and returns void.

            MethodNode mn = new MethodNode(ACC_SYNTHETIC | ACC_FINAL, name, "(" + node.desc + ")V", null, null);

            InstructionBuilder builder = newBuilder(mn);

            builder.loadThis().loadArgument(0).putField(className, node.name, typeName);
            builder.returnResult();
View Full Code Here

        private MethodNode addGetAccessMethod()
        {
            String name = makeUnique(methodNames, "directget_" + node.name);

            MethodNode mn = new MethodNode(ACC_SYNTHETIC | ACC_FINAL, name, "()" + node.desc, null, null);

            InstructionBuilder builder = newBuilder(mn);

            builder.loadThis().getField(className, node.name, typeName).returnResult();
View Full Code Here

        {
            String accessMethodName = getAccessName;

            if (accessMethodName == null)
            {
                MethodNode method = addGetAccessMethod();
                fieldTransformMethods.add(method);
                accessMethodName = method.name;
            }

            final String methodToInvoke = accessMethodName;
View Full Code Here

            // If no conduit has yet been specified, then we need a set access method for the shim to invoke.

            if (accessMethodName == null)
            {
                MethodNode method = addSetAccessMethod();
                fieldTransformMethods.add(method);
                accessMethodName = method.name;
            }

            final String methodToInvoke = accessMethodName;
View Full Code Here

                consTypes.add(type);
            }

            String[] constructorTypes = consTypes.toArray(new String[consTypes.size()]);

            MethodNode cons = new MethodNode(ACC_PUBLIC, CONSTRUCTOR_NAME, nameCache.toMethodDescriptor("void",
                    constructorTypes), null, null);

            InstructionBuilder builder = newBuilder(cons);

            // First three arguments go to the super-class
View Full Code Here

            createReturnValueGetter();
        }

        private InstructionBuilder newMethod(String name, Class returnType, Class... argumentTypes)
        {
            MethodNode mn = new MethodNode(ACC_PUBLIC, name, nameCache.toMethodDescriptor(returnType, argumentTypes),
                    null, null);

            invocationClassNode.methods.add(mn);

            return newBuilder(mn);
View Full Code Here

                    : advisedMethodNode.exceptions.toArray(new String[0]));

            // Remove the private flag, so that the MethodInvocation implementation (in the same package)
            // can directly access the method without an additional access method.

            MethodNode mn = new MethodNode(advisedMethodNode.access & ~ACC_PRIVATE, newMethodName,
                    advisedMethodNode.desc, advisedMethodNode.signature, exceptions);

            // Copy everything else about the advisedMethodNode over to the new node

            advisedMethodNode.accept(mn);
View Full Code Here

TOP

Related Classes of org.objectweb.asm.tree.MethodNode

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.