if (s.isPEI()) return true; if (s.isStore()) return true; if (s.getNumberOfDefs() != 1) return true; if (s.isThrow()) return true; if (s.isDynamicLinkingPoint()) return true;  if (GuardedBinary.conforms(s)) return true;
switch (s.operator.opcode) { case INT_MOVE_opcode: case REF_MOVE_opcode: case MATERIALIZE_CONSTANT_opcode: case INT_ADD_opcode: case INT_SUB_opcode: case INT_MUL_opcode: case INT_NEG_opcode: case INT_SHL_opcode: case INT_SHR_opcode: case INT_USHR_opcode: case INT_AND_opcode: case INT_OR_opcode: case INT_XOR_opcode: case INT_NOT_opcode: case INT_2BYTE_opcode: case INT_2USHORT_opcode: case INT_2SHORT_opcode:  break; default: return true; }    for (Enumeration defs = s.getDefs(); defs.hasMoreElements(); ) { OPT_Operand def = (OPT_Operand)defs.nextElement(); if (VM.VerifyAssertions) VM.assert(def.isRegister()); OPT_Register r = def.asRegister().register; if (defined.contains(r)) return true; defined.add(r); }
  private boolean hasCMTaboo(OPT_BasicBlock bb) {    for (Enumeration e = bb.forwardRealInstrEnumerator();         e.hasMoreElements(); ) {      OPT_Instruction s = (OPT_Instruction)e.nextElement();      if (s.isBranch()) continue;      if (s.isPEI()) return true;      if (s.isStore()) return true;      if (s.getNumberOfDefs() != 1) return true;      if (s.isThrow()) return true;      if (s.isDynamicLinkingPoint()) return true;      // the following excludes divides      if (GuardedBinary.conforms(s)) return true;    }    return false;  }