TABLESWITCHpublic class TABLESWITCH extends Select TABLESWITCH - Switch within given range of values, i.e., low..high |
Constructors Summary |
---|
TABLESWITCH()Empty constructor needed for the Class.newInstance() statement in
Instruction.readInstruction(). Not to be used otherwise.
| public TABLESWITCH(int[] match, InstructionHandle[] targets, InstructionHandle target)
super(com.sun.org.apache.bcel.internal.Constants.TABLESWITCH, match, targets, target);
length = (short)(13 + match_length * 4); /* Alignment remainder assumed
* 0 here, until dump time */
fixed_length = length;
|
Methods Summary |
---|
public void | accept(com.sun.org.apache.bcel.internal.generic.Visitor v)Call corresponding visitor method(s). The order is:
Call visitor methods of implemented interfaces first, then
call methods according to the class hierarchy in descending order,
i.e., the most specific visitXXX() call comes last.
v.visitVariableLengthInstruction(this);
v.visitStackProducer(this);
v.visitBranchInstruction(this);
v.visitSelect(this);
v.visitTABLESWITCH(this);
| public void | dump(java.io.DataOutputStream out)Dump instruction as byte code to stream out.
super.dump(out);
int low = (match_length > 0)? match[0] : 0;
out.writeInt(low);
int high = (match_length > 0)? match[match_length - 1] : 0;
out.writeInt(high);
for(int i=0; i < match_length; i++) // jump offsets
out.writeInt(indices[i] = getTargetOffset(targets[i]));
| protected void | initFromFile(com.sun.org.apache.bcel.internal.util.ByteSequence bytes, boolean wide)Read needed data (e.g. index) from file.
super.initFromFile(bytes, wide);
int low = bytes.readInt();
int high = bytes.readInt();
match_length = high - low + 1;
fixed_length = (short)(13 + match_length * 4);
length = (short)(fixed_length + padding);
match = new int[match_length];
indices = new int[match_length];
targets = new InstructionHandle[match_length];
for(int i=low; i <= high; i++)
match[i - low] = i;
for(int i=0; i < match_length; i++) {
indices[i] = bytes.readInt();
}
|
|