changeset 23282:4ba737504681

Fix bug in error reporting for generated invocation plugins
author Christian Wimmer <christian.wimmer@oracle.com>
date Fri, 08 Jan 2016 17:44:37 -0800
parents a886e9dc3a47
children c98de39fd944
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/graphbuilderconf/GeneratedInvocationPlugin.java
diffstat 1 files changed, 15 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/graphbuilderconf/GeneratedInvocationPlugin.java	Fri Jan 08 13:12:43 2016 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/graphbuilderconf/GeneratedInvocationPlugin.java	Fri Jan 08 17:44:37 2016 -0800
@@ -22,6 +22,10 @@
  */
 package com.oracle.graal.nodes.graphbuilderconf;
 
+import java.lang.reflect.Method;
+
+import jdk.vm.ci.common.JVMCIError;
+import jdk.vm.ci.meta.MetaAccessProvider;
 import jdk.vm.ci.meta.ResolvedJavaMethod;
 
 import com.oracle.graal.nodes.ValueNode;
@@ -29,4 +33,15 @@
 public abstract class GeneratedInvocationPlugin implements InvocationPlugin {
 
     public abstract boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] args);
+
+    @Override
+    public StackTraceElement getApplySourceLocation(MetaAccessProvider metaAccess) {
+        Class<?> c = getClass();
+        for (Method m : c.getDeclaredMethods()) {
+            if (m.getName().equals("execute")) {
+                return metaAccess.lookupJavaMethod(m).asStackTraceElement(0);
+            }
+        }
+        throw new JVMCIError("could not find method named \"execute\" in " + c.getName());
+    }
 }