## org.apache.bcel.generic
Interface InstructionConstants

All 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 386056 2006-03-15 11:31:56Z tcurdt $

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 InstructionConstants.Clinit` `bla` Interfaces may have no static initializers, so we simulate this with an inner class.
`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` `DUP_X1`
`static StackInstruction` `DUP_X2`
`static StackInstruction` `DUP2`
`static StackInstruction` `DUP2_X1`
`static StackInstruction` `DUP2_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.

Field Detail

### NOP

    static final Instruction NOP

  Predefined instruction objects

### ACONST_NULL

    static final Instruction ACONST_NULL

### ICONST_M1

    static final Instruction ICONST_M1

### ICONST_0

    static final Instruction ICONST_0

### ICONST_1

    static final Instruction ICONST_1

### ICONST_2

    static final Instruction ICONST_2

### ICONST_3

    static final Instruction ICONST_3

### ICONST_4

    static final Instruction ICONST_4

### ICONST_5

    static final Instruction ICONST_5

### LCONST_0

    static final Instruction LCONST_0

### LCONST_1

    static final Instruction LCONST_1

### FCONST_0

    static final Instruction FCONST_0

### FCONST_1

    static final Instruction FCONST_1

### FCONST_2

    static final Instruction FCONST_2

### DCONST_0

    static final Instruction DCONST_0

### DCONST_1

    static final Instruction DCONST_1

### IALOAD

    static final ArrayInstruction IALOAD

### LALOAD

    static final ArrayInstruction LALOAD

### FALOAD

    static final ArrayInstruction FALOAD

### DALOAD

    static final ArrayInstruction DALOAD

### AALOAD

    static final ArrayInstruction AALOAD

### BALOAD

    static final ArrayInstruction BALOAD

### CALOAD

    static final ArrayInstruction CALOAD

### SALOAD

    static final ArrayInstruction SALOAD

### IASTORE

    static final ArrayInstruction IASTORE

### LASTORE

    static final ArrayInstruction LASTORE

### FASTORE

    static final ArrayInstruction FASTORE

### DASTORE

    static final ArrayInstruction DASTORE

### AASTORE

    static final ArrayInstruction AASTORE

### BASTORE

    static final ArrayInstruction BASTORE

### CASTORE

    static final ArrayInstruction CASTORE

### SASTORE

    static final ArrayInstruction SASTORE

### POP

    static final StackInstruction POP

### POP2

    static final StackInstruction POP2

### DUP

    static final StackInstruction DUP

### DUP_X1

    static final StackInstruction DUP_X1

### DUP_X2

    static final StackInstruction DUP_X2

### DUP2

    static final StackInstruction DUP2

### DUP2_X1

    static final StackInstruction DUP2_X1

### DUP2_X2

    static final StackInstruction DUP2_X2

### SWAP

    static final StackInstruction SWAP

### IADD

    static final ArithmeticInstruction IADD

### LADD

    static final ArithmeticInstruction LADD

### FADD

    static final ArithmeticInstruction FADD

### DADD

    static final ArithmeticInstruction DADD

### ISUB

    static final ArithmeticInstruction ISUB

### LSUB

    static final ArithmeticInstruction LSUB

### FSUB

    static final ArithmeticInstruction FSUB

### DSUB

    static final ArithmeticInstruction DSUB

### IMUL

    static final ArithmeticInstruction IMUL

### LMUL

    static final ArithmeticInstruction LMUL

### FMUL

    static final ArithmeticInstruction FMUL

### DMUL

    static final ArithmeticInstruction DMUL

### IDIV

    static final ArithmeticInstruction IDIV

### LDIV

    static final ArithmeticInstruction LDIV

### FDIV

    static final ArithmeticInstruction FDIV

### DDIV

    static final ArithmeticInstruction DDIV

### IREM

    static final ArithmeticInstruction IREM

### LREM

    static final ArithmeticInstruction LREM

### FREM

    static final ArithmeticInstruction FREM

