Class CodeAttribute

java.lang.Object
org.jboss.classfilewriter.attributes.Attribute
org.jboss.classfilewriter.code.CodeAttribute
All Implemented Interfaces:
WritableEntry

public class CodeAttribute extends Attribute
  • Field Details

  • Constructor Details

  • Method Details

    • getStackFrameTypeResolver

      public CodeAttribute.StackFrameTypeResolver getStackFrameTypeResolver()
    • setStackFrameTypeResolver

      public void setStackFrameTypeResolver(CodeAttribute.StackFrameTypeResolver stackFrameTypeResolver)
    • writeData

      public void writeData(ByteArrayDataOutputStream stream) throws IOException
      Specified by:
      writeData in class Attribute
      Throws:
      IOException
    • aaload

      public void aaload()
    • aastore

      public void aastore()
    • aconstNull

      public void aconstNull()
    • aload

      public void aload(int no)
    • anewarray

      public void anewarray(String arrayType)
    • arraylength

      public void arraylength()
    • astore

      public void astore(int no)
    • athrow

      public void athrow()
    • baload

      public void baload()
    • bastore

      public void bastore()
    • caload

      public void caload()
    • castore

      public void castore()
    • bipush

      public void bipush(byte value)
    • branchEnd

      public void branchEnd(BranchEnd end)
      marks the end of a branch. The current stack frame is checked for compatibility with the stack frame at the branch start
    • checkcast

      public void checkcast(String className)
      Do not use Descriptor format (e.g. Ljava/lang/Object;), the correct form is just java/lang/Object or java.lang.Object
    • checkcast

      public void checkcast(Class<?> clazz)
    • d2f

      public void d2f()
    • d2i

      public void d2i()
    • d2l

      public void d2l()
    • dadd

      public void dadd()
    • daload

      public void daload()
    • dastore

      public void dastore()
    • dcmpg

      public void dcmpg()
    • dcmpl

      public void dcmpl()
    • dconst

      public void dconst(double value)
      Adds the appropriate dconst instruction.

      note, if the value is not 0 or 1 then ldc is used instead

    • ddiv

      public void ddiv()
    • dload

      public void dload(int no)
    • dmul

      public void dmul()
    • dneg

      public void dneg()
    • drem

      public void drem()
    • dstore

      public void dstore(int no)
    • dsub

      public void dsub()
    • dup

      public void dup()
    • dupX1

      public void dupX1()
    • dupX2

      public void dupX2()
    • dup2

      public void dup2()
    • dup2X1

      public void dup2X1()
    • dup2X2

      public void dup2X2()
    • exceptionBlockStart

      public ExceptionHandler exceptionBlockStart(String exceptionType)
      Begin writing an exception handler block. The handler is not actually persisted until exceptionHandler is called.
    • exceptionBlockEnd

      public void exceptionBlockEnd(ExceptionHandler handler)
      Mark the end of an exception handler block. The last instruction that was written will be the last instruction covered by the handler
    • exceptionHandlerStart

      public void exceptionHandlerStart(ExceptionHandler handler)
      Marks the current code location as the exception handler and adds the handler to the exception handler table;
    • f2d

      public void f2d()
    • f2i

      public void f2i()
    • f2l

      public void f2l()
    • fadd

      public void fadd()
    • faload

      public void faload()
    • fastore

      public void fastore()
    • fcmpg

      public void fcmpg()
    • fcmpl

      public void fcmpl()
    • fconst

      public void fconst(float value)
      Adds the appropriate fconst instruction.

      note, if the value is not 0, 1, 2 then ldc is used instead

    • fdiv

      public void fdiv()
    • fload

      public void fload(int no)
    • fmul

      public void fmul()
    • fneg

      public void fneg()
    • frem

      public void frem()
    • fstore

      public void fstore(int no)
    • fsub

      public void fsub()
    • getfield

      public void getfield(String className, String field, Class<?> fieldType)
    • getfield

      public void getfield(String className, String field, String descriptor)
    • getstatic

      public void getstatic(String className, String field, Class<?> fieldType)
    • getstatic

      public void getstatic(String className, String field, String descriptor)
    • gotoInstruction

      public void gotoInstruction(CodeLocation location)
      writes a goto instruction.

      TODO: implemented goto_w

    • gotoInstruction

      public BranchEnd gotoInstruction()
      writes a goto instruction.

      TODO: implemented goto_w

    • i2b

      public void i2b()
    • i2c

      public void i2c()
    • i2d

      public void i2d()
    • i2f

      public void i2f()
    • i2l

      public void i2l()
    • i2s

      public void i2s()
    • iadd

      public void iadd()
    • iaload

      public void iaload()
    • iand

      public void iand()
    • iastore

      public void iastore()
    • iconst

      public void iconst(int value)
      Adds the appropriate iconst instruction.

      note, if the value is not in the range -1 to 5 ldc is written instead

      Parameters:
      value -
    • idiv

      public void idiv()
    • ifAcmpeq

      public void ifAcmpeq(CodeLocation location)
    • ifAcmpeq

      public BranchEnd ifAcmpeq()
    • ifAcmpne

      public void ifAcmpne(CodeLocation location)
    • ifAcmpne

      public BranchEnd ifAcmpne()
    • ifIcmpeq

      public void ifIcmpeq(CodeLocation location)
    • ifIcmpeq

      public BranchEnd ifIcmpeq()
    • ifIcmpne

      public void ifIcmpne(CodeLocation location)
    • ifIcmpne

      public BranchEnd ifIcmpne()
    • ifIcmplt

      public void ifIcmplt(CodeLocation location)
    • ifIcmplt

      public BranchEnd ifIcmplt()
    • ifIcmple

      public void ifIcmple(CodeLocation location)
    • ifIcmple

      public BranchEnd ifIcmple()
    • ifIcmpgt

      public void ifIcmpgt(CodeLocation location)
    • ifIcmpgt

      public BranchEnd ifIcmpgt()
    • ifIcmpge

      public void ifIcmpge(CodeLocation location)
    • ifIcmpge

      public BranchEnd ifIcmpge()
    • ifEq

      public void ifEq(CodeLocation location)
    • ifeq

      public BranchEnd ifeq()
    • ifne

      public void ifne(CodeLocation location)
    • ifne

      public BranchEnd ifne()
    • iflt

      public void iflt(CodeLocation location)
    • iflt

      public BranchEnd iflt()
    • ifle

      public void ifle(CodeLocation location)
    • ifle

      public BranchEnd ifle()
    • ifgt

      public void ifgt(CodeLocation location)
    • ifgt

      public BranchEnd ifgt()
    • ifge

      public void ifge(CodeLocation location)
    • ifge

      public BranchEnd ifge()
    • ifnotnull

      public void ifnotnull(CodeLocation location)
    • ifnotnull

      public BranchEnd ifnotnull()
    • ifnull

      public void ifnull(CodeLocation location)
      Jump to the given location if the reference type on the top of the stack is null
    • ifnull

      public BranchEnd ifnull()
      Jump to the given location if the reference type on the top of the stack is null.

      The BranchEnd returned from this method is used to set the end point to a future point in the bytecode stream

    • iinc

      public void iinc(int local, int amount)
    • iload

      public void iload(int no)
    • imul

      public void imul()
    • ineg

      public void ineg()
    • instanceofInstruction

      public void instanceofInstruction(String className)
    • invokespecial

      public void invokespecial(String className, String methodName, String descriptor)
    • invokespecial

      public void invokespecial(String className, String methodName, String returnType, String[] parameterTypes)
    • invokespecial

      public void invokespecial(Constructor<?> constructor)
    • invokespecial

      public void invokespecial(Method method)
    • invokestatic

      public void invokestatic(String className, String methodName, String descriptor)
    • invokestatic

      public void invokestatic(String className, String methodName, String returnType, String[] parameterTypes)
    • invokestatic

      public void invokestatic(Method method)
    • invokevirtual

      public void invokevirtual(String className, String methodName, String descriptor)
    • invokevirtual

      public void invokevirtual(String className, String methodName, String returnType, String[] parameterTypes)
    • invokevirtual

      public void invokevirtual(Method method)
    • invokeinterface

      public void invokeinterface(String className, String methodName, String descriptor)
    • invokeinterface

      public void invokeinterface(String className, String methodName, String returnType, String[] parameterTypes)
    • invokeinterface

      public void invokeinterface(Method method)
    • ior

      public void ior()
    • irem

      public void irem()
    • ishl

      public void ishl()
    • ishr

      public void ishr()
    • istore

      public void istore(int no)
    • isub

      public void isub()
    • iushr

      public void iushr()
    • ixor

      public void ixor()
    • l2d

      public void l2d()
    • l2f

      public void l2f()
    • l2i

      public void l2i()
    • ladd

      public void ladd()
    • laload

      public void laload()
    • land

      public void land()
    • lastore

      public void lastore()
    • lcmp

      public void lcmp()
    • lconst

      public void lconst(long value)
      Adds the appropriate lconst instruction.

      note, if the value is not 0 or 1 then ldc is used instead

    • ldc

      public void ldc(int value)
      Adds an ldc instruction for an int.
      Parameters:
      value - The value to load
    • ldc

      public void ldc(float value)
      Adds an ldc instruction for float
    • ldc

      public void ldc(String value)
      Adds an ldc instruction for a String

      To load a class literal using ldc use the @{link #loadType(String)} method.

    • ldc2

      public void ldc2(double value)
      Adds an ldc2_w instruction for double
    • ldc2

      public void ldc2(long value)
      Adds an ldc2_w instruction for long
    • ldiv

      public void ldiv()
    • lload

      public void lload(int no)
    • lmul

      public void lmul()
    • lneg

      public void lneg()
    • load

      public void load(Class<?> type, int no)
      Generates the apprpriate load instruction for the given type
      Parameters:
      type - The type of variable
      no - local variable number
    • load

      public void load(String descriptor, int no)
      Generates the apprpriate load instruction for the given type
      Parameters:
      descriptor - The descriptor of the variable
      no - local variable number
    • loadClass

      public void loadClass(String className)
    • loadType

      public void loadType(String descriptor)
      Loads a java.lang.Class for the given descriptor into the stack.
    • lookupswitch

      public void lookupswitch(LookupSwitchBuilder lookupSwitchBuilder)
      Adds a lookup switch statement
      Parameters:
      lookupSwitchBuilder -
    • lor

      public void lor()
    • lrem

      public void lrem()
    • lshl

      public void lshl()
    • lshr

      public void lshr()
    • lstore

      public void lstore(int no)
    • lsub

      public void lsub()
    • lushr

      public void lushr()
    • lxor

      public void lxor()
    • mark

      public CodeLocation mark()
      Gets the location object for the current location in the bytecode. Jumps to this location will begin executing the next instruction that is written to the bytecode stream
    • monitorenter

      public void monitorenter()
    • monitorexit

      public void monitorexit()
    • multianewarray

      public void multianewarray(String arrayType, int dimensions)
    • newInstruction

      public void newInstruction(String classname)
    • newInstruction

      public void newInstruction(Class<?> clazz)
    • newarray

      public void newarray(Class<?> arrayType)
      arrayType must be a Class object that represents a primitive type
    • nop

      public void nop()
    • pop

      public void pop()
    • pop2

      public void pop2()
    • putfield

      public void putfield(String className, String field, Class<?> fieldType)
    • putfield

      public void putfield(String className, String field, String descriptor)
    • putstatic

      public void putstatic(String className, String field, Class<?> fieldType)
    • putstatic

      public void putstatic(String className, String field, String descriptor)
    • returnInstruction

      public void returnInstruction()
      Adds the appropriate return instruction for the methods return type.
    • saload

      public void saload()
    • sastore

      public void sastore()
    • sipush

      public void sipush(short value)
    • swap

      public void swap()
    • tableswitch

      public void tableswitch(TableSwitchBuilder builder)
    • loadMethodParameters

      public void loadMethodParameters()
      loads all parameters onto the stack.

      If this method is non-static then the parameter at location 0 (i.e. this object) is not pushed.

    • getStackFrames

      public LinkedHashMap<Integer,StackFrame> getStackFrames()
    • setupFrame

      public void setupFrame(String... types)
    • getConstPool

      public ConstPool getConstPool()
    • assertTypeOnStack

      public void assertTypeOnStack(int position, StackEntryType type, String message)
    • assertTypeOnStack

      public void assertTypeOnStack(StackEntryType type, String message)
    • assertNotWideOnStack

      public void assertNotWideOnStack(int position, String message)
    • assertNotWideOnStack

      public void assertNotWideOnStack(String message)