case IA32_CMP_opcode:case IA32_OR_opcode:case IA32_SBB_opcode: case IA32_TEST_opcode:case IA32_XOR_opcode:
case IA32_OR_opcode:case IA32_SBB_opcode: case IA32_XOR_opcode:
  protected boolean targetIsClose(OPT_Instruction start, int target) {    OPT_Instruction inst = start.nextInstructionInCodeOrder();    int budget = 120; // slight fudge factor could be 127    while (true) {      if (budget <= 0 ) return false;      if (inst.getmcOffset() == target) {        return true;      }      switch (inst.getOpcode()) {      case LABEL_opcode:case BBEND_opcode:case UNINT_BEGIN_opcode:case UNINT_END_opcode:        // these generate no code        break;        // Generated from the same case in VM_Assembler      case IA32_ADC_opcode:case IA32_ADD_opcode:case IA32_AND_opcode:      case IA32_CMP_opcode:case IA32_OR_opcode:case IA32_SBB_opcode:      case IA32_TEST_opcode:case IA32_XOR_opcode:        budget -= 2; // opcode + modr/m        budget -= operandCost(MIR_BinaryAcc.getResult(inst), true);        budget -= operandCost(MIR_BinaryAcc.getValue(inst), true);        break;      case IA32_PUSH_opcode:        {          OPT_Operand op = MIR_UnaryNoRes.getVal(inst);          if (op instanceof OPT_RegisterOperand) {            budget -= 1;          } else if (op instanceof OPT_IntConstantOperand) {            if (fits(((OPT_IntConstantOperand)op).value,8)) {              budget -= 2;            } else {              budget -= 5;            }          } else {            budget -= (2+operandCost(op, true));          }        }        break;      case IA32_MOV_opcode:        budget -= 2; // opcode + modr/m        budget -= operandCost(MIR_Move.getResult(inst), false);        budget -= operandCost(MIR_Move.getValue(inst), false);        break;      case IA32_OFFSET_opcode:        budget -= 4;        break;      case IA32_JCC_opcode: case IA32_JMP_opcode:        budget -= 6; // assume long form        break;      case IA32_LOCK_opcode:        budget -= 1;        break;      case IG_PATCH_POINT_opcode:        budget -= 6;        break;      case IA32_INT_opcode:        budget -= 2;        break;      case IA32_RET_opcode:        budget -= 3;        break;      default:        budget -= 3; // 2 bytes opcode + 1 byte modr/m        for (OPT_OperandEnumeration enum = inst.getRootOperands();             enum.hasMoreElements();) {          OPT_Operand op = enum.next();          budget -= operandCost(op, false);        }        break;      }      inst = inst.nextInstructionInCodeOrder();    }