Merge
This commit is contained in:
commit
5f4a2405a7
@ -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) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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() {
|
|||||||
}
|
}
|
||||||
// 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 {
|
|||||||
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 @@
|
|||||||
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 {
|
|||||||
/* 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 {
|
|||||||
/* 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 @@
|
|||||||
## @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
|
|||||||
;;
|
;;
|
||||||
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
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
|
||||||
|
# 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
|
export LD_LIBRARY_PATH
|
||||||
|
|
||||||
THIS_DIR=`pwd`
|
cp ${TESTSRC}${FS}invoke.c .
|
||||||
|
|
||||||
cp ${TESTSRC}${FS}invoke.c ${THIS_DIR}
|
|
||||||
cp ${TESTSRC}${FS}T.java ${THIS_DIR}
|
|
||||||
|
|
||||||
|
# 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 $?
|
||||||
|
Loading…
x
Reference in New Issue
Block a user