src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/CompilationTask.java
changeset 49873 26ebfe8ce852
parent 48861 47f19ff9903c
child 50858 2d3e99a72541
equal deleted inserted replaced
49872:0798eab12791 49873:26ebfe8ce852
    20  * or visit www.oracle.com if you need additional information or have any
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    21  * questions.
    22  */
    22  */
    23 package org.graalvm.compiler.hotspot;
    23 package org.graalvm.compiler.hotspot;
    24 
    24 
       
    25 import static org.graalvm.compiler.core.CompilationWrapper.ExceptionAction.Diagnose;
    25 import static org.graalvm.compiler.core.CompilationWrapper.ExceptionAction.ExitVM;
    26 import static org.graalvm.compiler.core.CompilationWrapper.ExceptionAction.ExitVM;
       
    27 import static org.graalvm.compiler.core.GraalCompilerOptions.CompilationBailoutAction;
    26 import static org.graalvm.compiler.core.GraalCompilerOptions.CompilationFailureAction;
    28 import static org.graalvm.compiler.core.GraalCompilerOptions.CompilationFailureAction;
    27 import static org.graalvm.compiler.core.phases.HighTier.Options.Inline;
    29 import static org.graalvm.compiler.core.phases.HighTier.Options.Inline;
    28 import static org.graalvm.compiler.java.BytecodeParserOptions.InlineDuringParsing;
    30 import static org.graalvm.compiler.java.BytecodeParserOptions.InlineDuringParsing;
    29 
    31 
    30 import java.util.List;
    32 import java.util.List;
    31 
    33 
    32 import org.graalvm.collections.EconomicMap;
    34 import jdk.internal.vm.compiler.collections.EconomicMap;
    33 import org.graalvm.compiler.api.replacements.SnippetReflectionProvider;
    35 import org.graalvm.compiler.api.replacements.SnippetReflectionProvider;
    34 import org.graalvm.compiler.code.CompilationResult;
    36 import org.graalvm.compiler.code.CompilationResult;
    35 import org.graalvm.compiler.core.CompilationPrinter;
    37 import org.graalvm.compiler.core.CompilationPrinter;
    36 import org.graalvm.compiler.core.CompilationWrapper;
    38 import org.graalvm.compiler.core.CompilationWrapper;
    37 import org.graalvm.compiler.core.common.CompilationIdentifier;
    39 import org.graalvm.compiler.core.common.CompilationIdentifier;
   138              */
   140              */
   139             return HotSpotCompilationRequestResult.failure(t.toString(), false);
   141             return HotSpotCompilationRequestResult.failure(t.toString(), false);
   140         }
   142         }
   141 
   143 
   142         @Override
   144         @Override
   143         protected ExceptionAction lookupAction(OptionValues values, EnumOptionKey<ExceptionAction> actionKey) {
   145         protected ExceptionAction lookupAction(OptionValues values, EnumOptionKey<ExceptionAction> actionKey, Throwable cause) {
   144             /*
   146             // Respect current action if it has been explicitly set.
   145              * Automatically exit VM on non-bailout during bootstrap or when asserts are enabled but
   147             if (!actionKey.hasBeenSet(values)) {
   146              * respect CompilationFailureAction if it has been explicitly set.
   148                 if (actionKey == CompilationFailureAction) {
   147              */
   149                     // Automatically exit on non-bailout during bootstrap
   148             if (actionKey == CompilationFailureAction && !actionKey.hasBeenSet(values)) {
   150                     // or when assertions are enabled.
   149                 if (Assertions.assertionsEnabled() || compiler.getGraalRuntime().isBootstrapping()) {
   151                     if (Assertions.assertionsEnabled() || compiler.getGraalRuntime().isBootstrapping()) {
   150                     return ExitVM;
   152                         return ExitVM;
       
   153                     }
       
   154                 } else if (actionKey == CompilationBailoutAction && ((BailoutException) cause).isPermanent()) {
       
   155                     // Get more info for permanent bailouts during bootstrap
       
   156                     // or when assertions are enabled.
       
   157                     assert CompilationBailoutAction.getDefaultValue() == ExceptionAction.Silent;
       
   158                     if (Assertions.assertionsEnabled() || compiler.getGraalRuntime().isBootstrapping()) {
       
   159                         return Diagnose;
       
   160                     }
   151                 }
   161                 }
   152             }
   162             }
   153             return super.lookupAction(values, actionKey);
   163             return super.lookupAction(values, actionKey, cause);
   154         }
   164         }
   155 
   165 
   156         @SuppressWarnings("try")
   166         @SuppressWarnings("try")
   157         @Override
   167         @Override
   158         protected HotSpotCompilationRequestResult performCompilation(DebugContext debug) {
   168         protected HotSpotCompilationRequestResult performCompilation(DebugContext debug) {
   185             if (result != null) {
   195             if (result != null) {
   186                 return HotSpotCompilationRequestResult.success(result.getBytecodeSize() - method.getCodeSize());
   196                 return HotSpotCompilationRequestResult.success(result.getBytecodeSize() - method.getCodeSize());
   187             }
   197             }
   188             return null;
   198             return null;
   189         }
   199         }
       
   200 
   190     }
   201     }
   191 
   202 
   192     public CompilationTask(HotSpotJVMCIRuntimeProvider jvmciRuntime, HotSpotGraalCompiler compiler, HotSpotCompilationRequest request, boolean useProfilingInfo, boolean installAsDefault,
   203     public CompilationTask(HotSpotJVMCIRuntimeProvider jvmciRuntime, HotSpotGraalCompiler compiler, HotSpotCompilationRequest request, boolean useProfilingInfo, boolean installAsDefault,
   193                     OptionValues options) {
   204                     OptionValues options) {
   194         this.jvmciRuntime = jvmciRuntime;
   205         this.jvmciRuntime = jvmciRuntime;