{"record":{"id":"5e73f85d98c286a1","repo":"oracle/graal","slug":"call-to-s-should-have-been-intrinsified-by-a-s","errorCode":null,"errorMessage":"Call to %s should have been intrinsified by a %s. This is typically caused by Eclipse failing to run an annotation processor. This can usually be fixed by forcing Eclipse to rebuild the source file in which %s is declared","messagePattern":"Call to (.+?) should have been intrinsified by a (.+?)\\. This is typically caused by Eclipse failing to run an annotation processor\\. This can usually be fixed by forcing Eclipse to rebuild the source file in which (.+?) is declared","errorType":"exception","errorClass":"GraalError","httpStatus":null,"severity":"error","filePath":"compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/replacements/ReplacementsImpl.java","lineNumber":230,"sourceCode":"            // Force inlining when parsing replacements\n            return createIntrinsicInlineInfo(method, defaultBytecodeProvider);\n        } else {\n            assert inRuntimeCode() || AnnotationValueSupport.getAnnotationValue(method, NodeIntrinsic.class) == null : String.format(\"@%s method %s must only be called from within a replacement%n%s\",\n                            NodeIntrinsic.class.getSimpleName(),\n                            method.format(\"%h.%n\"), b);\n        }\n        return null;\n    }\n\n    @Override\n    public void notifyNotInlined(GraphBuilderContext b, ResolvedJavaMethod method, Invoke invoke) {\n        if (b.parsingIntrinsic()) {\n            IntrinsicContext intrinsic = b.getIntrinsic();\n            if (!intrinsic.isCallToOriginal(method)) {\n                Class<? extends GraphBuilderPlugin> pluginClass = getIntrinsifyingPlugin(method);\n                if (pluginClass != null) {\n                    String methodDesc = method.format(\"%H.%n(%p)\");\n                    throw new GraalError(\"Call to %s should have been intrinsified by a %s. \" +\n                                    \"This is typically caused by Eclipse failing to run an annotation \" +\n                                    \"processor. This can usually be fixed by forcing Eclipse to rebuild \" +\n                                    \"the source file in which %s is declared\",\n                                    methodDesc, pluginClass.getSimpleName(), methodDesc);\n                }\n                throw new GraalError(\"All non-recursive calls in the intrinsic %s must be inlined or intrinsified: found call to %s\",\n                                intrinsic.getIntrinsicMethod().format(\"%H.%n(%p)\"), method.format(\"%h.%n(%p)\"));\n            }\n        }\n    }\n\n    // This map is key'ed by a class name instead of a Class object so that\n    // it is stable across VM executions (in support of replay compilation).\n    private final EconomicMap<String, SnippetTemplateCache> snippetTemplateCache;\n\n    @SuppressWarnings(\"this-escape\")\n    public ReplacementsImpl(DebugDumpHandlersFactory debugHandlersFactory, Providers providers, BytecodeProvider bytecodeProvider, TargetDescription target) {\n        this.providers = providers.copyWith(this);","sourceCodeStart":212,"sourceCodeEnd":248,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/replacements/ReplacementsImpl.java#L212-L248","documentation":"While parsing an intrinsic's graph, every call must be inlined, intrinsified, or be a call to the original method. ReplacementsImpl.notifyNotInlined (ReplacementsImpl.java:230) found a call to a method that HAS an intrinsifying plugin (e.g., a @NodeIntrinsic-annotated method) but was not intrinsified. The classic root cause named in the message: Eclipse did not run the Graal annotation processor, so the generated plugin lookup metadata is stale.","triggerScenarios":"Compiling Graal compiler sources in Eclipse where the annotation processor did not regenerate plugin metadata after editing a file containing @NodeIntrinsic (or similar) usages; a call site inside an intrinsic to a method with a registered plugin that failed to apply.","commonSituations":"IDE-only builds after adding/renaming node intrinsics; mixed IDE + mx builds where Eclipse's output is stale; CI works but local Eclipse run fails.","solutions":["Force Eclipse to rebuild the source file that declares the intrinsified method (the message names it): Project > Clean, or touch and re-save the file","Prefer building/running via mx (mx build / mx ideinit refresh) so annotation processors always run","Verify the node intrinsic's signature matches the plugin (parameter types/counts) so the plugin actually applies"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    result = compileWithEclipseClasses();\n} catch (GraalError e) {\n    if (e.getMessage().contains(\"annotation\")) { cleanAndRebuildEclipseProject(); result = compileWithEclipseClasses(); }\n    else throw e;\n}","preventionTips":["After editing files with @NodeIntrinsic, force Project > Clean in Eclipse","Use mx build for anything you plan to run or commit; treat IDE builds as edit-time only"],"tags":["graal","intrinsics","eclipse","annotation-processing","build"],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}