changeset 20871:e52678b8198f

prevent lowering MacroNodes to InvokeNodes with an invalid bci
author Doug Simon <doug.simon@oracle.com>
date Thu, 09 Apr 2015 15:36:46 +0200
parents 971b890cf5cb
children 197d955502b3
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/IdentityHashCodeNode.java graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64MathIntrinsicNode.java graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64MathSubstitutions.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java
diffstat 1 files changed, 4 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java	Thu Apr 09 15:36:13 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java	Thu Apr 09 15:36:46 2015 +0200
@@ -170,6 +170,10 @@
             InliningUtil.inline(invoke, replacementGraph, false, null);
             Debug.dump(graph(), "After inlining replacement %s", replacementGraph);
         } else {
+            if (invoke.bci() < 0) {
+                throw new GraalInternalError("%s: cannot lower to invoke with invalid BCI: %s", graph(), this);
+            }
+
             if (invoke.stateAfter() == null) {
                 ResolvedJavaMethod method = graph().method();
                 if (method.getAnnotation(MethodSubstitution.class) != null || method.getAnnotation(Snippet.class) != null) {