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.