if ( !preloadChecked ) { preloadChecked = true;  if ( options.PRELOAD_CLASS != null ) { compilationInProgress = true; OPT_Compiler.preloadSpecialClass( options ); compilationInProgress = false; } }
  static VM_CompiledMethod compile(VM_Method method) {    VM_CompiledMethod cm;    if (!VM_Controller.enabled) {      VM_Callbacks.notifyMethodCompile(method, VM_CompilerInfo.BASELINE);      // System still early in boot process; compile with baseline compiler      cm = baselineCompile(method);      VM_ControllerMemory.incrementNumBase();    } else {      if (VM_Controller.options.optOnly()) {	if (// will only run once: don't bother optimizing	    method.isClassInitializer() || 	    // exception in progress. can't use opt compiler:             // it uses exceptions and runtime doesn't support             // multiple pending (undelivered) exceptions [--DL]	    VM_Thread.getCurrentThread().hardwareExceptionRegisters.inuse ||	    // opt compiler doesn't support compiling the JNI             // stub needed to invoke native methods	    method.isNative()) {          VM_Callbacks.notifyMethodCompile(method, VM_CompilerInfo.BASELINE);	  // compile with baseline compiler	  cm = baselineCompile(method);          VM_ControllerMemory.incrementNumBase();	} else { // compile with opt compiler          VM_Callbacks.notifyMethodCompile(method, VM_CompilerInfo.OPT);	  // Initialize an instrumentation plan.	  VM_AOSInstrumentationPlan instrumentationPlan = 	    new VM_AOSInstrumentationPlan(VM_Controller.options,					  method);	  // create a compilation plan	  OPT_CompilationPlan compPlan = 	    new OPT_CompilationPlan(method, optimizationPlan, 				    instrumentationPlan, options);	  // If we have an inline oracle, use it!	  if (offlineInlineOracle != null) {	    compPlan.setInlineOracle(offlineInlineOracle);	  }	  cm = optCompileWithFallBack(method, compPlan);	}      } else {          VM_Callbacks.notifyMethodCompile(method, VM_CompilerInfo.BASELINE);	  // compile with baseline compiler	  cm = baselineCompile(method);          VM_ControllerMemory.incrementNumBase();      }    }    return cm;  }