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