本文整理汇总了Java中com.sun.org.apache.bcel.internal.Constants.WIDE属性的典型用法代码示例。如果您正苦于以下问题:Java Constants.WIDE属性的具体用法?Java Constants.WIDE怎么用?Java Constants.WIDE使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类com.sun.org.apache.bcel.internal.Constants
的用法示例。
在下文中一共展示了Constants.WIDE属性的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: readInstruction
/**
* Read an instruction from (byte code) input stream and return the
* appropiate object.
*
* @param file file to read from
* @return instruction object being read
*/
public static final Instruction readInstruction(ByteSequence bytes)
throws IOException
{
boolean wide = false;
short opcode = (short)bytes.readUnsignedByte();
Instruction obj = null;
if(opcode == Constants.WIDE) { // Read next opcode after wide byte
wide = true;
opcode = (short)bytes.readUnsignedByte();
}
if(InstructionConstants.INSTRUCTIONS[opcode] != null)
return InstructionConstants.INSTRUCTIONS[opcode]; // Used predefined immutable object, if available
/* Find appropiate class, instantiate an (empty) instruction object
* and initialize it by hand.
*/
Class clazz;
try {
clazz = Class.forName(className(opcode));
} catch (ClassNotFoundException cnfe){
// If a class by that name does not exist, the opcode is illegal.
// Note that IMPDEP1, IMPDEP2, BREAKPOINT are also illegal in a sense.
throw new ClassGenException("Illegal opcode detected.");
}
try {
obj = (Instruction)clazz.newInstance();
if(wide && !((obj instanceof LocalVariableInstruction) ||
(obj instanceof IINC) ||
(obj instanceof RET)))
throw new Exception("Illegal opcode after wide: " + opcode);
obj.setOpcode(opcode);
obj.initFromFile(bytes, wide); // Do further initializations, if any
// Byte code offset set in InstructionList
} catch(Exception e) { throw new ClassGenException(e.toString()); }
return obj;
}