if (preEx) {  if (OPT_ClassLoadingDependencyManager.TRACE || OPT_ClassLoadingDependencyManager.DEBUG) { VM_Class.OptCLDepManager.report("PREEX_INLINE: Inlined " + callee + " into " + caller + "\n"); } VM_Class.OptCLDepManager.addNotOverriddenDependency(callee, state.getCompiledMethod()); return OPT_InlineDecision.YES(callee, "PREEX_INLINE passed size checks"); } else if (opts.GUARDED_INLINE && isCurrentlyFinal(callee, !opts.guardWithClassTest())) { OPT_InlineDecision YES = OPT_InlineDecision.guardedYES(callee, chooseGuard(caller, callee, callee, state, true), "static guarded inline passsed size checks");  if (opts.OSR_GUARDED_INLINING && OPT_Compiler.getAppStarted() && (VM_Controller.options != null) && VM_Controller.options.ENABLE_RECOMPILATION) {  YES.setOSRTestFailed(); }  return YES; } return OPT_InlineDecision.NO(callee, "non-final virtual method"); } else { return OPT_InlineDecision.YES(callee, "Non-guarded passed size checks");
  protected OPT_InlineDecision shouldInlineInternal(VM_Method caller, 						    VM_Method callee, 						    OPT_CompilationState state, 						    int inlinedSizeEstimate) {    // Don't allow the static inline oracle to inline recursive calls.    // It isn't smart enough to do this effectively.    OPT_InlineSequence seq = state.getSequence();    if (seq.containsMethod(callee)) {      return OPT_InlineDecision.NO("recursive call");    }    OPT_Options opts = state.getOptions();    // more or less figure out the guard situation early -- impacts size estimate.    boolean needsGuard = !state.getHasPreciseTarget() && needsGuard(callee);    boolean preEx =       needsGuard && state.getIsExtant() && opts.PREEX_INLINE && isCurrentlyFinal(callee, true);        // See if inlining action passes simple size heuristics    int cost = inliningActionCost(inlinedSizeEstimate, needsGuard, preEx, opts);    OPT_InlineDecision sizeCheck = sizeHeuristics(caller, callee, state, cost);    if (sizeCheck != null) return sizeCheck;    // Ok, the size looks good, attempt to do it.    if (needsGuard) {      if (isForbiddenSpeculation(state.getRootMethod(), callee)) {	return OPT_InlineDecision.NO("Forbidden speculation");      }      if (preEx) {	if (OPT_ClassLoadingDependencyManager.TRACE || 	    OPT_ClassLoadingDependencyManager.DEBUG) {	  VM_Class.OptCLDepManager.report("PREEX_INLINE: Inlined "					  + callee + " into " + caller + "\n");	}	VM_Class.OptCLDepManager.addNotOverriddenDependency(callee, 							    state.getCompiledMethod());	return OPT_InlineDecision.YES(callee, "PREEX_INLINE passed size checks");      } else if (opts.GUARDED_INLINE && isCurrentlyFinal(callee, !opts.guardWithClassTest())) {	OPT_InlineDecision YES = OPT_InlineDecision.guardedYES(callee, 							       chooseGuard(caller, callee, callee, state, true), 							       "static guarded inline passsed size checks");	//-#if RVM_WITH_OSR        if (opts.OSR_GUARDED_INLINING &&             OPT_Compiler.getAppStarted() &&	    (VM_Controller.options != null) &&	    VM_Controller.options.ENABLE_RECOMPILATION) {	  // note that we will OSR the failed case.	  YES.setOSRTestFailed();        }	//-#endif	return YES;      }      return OPT_InlineDecision.NO(callee, "non-final virtual method");    } else {      return OPT_InlineDecision.YES(callee, "Non-guarded passed size checks");    }  }