findAndSetJSRCallSite(int  pred, VM_BasicBlock retBB, int otherRetCount, VM_BasicBlock basicBlocks[], boolean seenAlready[], short b2BBMap[]) { seenAlready[pred] = true; VM_BasicBlock jsrBB =  basicBlocks[pred]; jsrBB.setState(VM_BasicBlock.INJSR);
private void findAndSetJSRCallSite(int  pred, VM_BasicBlock retBB, int otherRetCount, boolean seenAlready[]) { seenAlready[pred] = true; VM_BasicBlock jsrBB =  basicBlocks[pred]; jsrBB.setState(VM_BasicBlock.INJSR);  if (basicBlocks[pred].isJSRExit() && pred != retBB.getBlockNumber()) otherRetCount++;
  findAndSetJSRCallSite(int  pred, VM_BasicBlock retBB, int otherRetCount, 			VM_BasicBlock basicBlocks[], boolean seenAlready[], 			short b2BBMap[]) {   seenAlready[pred] = true;   VM_BasicBlock jsrBB =  basicBlocks[pred];    jsrBB.setState(VM_BasicBlock.INJSR);          if (basicBlocks[pred].isJSRExit() && pred != retBB.getBlockNumber())     otherRetCount++;   if (basicBlocks[pred].isJSREntry()) {     if (otherRetCount == 0) {       // setup call site       setupJSRCallSite(basicBlocks[pred], retBB, basicBlocks, b2BBMap);        return;       }     else       otherRetCount--;   }   int[] preds = basicBlocks[pred].getPredecessors();   for( int i = 0; i < preds.length; i++) {     int pred2 = preds[i];     if (!seenAlready[pred2])       findAndSetJSRCallSite(pred2,retBB,otherRetCount, basicBlocks, seenAlready, 			     b2BBMap);   }  } // findAndSetJSRCallSite