changeset 22157:00844f943607

Stronger error for vtable out of range
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Mon, 06 Jul 2015 23:06:41 -0700
parents 627188a01c4a
children 4f56b2984531
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotResolvedJavaMethodImpl.java
diffstat 2 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java	Mon Jul 06 12:46:41 2015 -0700
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java	Mon Jul 06 23:06:41 2015 -0700
@@ -22,6 +22,7 @@
  */
 package com.oracle.graal.nodes.extended;
 
+import jdk.internal.jvmci.common.*;
 import jdk.internal.jvmci.meta.*;
 import jdk.internal.jvmci.meta.Assumptions.*;
 
@@ -55,7 +56,9 @@
         this.method = method;
         assert method.isConcrete() : "Cannot load abstract method from a hub";
         assert method.hasReceiver() : "Cannot load a static method from a hub";
-        assert method.isInVirtualMethodTable(receiverType);
+        if (!method.isInVirtualMethodTable(receiverType)) {
+            throw new JVMCIError("%s does not have a vtable entry in type %s", method, receiverType);
+        }
     }
 
     @Override
--- a/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotResolvedJavaMethodImpl.java	Mon Jul 06 12:46:41 2015 -0700
+++ b/jvmci/jdk.internal.jvmci.hotspot/src/jdk/internal/jvmci/hotspot/HotSpotResolvedJavaMethodImpl.java	Mon Jul 06 23:06:41 2015 -0700
@@ -611,7 +611,7 @@
      */
     public int vtableEntryOffset(ResolvedJavaType resolved) {
         if (!isInVirtualMethodTable(resolved)) {
-            throw new JVMCIError("%s does not have a vtable entry", this);
+            throw new JVMCIError("%s does not have a vtable entry in type %s", this, resolved);
         }
         HotSpotVMConfig config = runtime().getConfig();
         final int vtableIndex = getVtableIndex((HotSpotResolvedObjectTypeImpl) resolved);