< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/graphbuilderconf/InlineInvokePlugin.java

Print this page




  36  */
  37 public interface InlineInvokePlugin extends GraphBuilderPlugin {
  38 
  39     /**
  40      * Result of a {@link #shouldInlineInvoke inlining decision}.
  41      */
  42     final class InlineInfo {
  43 
  44         /**
  45          * Denotes a call site that must not be inlined and should be implemented by a node that
  46          * does not speculate on the call not raising an exception.
  47          */
  48         public static final InlineInfo DO_NOT_INLINE_WITH_EXCEPTION = new InlineInfo(null, null);
  49 
  50         /**
  51          * Denotes a call site must not be inlined and can be implemented by a node that speculates
  52          * the call will not throw an exception.
  53          */
  54         public static final InlineInfo DO_NOT_INLINE_NO_EXCEPTION = new InlineInfo(null, null);
  55 






  56         private final ResolvedJavaMethod methodToInline;
  57         private final BytecodeProvider intrinsicBytecodeProvider;
  58 
  59         public static InlineInfo createStandardInlineInfo(ResolvedJavaMethod methodToInline) {
  60             return new InlineInfo(methodToInline, null);
  61         }
  62 
  63         public static InlineInfo createIntrinsicInlineInfo(ResolvedJavaMethod methodToInline, BytecodeProvider intrinsicBytecodeProvider) {
  64             return new InlineInfo(methodToInline, intrinsicBytecodeProvider);
  65         }
  66 
  67         private InlineInfo(ResolvedJavaMethod methodToInline, BytecodeProvider intrinsicBytecodeProvider) {
  68             this.methodToInline = methodToInline;
  69             this.intrinsicBytecodeProvider = intrinsicBytecodeProvider;
  70         }
  71 
  72         /**
  73          * Returns the method to be inlined, or {@code null} if the call site must not be inlined.
  74          */
  75         public ResolvedJavaMethod getMethodToInline() {




  36  */
  37 public interface InlineInvokePlugin extends GraphBuilderPlugin {
  38 
  39     /**
  40      * Result of a {@link #shouldInlineInvoke inlining decision}.
  41      */
  42     final class InlineInfo {
  43 
  44         /**
  45          * Denotes a call site that must not be inlined and should be implemented by a node that
  46          * does not speculate on the call not raising an exception.
  47          */
  48         public static final InlineInfo DO_NOT_INLINE_WITH_EXCEPTION = new InlineInfo(null, null);
  49 
  50         /**
  51          * Denotes a call site must not be inlined and can be implemented by a node that speculates
  52          * the call will not throw an exception.
  53          */
  54         public static final InlineInfo DO_NOT_INLINE_NO_EXCEPTION = new InlineInfo(null, null);
  55 
  56         /**
  57          * Denotes a call site must not be inlined and the execution should be transferred to
  58          * interpreter in case of an exception.
  59          */
  60         public static final InlineInfo DO_NOT_INLINE_DEOPTIMIZE_ON_EXCEPTION = new InlineInfo(null, null);
  61 
  62         private final ResolvedJavaMethod methodToInline;
  63         private final BytecodeProvider intrinsicBytecodeProvider;
  64 
  65         public static InlineInfo createStandardInlineInfo(ResolvedJavaMethod methodToInline) {
  66             return new InlineInfo(methodToInline, null);
  67         }
  68 
  69         public static InlineInfo createIntrinsicInlineInfo(ResolvedJavaMethod methodToInline, BytecodeProvider intrinsicBytecodeProvider) {
  70             return new InlineInfo(methodToInline, intrinsicBytecodeProvider);
  71         }
  72 
  73         private InlineInfo(ResolvedJavaMethod methodToInline, BytecodeProvider intrinsicBytecodeProvider) {
  74             this.methodToInline = methodToInline;
  75             this.intrinsicBytecodeProvider = intrinsicBytecodeProvider;
  76         }
  77 
  78         /**
  79          * Returns the method to be inlined, or {@code null} if the call site must not be inlined.
  80          */
  81         public ResolvedJavaMethod getMethodToInline() {


< prev index next >