Available Methods
- ASM5 ( )
- ASM7 ( )
- ACC_STATIC
- ACC_PUBLIC
- ACC_PRIVATE
- ASM6 ( )
- INVOKESTATIC
- ACC_ABSTRACT
- ASM4 ( )
- ACC_PROTECTED
- ACC_INTERFACE
- ACC_SYNTHETIC
- ACC_FINAL
- RETURN
- INVOKEVIRTUAL
- ASM8 ( )
- INVOKEINTERFACE
- INVOKESPECIAL
- IRETURN
- ICONST_0 ( )
- PUTFIELD
- GETSTATIC
- GETFIELD
- DLOAD
- ACC_NATIVE
- ALOAD
- SIPUSH
- ICONST_2 ( )
- ILOAD
- ICONST_3 ( )
- LSTORE
- IFNONNULL
- ISTORE
- ICONST_4 ( )
- F_NEW
- ICONST_1 ( )
- DRETURN
- ACC_ENUM
- IF_ICMPEQ
- DCONST_1 ( )
- DCONST_0 ( )
- BIPUSH
- LMUL
- PUTSTATIC
- FSTORE
- DSTORE
- FRETURN
- DADD
- SALOAD
- ICONST_5 ( )
- DUP
- LLOAD
- ATHROW
- FLOAD
- F_SAME
- DASTORE
- ACC_DEPRECATED
- GOTO
- ASTORE
- DUP2 ( )
- ACC_BRIDGE
- T_BOOLEAN
- LRETURN
- IOR
- ACC_VOLATILE
- DALOAD
- LXOR
- NEWARRAY
- DNEG
- T_BYTE
- MULTIANEWARRAY
- T_CHAR
- IFEQ
- NOP
- I2S ( )
- IF_ICMPGE
- LREM
- INEG
- ARETURN
- T_INT
- T_FLOAT
- FCONST_1 ( )
- F_SAME1 ( )
- NEW
- LCMP
- FNEG
- LCONST_1 ( )
- LOR
- POP2 ( )
- IMUL
- FCONST_2 ( )
- DCMPL
- FCONST_0 ( )
- DUP_X1 ( )
- LDC
- F_APPEND
- ICONST_M1 ( )
- LSHR
- IF_ICMPLE
- LALOAD
- FREM
- ACC_ANNOTATION
- IF_ACMPEQ
- BALOAD
- ACC_SYNCHRONIZED
- BASTORE
- FALOAD
- AALOAD
- LSHL
- T_SHORT
- ISUB
- LOOKUPSWITCH
- IFNE
- IALOAD
- H_INVOKEINTERFACE
- LDIV
- ISHR
- ACC_STRICT
- LONG
- IF_ICMPLT
- LADD
- CHECKCAST
- IFLT
- LAND
- FMUL
- IF_ICMPGT
- LCONST_0 ( )
- T_DOUBLE
- FADD
- F_CHOP
- IFLE
- H_PUTSTATIC
- DCMPG
- F2L ( )
- IDIV
- POP
- ARRAYLENGTH
- DUP2_X1 ( )
- DDIV
- L2D ( )
- FCMPL
- ANEWARRAY
- FASTORE
- MONITOREXIT
- F_FULL
- IF_ICMPNE
- LSUB
- FSUB
- ISHL
- H_INVOKEVIRTUAL
- IXOR
- ACC_VARARGS
- MONITORENTER
- IAND
- DMUL
- F2I ( )
- DREM
- DSUB
- V1_7 ( )
- DUP2_X2 ( )
- T_LONG
- IREM
- ACC_SUPER
- ACONST_NULL
- V1_8 ( )
- H_GETFIELD
- FCMPG
- IFNULL
- ACC_TRANSIENT
- H_INVOKESTATIC
- IADD
- IASTORE
- D2I ( )
- AASTORE
- UNINITIALIZED_THIS
- LUSHR
- SWAP
- H_GETSTATIC
- INTEGER
- TOP
- ACC_TRANSITIVE
- D2F ( )
- LNEG
- IFGE
- CASTORE
- CALOAD
- JSR
- F2D ( )
- L2F ( )
- D2L ( )
- LASTORE
- I2C ( )
- H_NEWINVOKESPECIAL
- IFGT
- NULL
- I2F ( )
- L2I ( )
- INVOKEDYNAMIC
- V1_5 ( )
- IUSHR
- DUP_X2 ( )
- SASTORE
- SOURCE_DEPRECATED
- V1_6 ( )
- FDIV
- IINC
- ACC_MODULE
- TABLESWITCH
- RET
- IF_ACMPNE
- H_INVOKESPECIAL
- I2L ( )
- V1_3 ( )
- V1_1 ( )
- DOUBLE
- H_PUTFIELD
- V1_2 ( )
- INSTANCEOF
- I2B ( )
- ACC_MANDATED
- V1_4 ( )
- V11 ( )
- SOURCE_MASK
Related Classes
- java.util.Arrays
- java.io.File
- java.util.Collections
- java.io.InputStream
- java.util.Iterator
- java.lang.reflect.Method
- java.util.LinkedList
- java.util.concurrent.atomic.AtomicInteger
- java.lang.reflect.Modifier
- com.google.common.collect.ImmutableList
- java.util.ListIterator
- java.util.jar.JarEntry
- org.objectweb.asm.ClassReader
- org.objectweb.asm.MethodVisitor
- org.objectweb.asm.ClassWriter
- org.apache.commons.lang3.Validate
- org.objectweb.asm.Type
- org.objectweb.asm.ClassVisitor
- org.objectweb.asm.Label
- org.objectweb.asm.FieldVisitor
- org.objectweb.asm.tree.ClassNode
- org.objectweb.asm.tree.MethodNode
- org.objectweb.asm.AnnotationVisitor
- org.objectweb.asm.tree.AbstractInsnNode
- org.objectweb.asm.tree.MethodInsnNode
Java Code Examples for org.objectweb.asm.Opcodes#DUP2_X1
The following examples show how to use
org.objectweb.asm.Opcodes#DUP2_X1 .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TypeUtils.java From maple-ir with GNU General Public License v3.0 | 5 votes |
public static int getDupXOpcode(Type dType, Type bType) { if (dType.getSize() == 1 && bType.getSize() == 1) { return Opcodes.DUP_X1; } else if (dType.getSize() == 1 && bType.getSize() == 2) { return Opcodes.DUP_X2; } else if (dType.getSize() == 2 && bType.getSize() == 1) { return Opcodes.DUP2_X1; } else if (dType.getSize() == 2 && bType.getSize() == 2) { return Opcodes.DUP2_X2; } else { throw new IllegalArgumentException(dType.toString() + " " + bType.toString()); } }
Example 2
Source File: LazyLoadingMethodVisitor.java From AVM with MIT License | 4 votes |
/** * NOTE: All calls to instruction visitation routines are made against super, directly, since we do frame offset accounting within our overrides * and that offset only applies to incoming bytecodes, not outgoing ones. * * @param opcode The opcode. * @param descriptor The type descriptor of the field to which the opcode is applied. */ private void checkInjectLazyLoad(int opcode, String descriptor) { // If this is a PUTFIELD or GETFIELD, we want to call "lazyLoad()": // -PUTIFELD: DUP2, POP, INVOKEVIRTUAL // -GETIFELD: DUP, INVOKEVIRTUAL if ((Opcodes.PUTFIELD == opcode) && ((null == this.tracker) || !this.tracker.isThisTargetOfPut(this.frameOffset))) { // We need to see how big this type is since double and long need a far more complex dance. if ((1 == descriptor.length()) && ((DescriptorParser.LONG == descriptor.charAt(0)) || (DescriptorParser.DOUBLE == descriptor.charAt(0)))) { // Here, the stack looks like: ... OBJECT, VAR1, VAR2 (top) // Where we need: ... OBJECT, VAR1, VAR2, OBJECT (top) // This is multiple stages: // DUP2_X1: ... VAR1, VAR2, OBJECT, VAR1, VAR2 (top) super.visitInsn(Opcodes.DUP2_X1); // POP2: ... VAR1, VAR2, OBJECT (top) super.visitInsn(Opcodes.POP2); // DUP: ... VAR1, VAR2, OBJECT, OBJECT (top) super.visitInsn(Opcodes.DUP); // INOKE: ... VAR1, VAR2, OBJECT (top) super.visitMethodInsn(Opcodes.INVOKEVIRTUAL, SHADOW_OBJECT_NAME, LAZY_LOAD_NAME, LAZY_LOAD_DESCRIPTOR, false); // DUP_X2: ... OBJECT, VAR1, VAR2, OBJECT (top) super.visitInsn(Opcodes.DUP_X2); // POP: ... OBJECT, VAR1, VAR2 (top) super.visitInsn(Opcodes.POP); } else { // Here, the stack looks like: ... OBJECT, VAR, (top) // Where we need: ... OBJECT, VAR, OBJECT (top) // Stages: // DUP2: ... OBJECT, VAR, OBJECT, VAR (top) super.visitInsn(Opcodes.DUP2); // POP: ... OBJECT, VAR, OBJECT (top) super.visitInsn(Opcodes.POP); // INOKE: ... OBJECT, VAR (top) super.visitMethodInsn(Opcodes.INVOKEVIRTUAL, SHADOW_OBJECT_NAME, LAZY_LOAD_NAME, LAZY_LOAD_DESCRIPTOR, false); } } else if ((Opcodes.GETFIELD == opcode) && ((null == this.tracker) || !this.tracker.isThisTargetOfGet(this.frameOffset))) { // Here, the stack looks like: ... OBJECT, (top) // Where we need: ... OBJECT, OBJECT (top) super.visitInsn(Opcodes.DUP); super.visitMethodInsn(Opcodes.INVOKEVIRTUAL, SHADOW_OBJECT_NAME, LAZY_LOAD_NAME, LAZY_LOAD_DESCRIPTOR, false); } }