changeset 3618:e82da3a1bbc9

Fix crash in branch prediction if there's no current environment.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Sat, 05 Nov 2011 16:14:56 +0100
parents b3176fb1934e
children 75e92277ad05
files runfilter.sh src/share/vm/graal/graalVMEntries.cpp
diffstat 2 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/runfilter.sh	Thu Nov 03 05:23:03 2011 +0100
+++ b/runfilter.sh	Sat Nov 05 16:14:56 2011 +0100
@@ -14,4 +14,6 @@
 FILTER=$1
 shift 1
 TESTDIR=${MAXINE}/com.oracle.max.vm/test
-${JDK7}/bin/java -graal -ea -esa -Xcomp -G:Plot -XX:+PrintCompilation -XX:CompileOnly=jtt -Xbootclasspath/p:"${MAXINE}/com.oracle.max.vm/bin" -Xbootclasspath/p:"${MAXINE}/com.oracle.max.base/bin" $@ test.com.sun.max.vm.compiler.JavaTester -filter=${FILTER} -verbose=1 -gen-run-scheme=false -run-scheme-package=all $@ ${TESTDIR}/jtt/bytecode ${TESTDIR}/jtt/except ${TESTDIR}/jtt/hotpath ${TESTDIR}/jtt/jdk ${TESTDIR}/jtt/lang ${TESTDIR}/jtt/loop ${TESTDIR}/jtt/micro ${TESTDIR}/jtt/optimize ${TESTDIR}/jtt/reflect ${TESTDIR}/jtt/threads ${TESTDIR}/jtt/reflect ${TESTDIR}/jtt/hotspot
+COMMAND="${JDK7}/bin/java -graal -ea -esa -Xcomp -G:Plot -XX:+PrintCompilation -XX:CompileOnly=jtt -Xbootclasspath/p:"${MAXINE}/com.oracle.max.vm/bin" -Xbootclasspath/p:"${MAXINE}/com.oracle.max.base/bin" $@ test.com.sun.max.vm.compiler.JavaTester -filter=${FILTER} -verbose=1 -gen-run-scheme=false -run-scheme-package=all $@ ${TESTDIR}/jtt/bytecode ${TESTDIR}/jtt/except ${TESTDIR}/jtt/hotpath ${TESTDIR}/jtt/jdk ${TESTDIR}/jtt/lang ${TESTDIR}/jtt/loop ${TESTDIR}/jtt/micro ${TESTDIR}/jtt/optimize ${TESTDIR}/jtt/reflect ${TESTDIR}/jtt/threads ${TESTDIR}/jtt/reflect ${TESTDIR}/jtt/hotspot"
+echo $COMMAND
+$COMMAND
--- a/src/share/vm/graal/graalVMEntries.cpp	Thu Nov 03 05:23:03 2011 +0100
+++ b/src/share/vm/graal/graalVMEntries.cpp	Sat Nov 05 16:14:56 2011 +0100
@@ -333,9 +333,16 @@
   ciMethod* cimethod;
   {
     VM_ENTRY_MARK;
+    assert(hotspot_method != NULL, "must not be null");
     methodOop method = getMethodFromHotSpotMethod(hotspot_method);
+    assert(method != NULL, "method not found");
+    if (CURRENT_ENV == NULL) {
+      return -1;
+    }
+    assert(CURRENT_ENV != NULL, "current environment must be present");
     cimethod = (ciMethod*)CURRENT_ENV->get_object(method);
   }
+  assert(cimethod != NULL, "cimethod not found");
   method_data = cimethod->method_data();
 
   jfloat probability = -1;
@@ -774,6 +781,7 @@
 JNIEXPORT jboolean JNICALL Java_com_oracle_graal_hotspot_VMEntries_RiType_1isInitialized(JNIEnv *, jobject, jobject hotspot_klass) {
   TRACE_graal_3("VMEntries::RiType_isInitialized");
   klassOop klass = java_lang_Class::as_klassOop(HotSpotTypeResolved::javaMirror(hotspot_klass));
+  assert(klass != NULL, "method must not be called for primitive types");
   return instanceKlass::cast(klass)->is_initialized();
 }