org.apache.bcel.generic

Interface InstructionConstants

Known Implementing Classes:
InstructionFactory, PUSH

public interface InstructionConstants

This interface contains shareable instruction objects. In order to save memory you can use some instructions multiply, since they have an immutable state and are directly derived from Instruction. I.e. they have no instance fields that could be changed. Since some of these instructions like ICONST_0 occur very frequently this can save a lot of time and space. This feature is an adaptation of the FlyWeight design pattern, we just use an array instead of a factory. The Instructions can also accessed directly under their names, so it's possible to write il.append(Instruction.ICONST_0);

Version:
$Id: InstructionConstants.java,v 1.1.1.1 2001/10/29 20:00:18 jvanzyl Exp $

Author:
M. Dahm

Nested Class Summary

static class
InstructionConstants.Clinit

Field Summary

static ArrayInstruction
AALOAD
static ArrayInstruction
AASTORE
static Instruction
ACONST_NULL
static LocalVariableInstruction
ALOAD_0
static LocalVariableInstruction
ALOAD_1
static LocalVariableInstruction
ALOAD_2
static ReturnInstruction
ARETURN
static Instruction
ARRAYLENGTH
static LocalVariableInstruction
ASTORE_0
static LocalVariableInstruction
ASTORE_1
static LocalVariableInstruction
ASTORE_2
static Instruction
ATHROW
static ArrayInstruction
BALOAD
static ArrayInstruction
BASTORE
static ArrayInstruction
CALOAD
static ArrayInstruction
CASTORE
static ConversionInstruction
D2F
static ConversionInstruction
D2I
static ConversionInstruction
D2L
static ArithmeticInstruction
DADD
static ArrayInstruction
DALOAD
static ArrayInstruction
DASTORE
static Instruction
DCMPG
static Instruction
DCMPL
static Instruction
DCONST_0
static Instruction
DCONST_1
static ArithmeticInstruction
DDIV
static ArithmeticInstruction
DMUL
static ArithmeticInstruction
DNEG
static ArithmeticInstruction
DREM
static ReturnInstruction
DRETURN
static ArithmeticInstruction
DSUB
static StackInstruction
DUP
static StackInstruction
DUP2
static StackInstruction
DUP2_X1
static StackInstruction
DUP2_X2
static StackInstruction
DUP_X1
static StackInstruction
DUP_X2
static ConversionInstruction
F2D
static ConversionInstruction
F2I
static ConversionInstruction
F2L
static ArithmeticInstruction
FADD
static ArrayInstruction
FALOAD
static ArrayInstruction
FASTORE
static Instruction
FCMPG
static Instruction
FCMPL
static Instruction
FCONST_0
static Instruction
FCONST_1
static Instruction
FCONST_2
static ArithmeticInstruction
FDIV
static ArithmeticInstruction
FMUL
static ArithmeticInstruction
FNEG
static ArithmeticInstruction
FREM
static ReturnInstruction
FRETURN
static ArithmeticInstruction
FSUB
static ConversionInstruction
I2B
static ConversionInstruction
I2C
static ConversionInstruction
I2D
static ConversionInstruction
I2F
static ConversionInstruction
I2L
static ConversionInstruction
I2S
static ArithmeticInstruction
IADD
static ArrayInstruction
IALOAD
static ArithmeticInstruction
IAND
static ArrayInstruction
IASTORE
static Instruction
ICONST_0
static Instruction
ICONST_1
static Instruction
ICONST_2
static Instruction
ICONST_3
static Instruction
ICONST_4
static Instruction
ICONST_5
static Instruction
ICONST_M1
static ArithmeticInstruction
IDIV
static LocalVariableInstruction
ILOAD_0
static LocalVariableInstruction
ILOAD_1
static LocalVariableInstruction
ILOAD_2
static ArithmeticInstruction
IMUL
static ArithmeticInstruction
INEG
static Instruction[]
INSTRUCTIONS
Get object via its opcode, for immutable instructions like branch instructions entries are set to null.
static ArithmeticInstruction
IOR
static ArithmeticInstruction
IREM
static ReturnInstruction
IRETURN
static ArithmeticInstruction
ISHL
static ArithmeticInstruction
ISHR
static LocalVariableInstruction
ISTORE_0
static LocalVariableInstruction
ISTORE_1
static LocalVariableInstruction
ISTORE_2
static ArithmeticInstruction
ISUB
static ArithmeticInstruction
IUSHR
static ArithmeticInstruction
IXOR
static ConversionInstruction
L2D
static ConversionInstruction
L2F
static ConversionInstruction
L2I
static ArithmeticInstruction
LADD
static ArrayInstruction
LALOAD
static ArithmeticInstruction
LAND
static ArrayInstruction
LASTORE
static Instruction
LCMP
static Instruction
LCONST_0
static Instruction
LCONST_1
static ArithmeticInstruction
LDIV
static ArithmeticInstruction
LMUL
static ArithmeticInstruction
LNEG
static ArithmeticInstruction
LOR
static ArithmeticInstruction
LREM
static ReturnInstruction
LRETURN
static ArithmeticInstruction
LSHL
static ArithmeticInstruction
LSHR
static ArithmeticInstruction
LSUB
static ArithmeticInstruction
LUSHR
static ArithmeticInstruction
LXOR
static Instruction
MONITORENTER
static Instruction
MONITOREXIT
static Instruction
NOP
Predefined instruction objects
static StackInstruction
POP
static StackInstruction
POP2
static ReturnInstruction
RETURN
static ArrayInstruction
SALOAD
static ArrayInstruction
SASTORE
static StackInstruction
SWAP
static LocalVariableInstruction
THIS
You can use these constants in multiple places safely, if you can guarantee that you will never alter their internal values, e.g.
static InstructionConstants.Clinit
bla
Interfaces may have no static initializers, so we simulate this with an inner class.

