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() { |