# HG changeset patch # User Thomas Wuerthinger # Date 1320506096 -3600 # Node ID e82da3a1bbc975013dd51f523c4fe3f7795cbc89 # Parent b3176fb1934e7735048f3365420f432d1833049f Fix crash in branch prediction if there's no current environment. diff -r b3176fb1934e -r e82da3a1bbc9 runfilter.sh --- 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 diff -r b3176fb1934e -r e82da3a1bbc9 src/share/vm/graal/graalVMEntries.cpp --- 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(); }