Field Details

AALOAD

public static final ArrayInstruction AALOAD


AASTORE

public static final ArrayInstruction AASTORE


ACONST_NULL

public static final Instruction ACONST_NULL


ALOAD_0

public static final LocalVariableInstruction ALOAD_0


ALOAD_1

public static final LocalVariableInstruction ALOAD_1


ALOAD_2

public static final LocalVariableInstruction ALOAD_2


ARETURN

public static final ReturnInstruction ARETURN


ARRAYLENGTH

public static final Instruction ARRAYLENGTH


ASTORE_0

public static final LocalVariableInstruction ASTORE_0


ASTORE_1

public static final LocalVariableInstruction ASTORE_1


ASTORE_2

public static final LocalVariableInstruction ASTORE_2


ATHROW

public static final Instruction ATHROW


BALOAD

public static final ArrayInstruction BALOAD


BASTORE

public static final ArrayInstruction BASTORE


CALOAD

public static final ArrayInstruction CALOAD


CASTORE

public static final ArrayInstruction CASTORE


D2F

public static final ConversionInstruction D2F


D2I

public static final ConversionInstruction D2I


D2L

public static final ConversionInstruction D2L


DADD

public static final ArithmeticInstruction DADD


DALOAD

public static final ArrayInstruction DALOAD


DASTORE

public static final ArrayInstruction DASTORE


DCMPG

public static final Instruction DCMPG


DCMPL

public static final Instruction DCMPL


DCONST_0

public static final Instruction DCONST_0


DCONST_1

public static final Instruction DCONST_1


DDIV

public static final ArithmeticInstruction DDIV


DMUL

public static final ArithmeticInstruction DMUL


DNEG

public static final ArithmeticInstruction DNEG


DREM

public static final ArithmeticInstruction DREM


DRETURN

public static final ReturnInstruction DRETURN


DSUB

public static final ArithmeticInstruction DSUB


DUP

public static final StackInstruction DUP


DUP2

public static final StackInstruction DUP2


DUP2_X1

public static final StackInstruction DUP2_X1


DUP2_X2

public static final StackInstruction DUP2_X2


DUP_X1

public static final StackInstruction DUP_X1


DUP_X2

public static final StackInstruction DUP_X2


F2D

public static final ConversionInstruction F2D


F2I

public static final ConversionInstruction F2I


F2L

public static final ConversionInstruction F2L


FADD

public static final ArithmeticInstruction FADD


FALOAD

public static final ArrayInstruction FALOAD


FASTORE

public static final ArrayInstruction FASTORE


FCMPG

public static final Instruction FCMPG


FCMPL

public static final Instruction FCMPL


FCONST_0

public static final Instruction FCONST_0


FCONST_1

public static final Instruction FCONST_1


FCONST_2

public static final Instruction FCONST_2


FDIV

