提交 b60e593a 编写于 作者: C coleenp

Merge

...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
#define JAVA_CLASSFILE_MAGIC 0xCAFEBABE #define JAVA_CLASSFILE_MAGIC 0xCAFEBABE
#define JAVA_MIN_SUPPORTED_VERSION 45 #define JAVA_MIN_SUPPORTED_VERSION 45
#define JAVA_MAX_SUPPORTED_VERSION 51 #define JAVA_MAX_SUPPORTED_VERSION 52
#define JAVA_MAX_SUPPORTED_MINOR_VERSION 0 #define JAVA_MAX_SUPPORTED_MINOR_VERSION 0
// Used for two backward compatibility reasons: // Used for two backward compatibility reasons:
......
...@@ -413,8 +413,7 @@ char* java_lang_String::as_utf8_string(oop java_string, int start, int len) { ...@@ -413,8 +413,7 @@ char* java_lang_String::as_utf8_string(oop java_string, int start, int len) {
} }
bool java_lang_String::equals(oop java_string, jchar* chars, int len) { bool java_lang_String::equals(oop java_string, jchar* chars, int len) {
assert(SharedSkipVerify || assert(java_string->klass() == SystemDictionary::String_klass(),
java_string->klass() == SystemDictionary::String_klass(),
"must be java_string"); "must be java_string");
typeArrayOop value = java_lang_String::value(java_string); typeArrayOop value = java_lang_String::value(java_string);
int offset = java_lang_String::offset(java_string); int offset = java_lang_String::offset(java_string);
......
...@@ -1268,10 +1268,6 @@ void Universe::print_heap_after_gc(outputStream* st, bool ignore_extended) { ...@@ -1268,10 +1268,6 @@ void Universe::print_heap_after_gc(outputStream* st, bool ignore_extended) {
} }
void Universe::verify(bool silent, VerifyOption option) { void Universe::verify(bool silent, VerifyOption option) {
if (SharedSkipVerify) {
return;
}
// The use of _verify_in_progress is a temporary work around for // The use of _verify_in_progress is a temporary work around for
// 6320749. Don't bother with a creating a class to set and clear // 6320749. Don't bother with a creating a class to set and clear
// it since it is only used in this method and the control flow is // it since it is only used in this method and the control flow is
......
...@@ -356,12 +356,11 @@ void Klass::set_next_sibling(Klass* s) { ...@@ -356,12 +356,11 @@ void Klass::set_next_sibling(Klass* s) {
} }
void Klass::append_to_sibling_list() { void Klass::append_to_sibling_list() {
debug_only(if (!SharedSkipVerify) verify();) debug_only(verify();)
// add ourselves to superklass' subklass list // add ourselves to superklass' subklass list
InstanceKlass* super = superklass(); InstanceKlass* super = superklass();
if (super == NULL) return; // special case: class Object if (super == NULL) return; // special case: class Object
assert(SharedSkipVerify || assert((!super->is_interface() // interfaces cannot be supers
(!super->is_interface() // interfaces cannot be supers
&& (super->superklass() == NULL || !is_interface())), && (super->superklass() == NULL || !is_interface())),
"an interface can only be a subklass of Object"); "an interface can only be a subklass of Object");
Klass* prev_first_subklass = super->subklass_oop(); Klass* prev_first_subklass = super->subklass_oop();
...@@ -371,7 +370,7 @@ void Klass::append_to_sibling_list() { ...@@ -371,7 +370,7 @@ void Klass::append_to_sibling_list() {
} }
// make ourselves the superklass' first subklass // make ourselves the superklass' first subklass
super->set_subklass(this); super->set_subklass(this);
debug_only(if (!SharedSkipVerify) verify();) debug_only(verify();)
} }
void Klass::remove_from_sibling_list() { void Klass::remove_from_sibling_list() {
......
...@@ -3539,10 +3539,6 @@ class CommandLineFlags { ...@@ -3539,10 +3539,6 @@ class CommandLineFlags {
product(uintx, SharedDummyBlockSize, 0, \ product(uintx, SharedDummyBlockSize, 0, \
"Size of dummy block used to shift heap addresses (in bytes)") \ "Size of dummy block used to shift heap addresses (in bytes)") \
\ \
diagnostic(bool, SharedSkipVerify, false, \
"Skip assert() and verify() which page-in unwanted shared " \
"objects. ") \
\
diagnostic(bool, EnableInvokeDynamic, true, \ diagnostic(bool, EnableInvokeDynamic, true, \
"support JSR 292 (method handles, invokedynamic, " \ "support JSR 292 (method handles, invokedynamic, " \
"anonymous classes") \ "anonymous classes") \
......
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
oop* HandleArea::allocate_handle(oop obj) { oop* HandleArea::allocate_handle(oop obj) {
assert(_handle_mark_nesting > 1, "memory leak: allocating handle outside HandleMark"); assert(_handle_mark_nesting > 1, "memory leak: allocating handle outside HandleMark");
assert(_no_handle_mark_nesting == 0, "allocating handle inside NoHandleMark"); assert(_no_handle_mark_nesting == 0, "allocating handle inside NoHandleMark");
assert(SharedSkipVerify || obj->is_oop(), "sanity check"); assert(obj->is_oop(), "sanity check");
return real_allocate_handle(obj); return real_allocate_handle(obj);
} }
......
...@@ -110,11 +110,11 @@ class Handle VALUE_OBJ_CLASS_SPEC { ...@@ -110,11 +110,11 @@ class Handle VALUE_OBJ_CLASS_SPEC {
/* Constructors */ \ /* Constructors */ \
type##Handle () : Handle() {} \ type##Handle () : Handle() {} \
type##Handle (type##Oop obj) : Handle((oop)obj) { \ type##Handle (type##Oop obj) : Handle((oop)obj) { \
assert(SharedSkipVerify || is_null() || ((oop)obj)->is_a(), \ assert(is_null() || ((oop)obj)->is_a(), \
"illegal type"); \ "illegal type"); \
} \ } \
type##Handle (Thread* thread, type##Oop obj) : Handle(thread, (oop)obj) { \ type##Handle (Thread* thread, type##Oop obj) : Handle(thread, (oop)obj) { \
assert(SharedSkipVerify || is_null() || ((oop)obj)->is_a(), "illegal type"); \ assert(is_null() || ((oop)obj)->is_a(), "illegal type"); \
} \ } \
\ \
/* Operators for ease of use */ \ /* Operators for ease of use */ \
...@@ -201,11 +201,11 @@ class instanceKlassHandle : public KlassHandle { ...@@ -201,11 +201,11 @@ class instanceKlassHandle : public KlassHandle {
/* Constructors */ /* Constructors */
instanceKlassHandle () : KlassHandle() {} instanceKlassHandle () : KlassHandle() {}
instanceKlassHandle (const Klass* k) : KlassHandle(k) { instanceKlassHandle (const Klass* k) : KlassHandle(k) {
assert(SharedSkipVerify || k == NULL || k->oop_is_instance(), assert(k == NULL || k->oop_is_instance(),
"illegal type"); "illegal type");
} }
instanceKlassHandle (Thread* thread, const Klass* k) : KlassHandle(thread, k) { instanceKlassHandle (Thread* thread, const Klass* k) : KlassHandle(thread, k) {
assert(SharedSkipVerify || k == NULL || k->oop_is_instance(), assert(k == NULL || k->oop_is_instance(),
"illegal type"); "illegal type");
} }
/* Access to klass part */ /* Access to klass part */
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
## @test Test6929067.sh ## @test Test6929067.sh
## @bug 6929067 ## @bug 6929067
## @summary Stack guard pages should be removed when thread is detached ## @summary Stack guard pages should be removed when thread is detached
## @compile T.java
## @run shell Test6929067.sh ## @run shell Test6929067.sh
## ##
...@@ -33,31 +34,97 @@ case "$OS" in ...@@ -33,31 +34,97 @@ case "$OS" in
;; ;;
esac esac
# Choose arch: i386 or amd64 (test is Linux-specific) ${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -Xinternalversion > vm_version.out 2>&1
# Bitness:
# Cannot simply look at TESTVMOPTS as -d64 is not # Cannot simply look at TESTVMOPTS as -d64 is not
# passed if there is only a 64-bit JVM available. # passed if there is only a 64-bit JVM available.
${TESTJAVA}/bin/java ${TESTVMOPTS} -version 2>1 | grep "64-Bit" >/dev/null grep "64-Bit" vm_version.out > ${NULL}
if [ "$?" = "0" ] if [ "$?" = "0" ]
then then
ARCH=amd64 COMP_FLAG="-m64"
else else
ARCH=i386 COMP_FLAG="-m32"
fi fi
LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/${ARCH}/client:/usr/openwin/lib:/usr/dt/lib:/usr/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
THIS_DIR=`pwd` # Architecture:
# Translate uname output to JVM directory name, but permit testing
# 32-bit x86 on an x64 platform.
ARCH=`uname -m`
case "$ARCH" in
x86_64)
if [ "$COMP_FLAG" = "-m32" ]; then
ARCH=i386
else
ARCH=amd64
fi
;;
ppc64)
if [ "$COMP_FLAG" = "-m32" ]; then
ARCH=ppc
else
ARCH=ppc64
fi
;;
sparc64)
if [ "$COMP_FLAG" = "-m32" ]; then
ARCH=sparc
else
ARCH=sparc64
fi
;;
arm*)
# 32-bit ARM machine: compiler may not recognise -m32
COMP_FLAG=""
ARCH=arm
;;
aarch64)
# 64-bit arm machine, could be testing 32 or 64-bit:
if [ "$COMP_FLAG" = "-m32" ]; then
ARCH=arm
else
ARCH=aarch64
fi
;;
i586)
ARCH=i386
;;
i686)
ARCH=i386
;;
# Assuming other ARCH values need no translation
esac
cp ${TESTSRC}${FS}invoke.c ${THIS_DIR}
cp ${TESTSRC}${FS}T.java ${THIS_DIR}
# VM type: need to know server or client
VMTYPE=client
grep Server vm_version.out > ${NULL}
if [ "$?" = "0" ]
then
VMTYPE=server
fi
LD_LIBRARY_PATH=.:${TESTJAVA}/jre/lib/${ARCH}/${VMTYPE}:/usr/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
cp ${TESTSRC}${FS}invoke.c .
# Copy the result of our @compile action:
cp ${TESTCLASSES}${FS}T.class .
${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -fullversion ${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -fullversion
${TESTJAVA}${FS}bin${FS}javac T.java echo "Architecture: ${ARCH}"
echo "Compilation flag: ${COMP_FLAG}"
echo "VM type: ${VMTYPE}"
gcc -DLINUX ${COMP_FLAG} -o invoke \
-I${TESTJAVA}/include -I${TESTJAVA}/include/linux \
-L${TESTJAVA}/jre/lib/${ARCH}/${VMTYPE} \
-ljvm -lpthread invoke.c
gcc -o invoke -I${TESTJAVA}/include -I${TESTJAVA}/include/linux invoke.c ${TESTJAVA}/jre/lib/${ARCH}/client/libjvm.so
./invoke ./invoke
exit $? exit $?
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册