src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/CompilationTask.java
changeset 54204 55c262f4f5a1
parent 54084 84f10bbf993f
child 54328 37648a9c4a6a
equal deleted inserted replaced
54203:18547cad9ec6 54204:55c262f4f5a1
    24 
    24 
    25 package org.graalvm.compiler.hotspot;
    25 package org.graalvm.compiler.hotspot;
    26 
    26 
    27 import static org.graalvm.compiler.core.CompilationWrapper.ExceptionAction.Diagnose;
    27 import static org.graalvm.compiler.core.CompilationWrapper.ExceptionAction.Diagnose;
    28 import static org.graalvm.compiler.core.CompilationWrapper.ExceptionAction.ExitVM;
    28 import static org.graalvm.compiler.core.CompilationWrapper.ExceptionAction.ExitVM;
    29 import static org.graalvm.compiler.core.GraalCompilerOptions.CompilationBailoutAction;
    29 import static org.graalvm.compiler.core.GraalCompilerOptions.CompilationBailoutAsFailure;
    30 import static org.graalvm.compiler.core.GraalCompilerOptions.CompilationFailureAction;
    30 import static org.graalvm.compiler.core.GraalCompilerOptions.CompilationFailureAction;
    31 import static org.graalvm.compiler.core.phases.HighTier.Options.Inline;
    31 import static org.graalvm.compiler.core.phases.HighTier.Options.Inline;
    32 import static org.graalvm.compiler.java.BytecodeParserOptions.InlineDuringParsing;
    32 import static org.graalvm.compiler.java.BytecodeParserOptions.InlineDuringParsing;
    33 
    33 
    34 import java.io.PrintStream;
    34 import java.io.PrintStream;
    45 import org.graalvm.compiler.debug.DebugCloseable;
    45 import org.graalvm.compiler.debug.DebugCloseable;
    46 import org.graalvm.compiler.debug.DebugContext;
    46 import org.graalvm.compiler.debug.DebugContext;
    47 import org.graalvm.compiler.debug.DebugDumpScope;
    47 import org.graalvm.compiler.debug.DebugDumpScope;
    48 import org.graalvm.compiler.debug.GraalError;
    48 import org.graalvm.compiler.debug.GraalError;
    49 import org.graalvm.compiler.debug.TimerKey;
    49 import org.graalvm.compiler.debug.TimerKey;
    50 import org.graalvm.compiler.options.EnumOptionKey;
       
    51 import org.graalvm.compiler.options.OptionKey;
    50 import org.graalvm.compiler.options.OptionKey;
    52 import org.graalvm.compiler.options.OptionValues;
    51 import org.graalvm.compiler.options.OptionValues;
    53 import org.graalvm.compiler.printer.GraalDebugHandlersFactory;
    52 import org.graalvm.compiler.printer.GraalDebugHandlersFactory;
    54 
    53 
    55 import jdk.vm.ci.code.BailoutException;
    54 import jdk.vm.ci.code.BailoutException;
   143              */
   142              */
   144             return HotSpotCompilationRequestResult.failure(t.toString(), false);
   143             return HotSpotCompilationRequestResult.failure(t.toString(), false);
   145         }
   144         }
   146 
   145 
   147         @Override
   146         @Override
   148         protected ExceptionAction lookupAction(OptionValues values, EnumOptionKey<ExceptionAction> actionKey, Throwable cause) {
   147         protected ExceptionAction lookupAction(OptionValues values, Throwable cause) {
       
   148             if (cause instanceof BailoutException) {
       
   149                 BailoutException bailout = (BailoutException) cause;
       
   150                 if (bailout.isPermanent()) {
       
   151                     // Respect current action if it has been explicitly set.
       
   152                     if (!CompilationBailoutAsFailure.hasBeenSet(values)) {
       
   153                         // Get more info for permanent bailouts during bootstrap
       
   154                         // or when assertions are enabled.
       
   155                         if (Assertions.assertionsEnabled() || compiler.getGraalRuntime().isBootstrapping()) {
       
   156                             return Diagnose;
       
   157                         }
       
   158 
       
   159                     }
       
   160                 }
       
   161                 if (!CompilationBailoutAsFailure.getValue(values)) {
       
   162                     return super.lookupAction(values, cause);
       
   163                 }
       
   164             }
       
   165 
   149             // Respect current action if it has been explicitly set.
   166             // Respect current action if it has been explicitly set.
   150             if (!actionKey.hasBeenSet(values)) {
   167             if (!CompilationFailureAction.hasBeenSet(values)) {
   151                 if (actionKey == CompilationFailureAction) {
   168                 // Automatically exit on failure during bootstrap
   152                     // Automatically exit on non-bailout during bootstrap
   169                 // or when assertions are enabled.
   153                     // or when assertions are enabled.
   170                 if (Assertions.assertionsEnabled() || compiler.getGraalRuntime().isBootstrapping()) {
   154                     if (Assertions.assertionsEnabled() || compiler.getGraalRuntime().isBootstrapping()) {
   171                     return ExitVM;
   155                         return ExitVM;
   172                 }
   156                     }
   173             }
   157                 } else if (actionKey == CompilationBailoutAction && ((BailoutException) cause).isPermanent()) {
   174             return super.lookupAction(values, cause);
   158                     // Get more info for permanent bailouts during bootstrap
       
   159                     // or when assertions are enabled.
       
   160                     assert CompilationBailoutAction.getDefaultValue() == ExceptionAction.Silent;
       
   161                     if (Assertions.assertionsEnabled() || compiler.getGraalRuntime().isBootstrapping()) {
       
   162                         return Diagnose;
       
   163                     }
       
   164                 }
       
   165             }
       
   166             return super.lookupAction(values, actionKey, cause);
       
   167         }
   175         }
   168 
   176 
   169         @SuppressWarnings("try")
   177         @SuppressWarnings("try")
   170         @Override
   178         @Override
   171         protected HotSpotCompilationRequestResult performCompilation(DebugContext debug) {
   179         protected HotSpotCompilationRequestResult performCompilation(DebugContext debug) {