Mercurial > hg > graal-jvmci-8
changeset 22153: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);