private boolean isCircularNoSideEffect(int regV,BitSet set){
  if ((set != null) && set.get(regV)) {
    return true;
  }
  for (  SsaInsn use : useList[regV]) {
    if (hasSideEffect(use)) {
      return false;
    }
  }
  if (set == null) {
    set=new BitSet(regCount);
  }
  set.set(regV);
  for (  SsaInsn use : useList[regV]) {
    RegisterSpec result=use.getResult();
    if (result == null || !isCircularNoSideEffect(result.getReg(),set)) {
      return false;
    }
  }
  return true;
}

private boolean isCircularNoSideEffect ( int regV , BitSet set ) { if ( ( set != null ) && set . get ( regV ) ) { return true ; } for ( SsaInsn use : useList [ regV ] ) { if ( hasSideEffect ( use ) ) { return false ; } } if ( set == null ) { set = new BitSet ( regCount ) ; } set . set ( regV ) ; for ( SsaInsn use : useList [ regV ] ) { RegisterSpec result = use . getResult ( ) ; if ( result == null || ! isCircularNoSideEffect ( result . getReg ( ) , set ) ) { return false ; } } return true ; }
returns true if the only uses of this register form a circle of operations with no side effects .
