ScratchRegister r = getCurrentScratchRegister(symb);
ScratchRegister r = getCurrentScratchRegister(symb,s);
  private ScratchRegister getScratchRegister(OPT_Register symb,                                             OPT_Instruction s,                                             boolean beCheap) {    ScratchRegister r = getCurrentScratchRegister(symb);    if (r != null) {      // symb is currently assigned to scratch register r      if (isLegal(symb,r.scratch,s)) {        if (r.currentContents != symb) {          // we're reusing a scratch register based on the fact that symb          // shares a spill location with r.currentContents.  However,          // update the mapping information.          if (r.currentContents != null) {            if (verboseDebug) System.out.println("GSR: End symbolic interval " +                                                  r.currentContents + " "                                                  + s);            scratchMap.endSymbolicInterval(r.currentContents,s);          }           if (verboseDebug) System.out.println("GSR: Begin symbolic interval " +                                                symb + " " + r.scratch +                                                " " + s);          scratchMap.beginSymbolicInterval(symb,r.scratch,s);        }        return r;      }    }    // if we get here, either there is no current scratch assignment, or    // the current assignment is illegal.  Find a new scratch register.    ScratchRegister result = null;    if (beCheap || activeSet == null) {      result = getFirstAvailableScratchRegister(symb,s);    } else {      result = getScratchRegisterUsingIntervals(symb,s);    }    // Record that we will touch the scratch register.    result.scratch.touchRegister();     return result;  }