### DREM

    static final ArithmeticInstruction DREM

### INEG

    static final ArithmeticInstruction INEG

### LNEG

    static final ArithmeticInstruction LNEG

### FNEG

    static final ArithmeticInstruction FNEG

### DNEG

    static final ArithmeticInstruction DNEG

### ISHL

    static final ArithmeticInstruction ISHL

### LSHL

    static final ArithmeticInstruction LSHL

### ISHR

    static final ArithmeticInstruction ISHR

### LSHR

    static final ArithmeticInstruction LSHR

### IUSHR

    static final ArithmeticInstruction IUSHR

### LUSHR

    static final ArithmeticInstruction LUSHR

### IAND

    static final ArithmeticInstruction IAND

### LAND

    static final ArithmeticInstruction LAND

### IOR

    static final ArithmeticInstruction IOR

### LOR

    static final ArithmeticInstruction LOR

### IXOR

    static final ArithmeticInstruction IXOR

### LXOR

    static final ArithmeticInstruction LXOR

### I2L

    static final ConversionInstruction I2L

### I2F

    static final ConversionInstruction I2F

### I2D

    static final ConversionInstruction I2D

### L2I

    static final ConversionInstruction L2I

### L2F

    static final ConversionInstruction L2F

### L2D

    static final ConversionInstruction L2D

### F2I

    static final ConversionInstruction F2I

### F2L

    static final ConversionInstruction F2L

### F2D

    static final ConversionInstruction F2D

### D2I

    static final ConversionInstruction D2I

### D2L

    static final ConversionInstruction D2L

### D2F

    static final ConversionInstruction D2F

### I2B

    static final ConversionInstruction I2B

### I2C

    static final ConversionInstruction I2C

### I2S

    static final ConversionInstruction I2S

### LCMP

    static final Instruction LCMP

### FCMPL

    static final Instruction FCMPL

### FCMPG

    static final Instruction FCMPG

### DCMPL

    static final Instruction DCMPL

### DCMPG

    static final Instruction DCMPG

### IRETURN

    static final ReturnInstruction IRETURN

### LRETURN

    static final ReturnInstruction LRETURN

### FRETURN

    static final ReturnInstruction FRETURN

### DRETURN

    static final ReturnInstruction DRETURN

### ARETURN

    static final ReturnInstruction ARETURN

### RETURN

    static final ReturnInstruction RETURN

### ARRAYLENGTH

    static final Instruction ARRAYLENGTH

### ATHROW

    static final Instruction ATHROW

### MONITORENTER

    static final Instruction MONITORENTER

### MONITOREXIT

    static final Instruction MONITOREXIT

### THIS

    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().

### ALOAD_0

    static final LocalVariableInstruction ALOAD_0

### ALOAD_1

    static final LocalVariableInstruction ALOAD_1

### ALOAD_2

    static final LocalVariableInstruction ALOAD_2

### ILOAD_0

    static final LocalVariableInstruction ILOAD_0

### ILOAD_1

    static final LocalVariableInstruction ILOAD_1

### ILOAD_2

    static final LocalVariableInstruction ILOAD_2

### ASTORE_0

    static final LocalVariableInstruction ASTORE_0

### ASTORE_1

    static final LocalVariableInstruction ASTORE_1

### ASTORE_2

    static final LocalVariableInstruction ASTORE_2

### ISTORE_0

    static final LocalVariableInstruction ISTORE_0

### ISTORE_1

    static final LocalVariableInstruction ISTORE_1

### ISTORE_2

    static final LocalVariableInstruction ISTORE_2

### INSTRUCTIONS

    static final Instruction[] INSTRUCTIONS

  Get object via its opcode, for immutable instructions like branch instructions entries are set to null.

### bla

    static final InstructionConstants.Clinit bla

  Interfaces may have no static initializers, so we simulate this with an inner class.

Copyright © 2002-2006 Apache Software Foundation. All Rights Reserved.