00001 package de.fub.bytecode.generic;
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 public class ICONST extends Instruction
00012 implements ConstantPushInstruction, TypedInstruction {
00013 private int value;
00014
00015
00016
00017
00018
00019 ICONST() {}
00020 public ICONST(int i) {
00021 super(de.fub.bytecode.Constants.ICONST_0, (short)1);
00022
00023 if((i >= -1) && (i <= 5))
00024 tag = (short)(de.fub.bytecode.Constants.ICONST_0 + i);
00025 else
00026 throw new ClassGenException("ICONST can be used only for value between -1 and 5: " +
00027 i);
00028 value = i;
00029 }
00030
00031
00032
00033
00034
00035
00036
00037
00038 public void accept(Visitor v) {
00039 v.visitPushInstruction(this);
00040 v.visitStackProducer(this);
00041 v.visitTypedInstruction(this);
00042 v.visitConstantPushInstruction(this);
00043 v.visitICONST(this);
00044 }
00045
00046
00047 public Type getType(ConstantPoolGen cp) {
00048 return Type.INT;
00049 }
00050 public Number getValue() { return new Integer(value); }
00051 }