# HG changeset patch # User dsamersoff # Date 1397055684 0 # Node ID 1b52e5b620eee0f523ffbf3491a3dca4878a1bba # Parent 8ed1d72acb64cd88df16361c2d9f93f5fce88757# Parent 14863e9ad1af80b487bee0f638d00f8395fa977c Merge diff -r 8ed1d72acb64 -r 1b52e5b620ee hotspot/test/runtime/InitialThreadOverflow/invoke.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/runtime/InitialThreadOverflow/invoke.c Wed Apr 09 15:01:24 2014 +0000 @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#include +#include + +#include + +JavaVM* jvm; + +void * +floobydust (void *p) { + JNIEnv *env; + jclass class_id; + jmethodID method_id; + + (*jvm)->AttachCurrentThread(jvm, (void**)&env, NULL); + + class_id = (*env)->FindClass (env, "DoOverflow"); + assert (class_id); + + method_id = (*env)->GetStaticMethodID(env, class_id, "printIt", "()V"); + assert (method_id); + + (*env)->CallStaticVoidMethod(env, class_id, method_id, NULL); + + (*jvm)->DetachCurrentThread(jvm); +} + +int +main (int argc, const char** argv) { + JavaVMOption options[1]; + options[0].optionString = (char*) "-Xss320k"; + + JavaVMInitArgs vm_args; + vm_args.version = JNI_VERSION_1_2; + vm_args.ignoreUnrecognized = JNI_TRUE; + vm_args.options = options; + vm_args.nOptions = 1; + + JNIEnv* env; + jint result = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); + assert(result >= 0); + + pthread_t thr; + pthread_create(&thr, NULL, floobydust, NULL); + pthread_join(thr, NULL); + + floobydust(NULL); + + return 0; +} diff -r 8ed1d72acb64 -r 1b52e5b620ee hotspot/test/runtime/InitialThreadOverflow/invoke.cxx --- a/hotspot/test/runtime/InitialThreadOverflow/invoke.cxx Wed Apr 09 06:09:43 2014 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -#include -#include - -#include - -JavaVM* jvm; - -void * -floobydust (void *p) { - JNIEnv *env; - - jvm->AttachCurrentThread((void**)&env, NULL); - - jclass class_id = env->FindClass ("DoOverflow"); - assert (class_id); - - jmethodID method_id = env->GetStaticMethodID(class_id, "printIt", "()V"); - assert (method_id); - - env->CallStaticVoidMethod(class_id, method_id, NULL); - - jvm->DetachCurrentThread(); -} - -int -main (int argc, const char** argv) { - JavaVMOption options[1]; - options[0].optionString = (char*) "-Xss320k"; - - JavaVMInitArgs vm_args; - vm_args.version = JNI_VERSION_1_2; - vm_args.ignoreUnrecognized = JNI_TRUE; - vm_args.options = options; - vm_args.nOptions = 1; - - JNIEnv* env; - jint result = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); - assert(result >= 0); - - pthread_t thr; - pthread_create(&thr, NULL, floobydust, NULL); - pthread_join(thr, NULL); - - floobydust(NULL); - - return 0; -} diff -r 8ed1d72acb64 -r 1b52e5b620ee hotspot/test/runtime/InitialThreadOverflow/testme.sh --- a/hotspot/test/runtime/InitialThreadOverflow/testme.sh Wed Apr 09 06:09:43 2014 -0700 +++ b/hotspot/test/runtime/InitialThreadOverflow/testme.sh Wed Apr 09 15:01:24 2014 +0000 @@ -21,7 +21,6 @@ # or visit www.oracle.com if you need additional information or have any # questions. -# @ignore 8029139 # @test testme.sh # @bug 8009062 # @summary Poor performance of JNI AttachCurrentThread after fix for 7017193 @@ -44,31 +43,35 @@ exit 0 fi -gcc_cmd=`which g++` +gcc_cmd=`which gcc` if [ "x$gcc_cmd" = "x" ]; then - echo "WARNING: g++ not found. Cannot execute test." 2>&1 + echo "WARNING: gcc not found. Cannot execute test." 2>&1 exit 0; fi CFLAGS="-m${VM_BITS}" -LD_LIBRARY_PATH=.:${COMPILEJAVA}/jre/lib/${VM_CPU}/${VM_TYPE}:/usr/lib:$LD_LIBRARY_PATH +LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/${VM_CPU}/${VM_TYPE}:/usr/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH -cp ${TESTSRC}${FS}invoke.cxx . +cp ${TESTSRC}/invoke.c . # Copy the result of our @compile action: -cp ${TESTCLASSES}${FS}DoOverflow.class . +cp ${TESTCLASSES}/DoOverflow.class . -echo "Compilation flag: ${COMP_FLAG}" +echo "Architecture: ${VM_CPU}" +echo "Compilation flag: ${CFLAGS}" +echo "VM type: ${VM_TYPE}" +echo "LD_LIBRARY_PATH: ${LD_LIBRARY_PATH}" + # Note pthread may not be found thus invoke creation will fail to be created. # Check to ensure you have a /usr/lib/libpthread.so if you don't please look # for /usr/lib/`uname -m`-linux-gnu version ensure to add that path to below compilation. $gcc_cmd -DLINUX ${CFLAGS} -o invoke \ - -I${COMPILEJAVA}/include -I${COMPILEJAVA}/include/linux \ - -L${COMPILEJAVA}/jre/lib/${VM_CPU}/${VM_TYPE} \ - -ljvm -lpthread invoke.cxx + -I${TESTJAVA}/include -I${TESTJAVA}/include/linux \ + -L${TESTJAVA}/jre/lib/${VM_CPU}/${VM_TYPE} \ + -ljvm -lpthread invoke.c ./invoke exit $?