if (VM.VerifyAssertions) VM.assert (!defs.hasMoreElements());
if (VM.VerifyAssertions) VM._assert (!defs.hasMoreElements());
  OPT_Instruction definingInstruction (OPT_Operand op) {    if (op instanceof OPT_HeapOperand) {      OPT_HeapOperand hop = (OPT_HeapOperand)op;      OPT_HeapVariable H = hop.value;      OPT_HeapOperand defiOp = ssad.getUniqueDef(H);      // Variable may be defined by caller, so depends on method entry      if (defiOp == null || defiOp.instruction == null) {	return  ir.firstInstructionInCodeOrder();      }       else {	//VM.sysWrite ("def of "+op+" is "+defiOp.instruction+"\n");	return  defiOp.instruction;      }    }     else if (op instanceof OPT_RegisterOperand) {      OPT_Register reg = ((OPT_RegisterOperand)op).register;      OPT_RegisterOperandEnumeration defs = OPT_DefUse.defs(reg);      if (!defs.hasMoreElements()) {          // params have no def	return  ir.firstInstructionInCodeOrder();      }       else {	OPT_Instruction def = defs.next().instruction;	// we are in SSA, so there is at most one definition.	if (VM.VerifyAssertions) VM.assert (!defs.hasMoreElements());	//if (defs.hasMoreElements()) {	//  VM.sysWrite("GCP: multiple defs: " + reg + "\n");	//  return  null;	//}	return  def;      }    }     else {                    // some constant      return  ir.firstInstructionInCodeOrder();    }  }