public static final ArithmeticInstruction FDIV


FMUL

public static final ArithmeticInstruction FMUL


FNEG

public static final ArithmeticInstruction FNEG


FREM

public static final ArithmeticInstruction FREM


FRETURN

public static final ReturnInstruction FRETURN


FSUB

public static final ArithmeticInstruction FSUB


I2B

public static final ConversionInstruction I2B


I2C

public static final ConversionInstruction I2C


I2D

public static final ConversionInstruction I2D


I2F

public static final ConversionInstruction I2F


I2L

public static final ConversionInstruction I2L


I2S

public static final ConversionInstruction I2S


IADD

public static final ArithmeticInstruction IADD


IALOAD

public static final ArrayInstruction IALOAD


IAND

public static final ArithmeticInstruction IAND


IASTORE

public static final ArrayInstruction IASTORE


ICONST_0

public static final Instruction ICONST_0


ICONST_1

public static final Instruction ICONST_1


ICONST_2

public static final Instruction ICONST_2


ICONST_3

public static final Instruction ICONST_3


ICONST_4

public static final Instruction ICONST_4


ICONST_5

public static final Instruction ICONST_5


ICONST_M1

public static final Instruction ICONST_M1


IDIV

public static final ArithmeticInstruction IDIV


ILOAD_0

public static final LocalVariableInstruction ILOAD_0


ILOAD_1

public static final LocalVariableInstruction ILOAD_1


ILOAD_2

public static final LocalVariableInstruction ILOAD_2


IMUL

public static final ArithmeticInstruction IMUL


INEG

public static final ArithmeticInstruction INEG


INSTRUCTIONS

public static final Instruction[] INSTRUCTIONS
Get object via its opcode, for immutable instructions like branch instructions entries are set to null.


IOR

public static final ArithmeticInstruction IOR


IREM

public static final ArithmeticInstruction IREM


IRETURN

public static final ReturnInstruction IRETURN


ISHL

public static final ArithmeticInstruction ISHL


ISHR

public static final ArithmeticInstruction ISHR


ISTORE_0

public static final LocalVariableInstruction ISTORE_0


ISTORE_1

public static final LocalVariableInstruction ISTORE_1


ISTORE_2

public static final LocalVariableInstruction ISTORE_2


ISUB

public static final ArithmeticInstruction ISUB


IUSHR

public static final ArithmeticInstruction IUSHR


IXOR

public static final ArithmeticInstruction IXOR


L2D

public static final ConversionInstruction L2D


L2F

public static final ConversionInstruction L2F


L2I

public static final ConversionInstruction L2I


LADD

public static final ArithmeticInstruction LADD


LALOAD

public static final ArrayInstruction LALOAD


LAND

public static final ArithmeticInstruction LAND


LASTORE

public static final ArrayInstruction LASTORE


LCMP

public static final Instruction LCMP


LCONST_0

public static final Instruction LCONST_0


LCONST_1

public static final Instruction LCONST_1


LDIV

public static final ArithmeticInstruction LDIV


LMUL

public static final ArithmeticInstruction LMUL


LNEG

public static final ArithmeticInstruction LNEG


LOR

public static final ArithmeticInstruction LOR


LREM

public static final ArithmeticInstruction LREM


LRETURN

public static final ReturnInstruction LRETURN


LSHL

public static final ArithmeticInstruction LSHL


LSHR

public static final ArithmeticInstruction LSHR


LSUB

public static final ArithmeticInstruction LSUB


LUSHR

public static final ArithmeticInstruction LUSHR


LXOR

public static final ArithmeticInstruction LXOR


MONITORENTER

public static final Instruction MONITORENTER


MONITOREXIT

public static final Instruction MONITOREXIT


NOP

public static final Instruction NOP
Predefined instruction objects


POP

public static final StackInstruction POP


POP2

public static final StackInstruction POP2


RETURN

public static final ReturnInstruction RETURN


SALOAD

public static final ArrayInstruction SALOAD


SASTORE

public static final ArrayInstruction SASTORE


SWAP

public static final StackInstruction SWAP


THIS

public static final LocalVariableInstruction THIS
You can use these constants in multiple places safely, if you can guarantee that you will never alter their internal values, e.g. call setIndex().


bla

public static final InstructionConstants.Clinit bla
Interfaces may have no static initializers, so we simulate this with an inner class.