当前位置: 首页>>代码示例>>Java>>正文


Java Constants.WIDE属性代码示例

本文整理汇总了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;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:50,代码来源:Instruction.java


注:本文中的com.sun.org.apache.bcel.internal.Constants.WIDE属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。