private void interpreterCall() { if (isValid()) { // Stubs were deoptimized => reinstall. this.runtime.reinstallStubs(); } else { if (uninitializedRootNode == UNINITIALIZED) { ensureCloned(); } compilationProfile.reportInterpreterCall(); if (!isCompiling() && compilationPolicy.shouldCompile(compilationProfile, getCompilerOptions())) { compile(); } } }
public void notifyCompilationFailed(Throwable t) { if (t instanceof BailoutException && !((BailoutException) t).isPermanent()) { /* * Non permanent bailouts are expected cases. A non permanent bailout would be for * example class redefinition during code installation. As opposed to permanent * bailouts, non permanent bailouts will trigger recompilation and are not considered a * failure state. */ } else { compilationPolicy.recordCompilationFailure(t); if (TruffleCompilationExceptionsAreThrown.getValue()) { throw new OptimizationFailedException(t, this); } if (TruffleCompilationExceptionsArePrinted.getValue() || TruffleCompilationExceptionsAreFatal.getValue()) { printException(t); if (TruffleCompilationExceptionsAreFatal.getValue()) { System.exit(-1); } } } }