compiledMethod.setObsolete( true ); obsoleteMethods[obsoleteMethodCount++] = cmid; }       static void snipObsoleteCompiledMethods() { if (obsoleteMethods == null) return;  int oldCount = obsoleteMethodCount; obsoleteMethodCount = 0;  for (int i = 0; i < oldCount; i++) { int currCM = obsoleteMethods[i]; if (compiledMethods[currCM].isObsolete()) { compiledMethods[currCM] = null; } else { obsoleteMethods[obsoleteMethodCount++] = currCM; compiledMethods[currCM].setObsolete(true); } } }
  static void setCompiledMethodObsolete(VM_CompiledMethod compiledMethod) {    if ( compiledMethod == null ) return;    int	cmid = compiledMethod.getId();    // Currently, we avoid setting methods of java.lang.Object obsolete.    // This is because the TIBs for arrays point to the original version    // and are not updated on recompilation.    // !!TODO: When replacing a java.lang.Object method, find arrays in JTOC    //	and update TIB to use newly recompiled method.    if ( compiledMethod.getMethod().declaringClass.isJavaLangObjectType() )      return;    if (VM.VerifyAssertions)		// Any good reason this could happen?	VM.assert( compiledMethods[ cmid ] != null );    if ( obsoleteMethods == null ) {      // This should tend not to get too big as it gets compressed as we      // snip obsollete code at GC time.      obsoleteMethods = new int[ 100 ];    }