FileDocCategorySizeDatePackage
InsnTargetOp.javaAPI DocGlassfish v2 API4599Fri May 04 22:34:28 BST 2007com.sun.jdo.api.persistence.enhancer.classfile

InsnTargetOp

public class InsnTargetOp extends Insn
An instruction which requires a single branch offset as an immediate operand .

Fields Summary
InsnTarget
targetOp
Constructors Summary
InsnTargetOp(int theOpcode, InsnTarget theOperand, int pc)

    super(theOpcode, pc);
    targetOp = theOperand;
  
InsnTargetOp(int theOpcode, InsnTarget theOperand)

    super(theOpcode, NO_OFFSET);

    targetOp = theOperand;

    switch(theOpcode) {
    case opc_ifeq:
    case opc_ifne:
    case opc_iflt:
    case opc_ifge:
    case opc_ifgt:
    case opc_ifle:
    case opc_if_icmpeq:
    case opc_if_icmpne:
    case opc_if_icmplt:
    case opc_if_icmpge:
    case opc_if_icmpgt:
    case opc_if_icmple:
    case opc_if_acmpeq:
    case opc_if_acmpne:
    case opc_goto:
    case opc_jsr:
    case opc_ifnull:
    case opc_ifnonnull:
    case opc_goto_w:
    case opc_jsr_w:
      /* Target */
      if (theOperand == null)
          throw new InsnError ("attempt to create an " + opName(theOpcode) +//NOI18N
                               " with a null Target operand");//NOI18N
      break;

    default:
        throw new InsnError ("attempt to create an " + opName(theOpcode) +//NOI18N
                             " with an InsnTarget operand");//NOI18N
    }
  
Methods Summary
public java.lang.StringargTypes()

    return VMOp.ops[opcode()].argTypes();
  
public booleanbranches()

    return true;
  
public voidmarkTargets()
Mark possible branch targets

    targetOp.setBranchTarget();
  
public intnStackArgs()

    return VMOp.ops[opcode()].nStackArgs();
  
public intnStackResults()

    return VMOp.ops[opcode()].nStackResults();
  
voidprint(java.io.PrintStream out, int indent)

    ClassPrint.spaces(out, indent);
    /* print offset in non-relative form for readability */
    out.println(offset() + "  " + opName(opcode()) + "  " + //NOI18N
		targetOp.offset());
  
public java.lang.StringresultTypes()

    return VMOp.ops[opcode()].resultTypes();
  
intsize()

    if (opcode() == opc_goto_w || opcode() == opc_jsr_w)
      return 5;
    return 3;
  
intstore(byte[] buf, int index)

    buf[index++] = (byte) opcode();
    int off = targetOp.offset() - offset();
    if (opcode() == opc_goto_w || opcode() == opc_jsr_w)
      return storeInt(buf, index, off);
    else
      return storeShort(buf, index, (short)off);
  
public InsnTargettarget()
Return the branch target which is the immediate operand

    return targetOp;