changeset 6395:69e94aa204b7

Merge.
author Lukas Stadler <lukas.stadler@jku.at>
date Thu, 13 Sep 2012 18:12:54 +0200
parents 466e6ceebfed (current diff) c61ce6bac1df (diff)
children 2ba1f4cdecd0
files
diffstat 3 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java	Thu Sep 13 18:12:27 2012 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java	Thu Sep 13 18:12:54 2012 +0200
@@ -279,7 +279,15 @@
         return canBeInlined;
     }
 
+    /**
+     * Returns the offset of this method into the v-table.
+     * If the holder is not initialized, returns -1
+     * @return the offset of this method into the v-table
+     */
     public int vtableEntryOffset() {
+        if (!holder.isInitialized()) {
+            return -1;
+        }
         return HotSpotGraalRuntime.getInstance().getCompilerToVM().JavaMethod_vtableEntryOffset(this);
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java	Thu Sep 13 18:12:27 2012 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java	Thu Sep 13 18:12:54 2012 +0200
@@ -254,7 +254,7 @@
                         // We use LocationNode.ANY_LOCATION for the reads that access the vtable entry and the compiled code entry
                         // as HotSpot does not guarantee they are final values.
                         int vtableEntryOffset = hsMethod.vtableEntryOffset();
-                        assert vtableEntryOffset != 0;
+                        assert vtableEntryOffset > 0;
                         SafeReadNode hub = safeReadHub(graph, receiver, StructuredGraph.INVALID_GRAPH_ID);
                         Kind wordKind = graalRuntime.getTarget().wordKind;
                         Stamp nonNullWordStamp = StampFactory.forWord(wordKind, true);
--- a/src/share/vm/graal/graalCompilerToVM.cpp	Thu Sep 13 18:12:27 2012 +0200
+++ b/src/share/vm/graal/graalCompilerToVM.cpp	Thu Sep 13 18:12:54 2012 +0200
@@ -857,6 +857,7 @@
 
   methodOop method = getMethodFromHotSpotMethod(hotspot_method);
   assert(!instanceKlass::cast(method->method_holder())->is_interface(), "vtableEntryOffset cannot be called for interface methods");
+  assert(instanceKlass::cast(method->method_holder())->is_linked(), "vtableEntryOffset cannot be called is holder is not linked");
 
   // get entry offset in words
   int vtable_entry_offset = instanceKlass::vtable_start_offset() + method->vtable_index() * vtableEntry::size();