--- a/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp Tue Jun 03 15:38:31 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp Fri Jun 06 13:43:36 2008 -0400
@@ -3643,6 +3643,7 @@
void MacroAssembler::encode_heap_oop(Register src, Register dst) {
assert (UseCompressedOops, "must be compressed");
+ verify_oop(src);
Label done;
if (src == dst) {
// optimize for frequent case src == dst
@@ -3664,12 +3665,14 @@
void MacroAssembler::encode_heap_oop_not_null(Register r) {
assert (UseCompressedOops, "must be compressed");
+ verify_oop(r);
sub(r, G6_heapbase, r);
srlx(r, LogMinObjAlignmentInBytes, r);
}
void MacroAssembler::encode_heap_oop_not_null(Register src, Register dst) {
assert (UseCompressedOops, "must be compressed");
+ verify_oop(src);
sub(src, G6_heapbase, dst);
srlx(dst, LogMinObjAlignmentInBytes, dst);
}
@@ -3682,11 +3685,13 @@
bpr(rc_nz, true, Assembler::pt, dst, done);
delayed() -> add(dst, G6_heapbase, dst); // annuled if not taken
bind(done);
+ verify_oop(dst);
}
void MacroAssembler::decode_heap_oop_not_null(Register r) {
// Do not add assert code to this unless you change vtableStubs_sparc.cpp
// pd_code_size_limit.
+ // Also do not verify_oop as this is called by verify_oop.
assert (UseCompressedOops, "must be compressed");
sllx(r, LogMinObjAlignmentInBytes, r);
add(r, G6_heapbase, r);
@@ -3695,6 +3700,7 @@
void MacroAssembler::decode_heap_oop_not_null(Register src, Register dst) {
// Do not add assert code to this unless you change vtableStubs_sparc.cpp
// pd_code_size_limit.
+ // Also do not verify_oop as this is called by verify_oop.
assert (UseCompressedOops, "must be compressed");
sllx(src, LogMinObjAlignmentInBytes, dst);
add(dst, G6_heapbase, dst);
--- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Tue Jun 03 15:38:31 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Fri Jun 06 13:43:36 2008 -0400
@@ -2720,7 +2720,8 @@
#endif /* ASSERT */
VMRegPair zero;
- zero.set2(G0->as_VMReg());
+ const Register g0 = G0; // without this we get a compiler warning (why??)
+ zero.set2(g0->as_VMReg());
int c_arg, j_arg;
--- a/hotspot/src/cpu/x86/vm/assembler_x86_64.cpp Tue Jun 03 15:38:31 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86_64.cpp Fri Jun 06 13:43:36 2008 -0400
@@ -5282,6 +5282,7 @@
assert (UseCompressedOops, "should only be used for compressed headers");
// Cannot assert, unverified entry point counts instructions (see .ad file)
// vtableStubs also counts instructions in pd_code_size_limit.
+ // Also do not verify_oop as this is called by verify_oop.
assert(Address::times_8 == LogMinObjAlignmentInBytes, "decode alg wrong");
leaq(r, Address(r12_heapbase, r, Address::times_8, 0));
}
@@ -5290,6 +5291,7 @@
assert (UseCompressedOops, "should only be used for compressed headers");
// Cannot assert, unverified entry point counts instructions (see .ad file)
// vtableStubs also counts instructions in pd_code_size_limit.
+ // Also do not verify_oop as this is called by verify_oop.
assert(Address::times_8 == LogMinObjAlignmentInBytes, "decode alg wrong");
leaq(dst, Address(r12_heapbase, src, Address::times_8, 0));
}
--- a/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp Tue Jun 03 15:38:31 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp Fri Jun 06 13:43:36 2008 -0400
@@ -233,7 +233,7 @@
assert(Rsub_klass != rcx, "rcx holds 2ndary super array length");
assert(Rsub_klass != rdi, "rdi holds 2ndary super array scan ptr");
- Label not_subtype, loop;
+ Label not_subtype, not_subtype_pop, loop;
// Profile the not-null value's klass.
profile_typecheck(rcx, Rsub_klass, rdi); // blows rcx, rdi
@@ -272,12 +272,13 @@
// and we store values in objArrays always encoded, thus we need to encode value
// before repne
if (UseCompressedOops) {
+ pushq(rax);
encode_heap_oop(rax);
repne_scanl();
// Not equal?
- jcc(Assembler::notEqual, not_subtype);
- // decode heap oop here for movq
- decode_heap_oop(rax);
+ jcc(Assembler::notEqual, not_subtype_pop);
+ // restore heap oop here for movq
+ popq(rax);
} else {
repne_scanq();
jcc(Assembler::notEqual, not_subtype);
@@ -287,9 +288,10 @@
Klass::secondary_super_cache_offset_in_bytes()), rax);
jmp(ok_is_subtype);
+ bind(not_subtype_pop);
+ // restore heap oop here for miss
+ if (UseCompressedOops) popq(rax);
bind(not_subtype);
- // decode heap oop here for miss
- if (UseCompressedOops) decode_heap_oop(rax);
profile_typecheck_failed(rcx); // blows rcx
}
--- a/hotspot/src/share/vm/classfile/classFileParser.cpp Tue Jun 03 15:38:31 2008 -0700
+++ b/hotspot/src/share/vm/classfile/classFileParser.cpp Fri Jun 06 13:43:36 2008 -0400
@@ -44,6 +44,7 @@
// Used for backward compatibility reasons:
// - to check for javac bug fixes that happened after 1.5
+// - also used as the max version when running in jdk6
#define JAVA_6_VERSION 50
@@ -3507,9 +3508,11 @@
}
bool ClassFileParser::is_supported_version(u2 major, u2 minor) {
+ u2 max_version = JDK_Version::is_gte_jdk17x_version() ?
+ JAVA_MAX_SUPPORTED_VERSION : JAVA_6_VERSION;
return (major >= JAVA_MIN_SUPPORTED_VERSION) &&
- (major <= JAVA_MAX_SUPPORTED_VERSION) &&
- ((major != JAVA_MAX_SUPPORTED_VERSION) ||
+ (major <= max_version) &&
+ ((major != max_version) ||
(minor <= JAVA_MAX_SUPPORTED_MINOR_VERSION));
}
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreterWithChecks.xml Tue Jun 03 15:38:31 2008 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreterWithChecks.xml Fri Jun 06 13:43:36 2008 -0400
@@ -1,25 +1,25 @@
<?xml version="1.0"?>
<!--
- 6opyright 2006-2008 Sun Microsystems, Inc. All Rights Reserved.
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ Copyright 1997-2000 Sun Microsystems, Inc. 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 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).
+ 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.
+ 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- CA 95054 USA or visit www.sun.com if you need additional information or
- have any questions.
+ Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ CA 95054 USA or visit www.sun.com if you need additional information or
+ have any questions.
-->
<!DOCTYPE processcode [
<!ELEMENT processcode ANY>
--- a/hotspot/src/share/vm/interpreter/bytecodeInterpreterWithChecks.xsl Tue Jun 03 15:38:31 2008 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreterWithChecks.xsl Fri Jun 06 13:43:36 2008 -0400
@@ -1,25 +1,25 @@
<?xml version="1.0"?>
<!--
- Copyright 2006-2008 Sun Microsystems, Inc. All Rights Reserved.
- DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ Copyright 1997-2000 Sun Microsystems, Inc. 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 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).
+ 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.
+ 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- CA 95054 USA or visit www.sun.com if you need additional information or
- have any questions.
+ Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ CA 95054 USA or visit www.sun.com if you need additional information or
+ have any questions.
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
--- a/hotspot/src/share/vm/runtime/java.hpp Tue Jun 03 15:38:31 2008 -0700
+++ b/hotspot/src/share/vm/runtime/java.hpp Fri Jun 06 13:43:36 2008 -0400
@@ -68,8 +68,24 @@
static bool is_jdk13x_version() { assert(is_jdk_version_initialized(), "must have been initialized"); return _jdk_version == 3; }
static bool is_jdk14x_version() { assert(is_jdk_version_initialized(), "must have been initialized"); return _jdk_version == 4; }
static bool is_jdk15x_version() { assert(is_jdk_version_initialized(), "must have been initialized"); return _jdk_version == 5; }
- static bool is_jdk16x_version() { assert(is_jdk_version_initialized(), "must have been initialized"); return _jdk_version == 6; }
- static bool is_jdk17x_version() { assert(is_jdk_version_initialized(), "must have been initialized"); return _jdk_version == 7; }
+
+ static bool is_jdk16x_version() {
+ if (is_jdk_version_initialized()) {
+ return _jdk_version == 6;
+ } else {
+ assert(is_pre_jdk16_version(), "must have been initialized");
+ return false;
+ }
+ }
+
+ static bool is_jdk17x_version() {
+ if (is_jdk_version_initialized()) {
+ return _jdk_version == 7;
+ } else {
+ assert(is_pre_jdk16_version(), "must have been initialized");
+ return false;
+ }
+ }
static bool supports_thread_park_blocker() { return _version_info.thread_park_blocker; }
@@ -85,14 +101,22 @@
}
static bool is_gte_jdk16x_version() {
// Keep the semantics of this that the version number is >= 1.6
- assert(is_jdk_version_initialized(), "Not initialized");
- return _jdk_version >= 6;
+ if (is_jdk_version_initialized()) {
+ return _jdk_version >= 6;
+ } else {
+ assert(is_pre_jdk16_version(), "Not initialized");
+ return false;
+ }
}
static bool is_gte_jdk17x_version() {
// Keep the semantics of this that the version number is >= 1.7
- assert(is_jdk_version_initialized(), "Not initialized");
- return _jdk_version >= 7;
+ if (is_jdk_version_initialized()) {
+ return _jdk_version >= 7;
+ } else {
+ assert(is_pre_jdk16_version(), "Not initialized");
+ return false;
+ }
}
static bool is_jdk_version_initialized() {
--- a/hotspot/test/compiler/6659207/Test.java Tue Jun 03 15:38:31 2008 -0700
+++ b/hotspot/test/compiler/6659207/Test.java Fri Jun 06 13:43:36 2008 -0400
@@ -1,23 +1,24 @@
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- *
+ * Copyright 1997-2002 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*
*/
--- a/hotspot/test/compiler/6661247/Test.java Tue Jun 03 15:38:31 2008 -0700
+++ b/hotspot/test/compiler/6661247/Test.java Fri Jun 06 13:43:36 2008 -0400
@@ -1,23 +1,24 @@
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- *
+ * Copyright 1997-2002 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*
*/
--- a/hotspot/test/compiler/6663621/IVTest.java Tue Jun 03 15:38:31 2008 -0700
+++ b/hotspot/test/compiler/6663621/IVTest.java Fri Jun 06 13:43:36 2008 -0400
@@ -1,23 +1,24 @@
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- *
+ * Copyright 1997-2002 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
*
*/