--- a/.hgtags Mon May 27 12:58:42 2013 +0200
+++ b/.hgtags Fri May 31 09:55:35 2013 +0200
@@ -212,3 +212,4 @@
e517701a4d0e25ae9c7945bca6e1762a8c5d8aa6 jdk8-b88
4dec41b3c5e3bb616f0c6f15830d940905aa5d16 jdk8-b89
f09ab0c416185e3cba371e81bcb6a16060c90f44 jdk8-b90
+80b6c3172dc2cfceb022411292d290a967f9c728 jdk8-b91
--- a/.hgtags-top-repo Mon May 27 12:58:42 2013 +0200
+++ b/.hgtags-top-repo Fri May 31 09:55:35 2013 +0200
@@ -212,3 +212,4 @@
e1a929afcfc492470d50be0b6b0e8dc77d3760b9 jdk8-b88
892a0196d10c67f3a12f0eefb0bb536e423d8868 jdk8-b89
69b773a221b956a3386933ecdbfeccee0edeac47 jdk8-b90
+cb51fb4789ac0b8be4056482077ddfb8f3bd3805 jdk8-b91
--- a/common/autoconf/basics.m4 Mon May 27 12:58:42 2013 +0200
+++ b/common/autoconf/basics.m4 Fri May 31 09:55:35 2013 +0200
@@ -23,14 +23,23 @@
# questions.
#
+# Test if $1 is a valid argument to $3 (often is $JAVA passed as $3)
+# If so, then append $1 to $2\
+# Also set JVM_ARG_OK to true/false depending on outcome.
AC_DEFUN([ADD_JVM_ARG_IF_OK],
[
- # Test if $1 is a valid argument to $3 (often is $JAVA passed as $3)
- # If so, then append $1 to $2
- FOUND_WARN=`$3 $1 -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$3 $1 -version 2>&1 | grep " version \""`
+ $ECHO "Check if jvm arg is ok: $1" >&AS_MESSAGE_LOG_FD
+ $ECHO "Command: $3 $1 -version" >&AS_MESSAGE_LOG_FD
+ OUTPUT=`$3 $1 -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
$2="[$]$2 $1"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&AS_MESSAGE_LOG_FD
+ $ECHO "$OUTPUT" >&AS_MESSAGE_LOG_FD
+ JVM_ARG_OK=false
fi
])
@@ -51,16 +60,19 @@
else
# We're on a posix platform. Hooray! :)
path="[$]$1"
-
- if test ! -f "$path" && test ! -d "$path"; then
- AC_MSG_ERROR([The path of $1, which resolves as "$path", is not found.])
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
AC_MSG_NOTICE([The path of $1, which resolves as "$path", is invalid.])
AC_MSG_ERROR([Spaces are not allowed in this path.])
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ AC_MSG_ERROR([The path of $1, which resolves as "$path", is not found.])
+ fi
+
+ $1="`cd "$path"; $THEPWDCMD`"
fi
])
--- a/common/autoconf/build-performance.m4 Mon May 27 12:58:42 2013 +0200
+++ b/common/autoconf/build-performance.m4 Fri May 31 09:55:35 2013 +0200
@@ -278,60 +278,37 @@
fi
AC_SUBST(SJAVAC_SERVER_JAVA)
-AC_ARG_WITH(sjavac-server-cores, [AS_HELP_STRING([--with-sjavac-server-cores],
- [use at most this number of concurrent threads on the sjavac server @<:@probed@:>@])])
-if test "x$with_sjavac_server_cores" != x; then
- SJAVAC_SERVER_CORES="$with_sjavac_server_cores"
-else
- if test "$NUM_CORES" -gt 16; then
- # We set this arbitrary limit because we want to limit the heap
- # size of the javac server.
- # In the future we will make the javac compilers in the server
- # share more and more state, thus enabling us to use more and
- # more concurrent threads in the server.
- SJAVAC_SERVER_CORES="16"
- else
- SJAVAC_SERVER_CORES="$NUM_CORES"
+if test "$MEMORY_SIZE" -gt "2500"; then
+ ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
+ if test "$JVM_ARG_OK" = true; then
+ JVM_64BIT=true
+ JVM_ARG_OK=false
+ fi
fi
+if test "$JVM_64BIT" = true; then
if test "$MEMORY_SIZE" -gt "17000"; then
- MAX_HEAP_MEM=10000
- ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
ADD_JVM_ARG_IF_OK([-Xms10G -Xmx10G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
- elif test "$MEMORY_SIZE" -gt "10000"; then
- MAX_HEAP_MEM=6000
- ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
+ fi
+ if test "$MEMORY_SIZE" -gt "10000" && test "$JVM_ARG_OK" = false; then
ADD_JVM_ARG_IF_OK([-Xms6G -Xmx6G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
- elif test "$MEMORY_SIZE" -gt "5000"; then
- MAX_HEAP_MEM=3000
- ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
+ fi
+ if test "$MEMORY_SIZE" -gt "5000" && test "$JVM_ARG_OK" = false; then
ADD_JVM_ARG_IF_OK([-Xms1G -Xmx3G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
- elif test "$MEMORY_SIZE" -gt "3800"; then
- MAX_HEAP_MEM=2500
+ fi
+ if test "$MEMORY_SIZE" -gt "3800" && test "$JVM_ARG_OK" = false; then
ADD_JVM_ARG_IF_OK([-Xms1G -Xmx2500M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
- elif test "$MEMORY_SIZE" -gt "1900"; then
- MAX_HEAP_MEM=1200
- ADD_JVM_ARG_IF_OK([-Xms700M -Xmx1400M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
- elif test "$MEMORY_SIZE" -gt "1000"; then
- MAX_HEAP_MEM=900
- ADD_JVM_ARG_IF_OK([-Xms400M -Xmx1100M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
- else
- MAX_HEAP_MEM=512
- ADD_JVM_ARG_IF_OK([-Xms256M -Xmx512M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
fi
-
- ADD_JVM_ARG_IF_OK([-XX:PermSize=32m],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
- ADD_JVM_ARG_IF_OK([-XX:MaxPermSize=160m],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
- ADD_JVM_ARG_IF_OK([-XX:ThreadStackSize=$STACK_SIZE],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
-
- MAX_COMPILERS_IN_HEAP=`expr $MAX_HEAP_MEM / 501`
- if test "$SJAVAC_SERVER_CORES" -gt "$MAX_COMPILERS_IN_HEAP"; then
- AC_MSG_CHECKING([if number of server cores must be reduced])
- SJAVAC_SERVER_CORES="$MAX_COMPILERS_IN_HEAP"
- AC_MSG_RESULT([yes, to $SJAVAC_SERVER_CORES with max heap size $MAX_HEAP_MEM MB])
- fi
-fi
-AC_SUBST(SJAVAC_SERVER_CORES)
+fi
+if test "$MEMORY_SIZE" -gt "2500" && test "$JVM_ARG_OK" = false; then
+ ADD_JVM_ARG_IF_OK([-Xms1000M -Xmx1500M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
+fi
+if test "$MEMORY_SIZE" -gt "1000" && test "$JVM_ARG_OK" = false; then
+ ADD_JVM_ARG_IF_OK([-Xms400M -Xmx1100M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
+fi
+if test "$JVM_ARG_OK" = false; then
+ ADD_JVM_ARG_IF_OK([-Xms256M -Xmx512M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
+fi
AC_MSG_CHECKING([whether to use sjavac])
AC_ARG_ENABLE([sjavac], [AS_HELP_STRING([--enable-sjavac],
--- a/common/autoconf/generated-configure.sh Mon May 27 12:58:42 2013 +0200
+++ b/common/autoconf/generated-configure.sh Fri May 31 09:55:35 2013 +0200
@@ -599,7 +599,6 @@
USE_PRECOMPILED_HEADER
SJAVAC_SERVER_DIR
ENABLE_SJAVAC
-SJAVAC_SERVER_CORES
SJAVAC_SERVER_JAVA
JOBS
MEMORY_SIZE
@@ -682,6 +681,8 @@
SHARED_LIBRARY
OBJ_SUFFIX
COMPILER_NAME
+JTREGEXE
+JT_HOME
LIPO
ac_ct_OBJDUMP
OBJDUMP
@@ -1005,6 +1006,7 @@
with_dxsdk
with_dxsdk_lib
with_dxsdk_include
+with_jtreg
with_extra_cflags
with_extra_cxxflags
with_extra_ldflags
@@ -1025,7 +1027,6 @@
with_memory_size
with_jobs
with_sjavac_server_java
-with_sjavac_server_cores
enable_sjavac
enable_precompiled_headers
enable_ccache
@@ -1764,6 +1765,7 @@
[probed]
--with-dxsdk-include the DirectX SDK include directory (Windows only)
[probed]
+ --with-jtreg Regression Test Harness [probed]
--with-extra-cflags extra flags to be used when compiling jdk c-files
--with-extra-cxxflags extra flags to be used when compiling jdk c++-files
--with-extra-ldflags extra flags to be used when linking jdk
@@ -1796,9 +1798,6 @@
--with-sjavac-server-java
use this java binary for running the sjavac
background server [Boot JDK java]
- --with-sjavac-server-cores
- use at most this number of concurrent threads on the
- sjavac server [probed]
--with-ccache-dir where to store ccache files [~/.ccache]
Some influential environment variables:
@@ -3077,6 +3076,9 @@
# questions.
#
+# Test if $1 is a valid argument to $3 (often is $JAVA passed as $3)
+# If so, then append $1 to $2\
+# Also set JVM_ARG_OK to true/false depending on outcome.
# This will make sure the given variable points to a full and proper
@@ -3725,6 +3727,9 @@
+# Setup the JTREG paths
+
+
#
# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -3775,7 +3780,7 @@
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1367502949
+DATE_WHEN_GENERATED=1369723814
###############################################################################
#
@@ -7389,17 +7394,20 @@
else
# We're on a posix platform. Hooray! :)
path="$SRC_ROOT"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of SRC_ROOT, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of SRC_ROOT, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of SRC_ROOT, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of SRC_ROOT, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ SRC_ROOT="`cd "$path"; $THEPWDCMD`"
fi
@@ -7508,17 +7516,20 @@
else
# We're on a posix platform. Hooray! :)
path="$CURDIR"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of CURDIR, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of CURDIR, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of CURDIR, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of CURDIR, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ CURDIR="`cd "$path"; $THEPWDCMD`"
fi
@@ -8104,17 +8115,20 @@
else
# We're on a posix platform. Hooray! :)
path="$OUTPUT_ROOT"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of OUTPUT_ROOT, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of OUTPUT_ROOT, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of OUTPUT_ROOT, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of OUTPUT_ROOT, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ OUTPUT_ROOT="`cd "$path"; $THEPWDCMD`"
fi
@@ -11161,17 +11175,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -11490,17 +11507,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -11633,17 +11653,20 @@
else
# We're on a posix platform. Hooray! :)
path="$JAVA_HOME_PROCESSED"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ JAVA_HOME_PROCESSED="`cd "$path"; $THEPWDCMD`"
fi
if test ! -d "$JAVA_HOME_PROCESSED"; then
@@ -11802,17 +11825,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -11987,17 +12013,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -12312,17 +12341,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -12524,17 +12556,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -12701,17 +12736,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -12906,17 +12944,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -13083,17 +13124,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -13288,17 +13332,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -13465,17 +13512,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -13670,17 +13720,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -13847,17 +13900,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -14039,17 +14095,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -14214,17 +14273,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -14407,17 +14469,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -14582,17 +14647,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -14774,17 +14842,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -14949,17 +15020,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -15142,17 +15216,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -15317,17 +15394,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -15491,17 +15571,20 @@
else
# We're on a posix platform. Hooray! :)
path="$BOOT_JDK"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ BOOT_JDK="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
@@ -15705,73 +15788,115 @@
# Minimum amount of heap memory.
- # Test if -Xms64M is a valid argument to $JAVA (often is $JAVA passed as $JAVA)
- # If so, then append -Xms64M to boot_jdk_jvmargs
- FOUND_WARN=`$JAVA -Xms64M -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$JAVA -Xms64M -version 2>&1 | grep " version \""`
+ $ECHO "Check if jvm arg is ok: -Xms64M" >&5
+ $ECHO "Command: $JAVA -Xms64M -version" >&5
+ OUTPUT=`$JAVA -Xms64M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
boot_jdk_jvmargs="$boot_jdk_jvmargs -Xms64M"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
fi
if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
# Why does macosx need more heap? Its the huge JDK batch.
- # Test if -Xmx1600M is a valid argument to $JAVA (often is $JAVA passed as $JAVA)
- # If so, then append -Xmx1600M to boot_jdk_jvmargs
- FOUND_WARN=`$JAVA -Xmx1600M -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$JAVA -Xmx1600M -version 2>&1 | grep " version \""`
+ $ECHO "Check if jvm arg is ok: -Xmx1600M" >&5
+ $ECHO "Command: $JAVA -Xmx1600M -version" >&5
+ OUTPUT=`$JAVA -Xmx1600M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
boot_jdk_jvmargs="$boot_jdk_jvmargs -Xmx1600M"
- fi
-
- else
-
- # Test if -Xmx1100M is a valid argument to $JAVA (often is $JAVA passed as $JAVA)
- # If so, then append -Xmx1100M to boot_jdk_jvmargs
- FOUND_WARN=`$JAVA -Xmx1100M -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$JAVA -Xmx1100M -version 2>&1 | grep " version \""`
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+ else
+
+ $ECHO "Check if jvm arg is ok: -Xmx1100M" >&5
+ $ECHO "Command: $JAVA -Xmx1100M -version" >&5
+ OUTPUT=`$JAVA -Xmx1100M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
boot_jdk_jvmargs="$boot_jdk_jvmargs -Xmx1100M"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
fi
fi
# When is adding -client something that speeds up the JVM?
# ADD_JVM_ARG_IF_OK([-client],boot_jdk_jvmargs,[$JAVA])
- # Test if -XX:PermSize=32m is a valid argument to $JAVA (often is $JAVA passed as $JAVA)
- # If so, then append -XX:PermSize=32m to boot_jdk_jvmargs
- FOUND_WARN=`$JAVA -XX:PermSize=32m -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$JAVA -XX:PermSize=32m -version 2>&1 | grep " version \""`
+ $ECHO "Check if jvm arg is ok: -XX:PermSize=32m" >&5
+ $ECHO "Command: $JAVA -XX:PermSize=32m -version" >&5
+ OUTPUT=`$JAVA -XX:PermSize=32m -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
boot_jdk_jvmargs="$boot_jdk_jvmargs -XX:PermSize=32m"
- fi
-
-
- # Test if -XX:MaxPermSize=160m is a valid argument to $JAVA (often is $JAVA passed as $JAVA)
- # If so, then append -XX:MaxPermSize=160m to boot_jdk_jvmargs
- FOUND_WARN=`$JAVA -XX:MaxPermSize=160m -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$JAVA -XX:MaxPermSize=160m -version 2>&1 | grep " version \""`
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+ $ECHO "Check if jvm arg is ok: -XX:MaxPermSize=160m" >&5
+ $ECHO "Command: $JAVA -XX:MaxPermSize=160m -version" >&5
+ OUTPUT=`$JAVA -XX:MaxPermSize=160m -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
boot_jdk_jvmargs="$boot_jdk_jvmargs -XX:MaxPermSize=160m"
- fi
-
-
- # Test if -XX:ThreadStackSize=$STACK_SIZE is a valid argument to $JAVA (often is $JAVA passed as $JAVA)
- # If so, then append -XX:ThreadStackSize=$STACK_SIZE to boot_jdk_jvmargs
- FOUND_WARN=`$JAVA -XX:ThreadStackSize=$STACK_SIZE -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$JAVA -XX:ThreadStackSize=$STACK_SIZE -version 2>&1 | grep " version \""`
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+ $ECHO "Check if jvm arg is ok: -XX:ThreadStackSize=$STACK_SIZE" >&5
+ $ECHO "Command: $JAVA -XX:ThreadStackSize=$STACK_SIZE -version" >&5
+ OUTPUT=`$JAVA -XX:ThreadStackSize=$STACK_SIZE -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
boot_jdk_jvmargs="$boot_jdk_jvmargs -XX:ThreadStackSize=$STACK_SIZE"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
fi
# Disable special log output when a debug build is used as Boot JDK...
- # Test if -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput is a valid argument to $JAVA (often is $JAVA passed as $JAVA)
- # If so, then append -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput to boot_jdk_jvmargs
- FOUND_WARN=`$JAVA -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$JAVA -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput -version 2>&1 | grep " version \""`
+ $ECHO "Check if jvm arg is ok: -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput" >&5
+ $ECHO "Command: $JAVA -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput -version" >&5
+ OUTPUT=`$JAVA -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
boot_jdk_jvmargs="$boot_jdk_jvmargs -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
fi
fi
@@ -16132,6 +16257,157 @@
# Locate the actual tools
+
+# Check whether --with-jtreg was given.
+if test "${with_jtreg+set}" = set; then :
+ withval=$with_jtreg;
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JTReg Regression Test Harness" >&5
+$as_echo_n "checking for JTReg Regression Test Harness... " >&6; }
+
+ if test "x$with_jtreg" != x; then
+ JT_HOME="$with_jtreg"
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$JT_HOME"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of JT_HOME" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-stile (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ JT_HOME="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$JT_HOME"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ JT_HOME="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a posix platform. Hooray! :)
+ path="$JT_HOME"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of JT_HOME, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ JT_HOME="`cd "$path"; $THEPWDCMD`"
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JT_HOME" >&5
+$as_echo "$JT_HOME" >&6; }
+
+ # jtreg win32 script works for everybody
+ JTREGEXE="$JT_HOME/win32/bin/jtreg"
+ if test ! -f "$JTREGEXE"; then
+ as_fn_error $? "JTReg executable does not exist: $JTREGEXE" "$LINENO" 5
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+
+
+
+
+
if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
# Store path to cygwin link.exe to help excluding it when searching for
@@ -17088,17 +17364,20 @@
else
# We're on a posix platform. Hooray! :)
path="$MSVCR_DLL"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of MSVCR_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVCR_DLL, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of MSVCR_DLL, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVCR_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ MSVCR_DLL="`cd "$path"; $THEPWDCMD`"
fi
@@ -17242,17 +17521,20 @@
else
# We're on a posix platform. Hooray! :)
path="$dxsdk_path"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of dxsdk_path, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of dxsdk_path, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of dxsdk_path, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of dxsdk_path, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ dxsdk_path="`cd "$path"; $THEPWDCMD`"
fi
@@ -17377,17 +17659,20 @@
else
# We're on a posix platform. Hooray! :)
path="$DXSDK_LIB_PATH"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of DXSDK_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of DXSDK_LIB_PATH, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of DXSDK_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of DXSDK_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ DXSDK_LIB_PATH="`cd "$path"; $THEPWDCMD`"
fi
@@ -17510,17 +17795,20 @@
else
# We're on a posix platform. Hooray! :)
path="$DXSDK_INCLUDE_PATH"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of DXSDK_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of DXSDK_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of DXSDK_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of DXSDK_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ DXSDK_INCLUDE_PATH="`cd "$path"; $THEPWDCMD`"
fi
@@ -28199,6 +28487,8 @@
fi
+
+
# Restore old path without tools dir
PATH="$OLD_PATH"
@@ -30828,17 +31118,20 @@
else
# We're on a posix platform. Hooray! :)
path="$with_freetype"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of with_freetype, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of with_freetype, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of with_freetype, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of with_freetype, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ with_freetype="`cd "$path"; $THEPWDCMD`"
fi
FREETYPE2_LIBS="-L$with_freetype/lib -lfreetype"
@@ -31127,17 +31420,20 @@
else
# We're on a posix platform. Hooray! :)
path="$FREETYPELOCATION"
-
- if test ! -f "$path" && test ! -d "$path"; then
- as_fn_error $? "The path of FREETYPELOCATION, which resolves as \"$path\", is not found." "$LINENO" 5
- fi
-
has_space=`$ECHO "$path" | $GREP " "`
if test "x$has_space" != x; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPELOCATION, which resolves as \"$path\", is invalid." >&5
$as_echo "$as_me: The path of FREETYPELOCATION, which resolves as \"$path\", is invalid." >&6;}
as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of FREETYPELOCATION, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ FREETYPELOCATION="`cd "$path"; $THEPWDCMD`"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype in some standard windows locations" >&5
@@ -32664,192 +32960,183 @@
SJAVAC_SERVER_JAVA=""
# Hotspot specific options.
- # Test if -verbosegc is a valid argument to $JAVA (often is $JAVA passed as $JAVA)
- # If so, then append -verbosegc to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$JAVA -verbosegc -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$JAVA -verbosegc -version 2>&1 | grep " version \""`
+ $ECHO "Check if jvm arg is ok: -verbosegc" >&5
+ $ECHO "Command: $JAVA -verbosegc -version" >&5
+ OUTPUT=`$JAVA -verbosegc -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -verbosegc"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
fi
# JRockit specific options.
- # Test if -Xverbose:gc is a valid argument to $JAVA (often is $JAVA passed as $JAVA)
- # If so, then append -Xverbose:gc to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$JAVA -Xverbose:gc -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$JAVA -Xverbose:gc -version 2>&1 | grep " version \""`
+ $ECHO "Check if jvm arg is ok: -Xverbose:gc" >&5
+ $ECHO "Command: $JAVA -Xverbose:gc -version" >&5
+ OUTPUT=`$JAVA -Xverbose:gc -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -Xverbose:gc"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
fi
SJAVAC_SERVER_JAVA="$JAVA $SJAVAC_SERVER_JAVA"
fi
-
-# Check whether --with-sjavac-server-cores was given.
-if test "${with_sjavac_server_cores+set}" = set; then :
- withval=$with_sjavac_server_cores;
-fi
-
-if test "x$with_sjavac_server_cores" != x; then
- SJAVAC_SERVER_CORES="$with_sjavac_server_cores"
-else
- if test "$NUM_CORES" -gt 16; then
- # We set this arbitrary limit because we want to limit the heap
- # size of the javac server.
- # In the future we will make the javac compilers in the server
- # share more and more state, thus enabling us to use more and
- # more concurrent threads in the server.
- SJAVAC_SERVER_CORES="16"
- else
- SJAVAC_SERVER_CORES="$NUM_CORES"
- fi
-
- if test "$MEMORY_SIZE" -gt "17000"; then
- MAX_HEAP_MEM=10000
-
- # Test if -d64 is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -d64 to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -d64 -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -d64 -version 2>&1 | grep " version \""`
+if test "$MEMORY_SIZE" -gt "2500"; then
+
+ $ECHO "Check if jvm arg is ok: -d64" >&5
+ $ECHO "Command: $SJAVAC_SERVER_JAVA -d64 -version" >&5
+ OUTPUT=`$SJAVAC_SERVER_JAVA -d64 -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -d64"
- fi
-
-
- # Test if -Xms10G -Xmx10G is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -Xms10G -Xmx10G to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -Xms10G -Xmx10G -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -Xms10G -Xmx10G -version 2>&1 | grep " version \""`
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+ if test "$JVM_ARG_OK" = true; then
+ JVM_64BIT=true
+ JVM_ARG_OK=false
+ fi
+ fi
+
+if test "$JVM_64BIT" = true; then
+ if test "$MEMORY_SIZE" -gt "17000"; then
+
+ $ECHO "Check if jvm arg is ok: -Xms10G -Xmx10G" >&5
+ $ECHO "Command: $SJAVAC_SERVER_JAVA -Xms10G -Xmx10G -version" >&5
+ OUTPUT=`$SJAVAC_SERVER_JAVA -Xms10G -Xmx10G -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -Xms10G -Xmx10G"
- fi
-
- elif test "$MEMORY_SIZE" -gt "10000"; then
- MAX_HEAP_MEM=6000
-
- # Test if -d64 is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -d64 to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -d64 -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -d64 -version 2>&1 | grep " version \""`
- if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
- SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -d64"
- fi
-
-
- # Test if -Xms6G -Xmx6G is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -Xms6G -Xmx6G to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -Xms6G -Xmx6G -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -Xms6G -Xmx6G -version 2>&1 | grep " version \""`
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+ fi
+ if test "$MEMORY_SIZE" -gt "10000" && test "$JVM_ARG_OK" = false; then
+
+ $ECHO "Check if jvm arg is ok: -Xms6G -Xmx6G" >&5
+ $ECHO "Command: $SJAVAC_SERVER_JAVA -Xms6G -Xmx6G -version" >&5
+ OUTPUT=`$SJAVAC_SERVER_JAVA -Xms6G -Xmx6G -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -Xms6G -Xmx6G"
- fi
-
- elif test "$MEMORY_SIZE" -gt "5000"; then
- MAX_HEAP_MEM=3000
-
- # Test if -d64 is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -d64 to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -d64 -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -d64 -version 2>&1 | grep " version \""`
- if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
- SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -d64"
- fi
-
-
- # Test if -Xms1G -Xmx3G is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -Xms1G -Xmx3G to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -Xms1G -Xmx3G -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -Xms1G -Xmx3G -version 2>&1 | grep " version \""`
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+ fi
+ if test "$MEMORY_SIZE" -gt "5000" && test "$JVM_ARG_OK" = false; then
+
+ $ECHO "Check if jvm arg is ok: -Xms1G -Xmx3G" >&5
+ $ECHO "Command: $SJAVAC_SERVER_JAVA -Xms1G -Xmx3G -version" >&5
+ OUTPUT=`$SJAVAC_SERVER_JAVA -Xms1G -Xmx3G -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -Xms1G -Xmx3G"
- fi
-
- elif test "$MEMORY_SIZE" -gt "3800"; then
- MAX_HEAP_MEM=2500
-
- # Test if -Xms1G -Xmx2500M is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -Xms1G -Xmx2500M to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -Xms1G -Xmx2500M -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -Xms1G -Xmx2500M -version 2>&1 | grep " version \""`
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+ fi
+ if test "$MEMORY_SIZE" -gt "3800" && test "$JVM_ARG_OK" = false; then
+
+ $ECHO "Check if jvm arg is ok: -Xms1G -Xmx2500M" >&5
+ $ECHO "Command: $SJAVAC_SERVER_JAVA -Xms1G -Xmx2500M -version" >&5
+ OUTPUT=`$SJAVAC_SERVER_JAVA -Xms1G -Xmx2500M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -Xms1G -Xmx2500M"
- fi
-
- elif test "$MEMORY_SIZE" -gt "1900"; then
- MAX_HEAP_MEM=1200
-
- # Test if -Xms700M -Xmx1400M is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -Xms700M -Xmx1400M to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -Xms700M -Xmx1400M -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -Xms700M -Xmx1400M -version 2>&1 | grep " version \""`
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+ fi
+fi
+if test "$MEMORY_SIZE" -gt "2500" && test "$JVM_ARG_OK" = false; then
+
+ $ECHO "Check if jvm arg is ok: -Xms1000M -Xmx1500M" >&5
+ $ECHO "Command: $SJAVAC_SERVER_JAVA -Xms1000M -Xmx1500M -version" >&5
+ OUTPUT=`$SJAVAC_SERVER_JAVA -Xms1000M -Xmx1500M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
- SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -Xms700M -Xmx1400M"
- fi
-
- elif test "$MEMORY_SIZE" -gt "1000"; then
- MAX_HEAP_MEM=900
-
- # Test if -Xms400M -Xmx1100M is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -Xms400M -Xmx1100M to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -Xms400M -Xmx1100M -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -Xms400M -Xmx1100M -version 2>&1 | grep " version \""`
+ SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -Xms1000M -Xmx1500M"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+fi
+if test "$MEMORY_SIZE" -gt "1000" && test "$JVM_ARG_OK" = false; then
+
+ $ECHO "Check if jvm arg is ok: -Xms400M -Xmx1100M" >&5
+ $ECHO "Command: $SJAVAC_SERVER_JAVA -Xms400M -Xmx1100M -version" >&5
+ OUTPUT=`$SJAVAC_SERVER_JAVA -Xms400M -Xmx1100M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -Xms400M -Xmx1100M"
- fi
-
- else
- MAX_HEAP_MEM=512
-
- # Test if -Xms256M -Xmx512M is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -Xms256M -Xmx512M to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -Xms256M -Xmx512M -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -Xms256M -Xmx512M -version 2>&1 | grep " version \""`
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+fi
+if test "$JVM_ARG_OK" = false; then
+
+ $ECHO "Check if jvm arg is ok: -Xms256M -Xmx512M" >&5
+ $ECHO "Command: $SJAVAC_SERVER_JAVA -Xms256M -Xmx512M -version" >&5
+ OUTPUT=`$SJAVAC_SERVER_JAVA -Xms256M -Xmx512M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | grep -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | grep " version \""`
if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -Xms256M -Xmx512M"
- fi
-
- fi
-
-
- # Test if -XX:PermSize=32m is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -XX:PermSize=32m to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -XX:PermSize=32m -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -XX:PermSize=32m -version 2>&1 | grep " version \""`
- if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
- SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -XX:PermSize=32m"
- fi
-
-
- # Test if -XX:MaxPermSize=160m is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -XX:MaxPermSize=160m to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -XX:MaxPermSize=160m -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -XX:MaxPermSize=160m -version 2>&1 | grep " version \""`
- if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
- SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -XX:MaxPermSize=160m"
- fi
-
-
- # Test if -XX:ThreadStackSize=$STACK_SIZE is a valid argument to $SJAVAC_SERVER_JAVA (often is $JAVA passed as $SJAVAC_SERVER_JAVA)
- # If so, then append -XX:ThreadStackSize=$STACK_SIZE to SJAVAC_SERVER_JAVA
- FOUND_WARN=`$SJAVAC_SERVER_JAVA -XX:ThreadStackSize=$STACK_SIZE -version 2>&1 | grep -i warn`
- FOUND_VERSION=`$SJAVAC_SERVER_JAVA -XX:ThreadStackSize=$STACK_SIZE -version 2>&1 | grep " version \""`
- if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
- SJAVAC_SERVER_JAVA="$SJAVAC_SERVER_JAVA -XX:ThreadStackSize=$STACK_SIZE"
- fi
-
-
- MAX_COMPILERS_IN_HEAP=`expr $MAX_HEAP_MEM / 501`
- if test "$SJAVAC_SERVER_CORES" -gt "$MAX_COMPILERS_IN_HEAP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if number of server cores must be reduced" >&5
-$as_echo_n "checking if number of server cores must be reduced... " >&6; }
- SJAVAC_SERVER_CORES="$MAX_COMPILERS_IN_HEAP"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, to $SJAVAC_SERVER_CORES with max heap size $MAX_HEAP_MEM MB" >&5
-$as_echo "yes, to $SJAVAC_SERVER_CORES with max heap size $MAX_HEAP_MEM MB" >&6; }
- fi
-fi
-
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use sjavac" >&5
$as_echo_n "checking whether to use sjavac... " >&6; }
--- a/common/autoconf/spec.gmk.in Mon May 27 12:58:42 2013 +0200
+++ b/common/autoconf/spec.gmk.in Fri May 31 09:55:35 2013 +0200
@@ -528,6 +528,8 @@
OBJCOPY:=@OBJCOPY@
SETFILE:=@SETFILE@
XATTR:=@XATTR@
+JT_HOME:=@JT_HOME@
+JTREGEXE:=@JTREGEXE@
FIXPATH:=@FIXPATH@
--- a/common/autoconf/toolchain.m4 Mon May 27 12:58:42 2013 +0200
+++ b/common/autoconf/toolchain.m4 Fri May 31 09:55:35 2013 +0200
@@ -479,6 +479,8 @@
BASIC_FIXUP_EXECUTABLE(LIPO)
fi
+TOOLCHAIN_SETUP_JTREG
+
# Restore old path without tools dir
PATH="$OLD_PATH"
])
@@ -1089,3 +1091,29 @@
[COMPILER_SUPPORTS_TARGET_BITS_FLAG=false])
AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG)
])
+
+# Setup the JTREG paths
+AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
+[
+ AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg],
+ [Regression Test Harness @<:@probed@:>@])])
+
+ AC_MSG_CHECKING([for JTReg Regression Test Harness])
+
+ if test "x$with_jtreg" != x; then
+ JT_HOME="$with_jtreg"
+ BASIC_FIXUP_PATH([JT_HOME])
+ AC_MSG_RESULT($JT_HOME)
+
+ # jtreg win32 script works for everybody
+ JTREGEXE="$JT_HOME/win32/bin/jtreg"
+ if test ! -f "$JTREGEXE"; then
+ AC_MSG_ERROR([JTReg executable does not exist: $JTREGEXE])
+ fi
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ AC_SUBST(JT_HOME)
+ AC_SUBST(JTREGEXE)
+])
--- a/corba/.hgtags Mon May 27 12:58:42 2013 +0200
+++ b/corba/.hgtags Fri May 31 09:55:35 2013 +0200
@@ -212,3 +212,4 @@
4e3a881ebb1ee96ce0872508b0066d74f310dbfa jdk8-b88
fe4150590ee597f4e125fea950aa3b352622cc2d jdk8-b89
c8286839d0df04aba819ec4bef12b86babccf30e jdk8-b90
+8f7ffb296385f85a4a6d53f9f2d4a7b13a8fa1ff jdk8-b91
--- a/hotspot/.hgtags Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/.hgtags Fri May 31 09:55:35 2013 +0200
@@ -343,3 +343,5 @@
69494caf57908ba2c8efa9eaaa472b4d1875588a hs25-b32
1ae0472ff3a0117b5b019d380ad59fface2fde14 jdk8-b90
b19517cecc2e91636d7c16ba2f35e3d3dc628099 hs25-b33
+7cbdf0e3725c0c56a2ff7540fc70b6d4b5890d04 jdk8-b91
+38da9f4f67096745f851318d792d6468aa1f6cf8 hs25-b34
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java Fri May 31 09:55:35 2013 +0200
@@ -96,9 +96,10 @@
public boolean containsProtectionDomain(Oop protectionDomain) {
InstanceKlass ik = (InstanceKlass) klass();
- if (protectionDomain.equals(ik.getProtectionDomain())) {
- return true; // Succeeds trivially
- }
+ // Currently unimplemented and not used.
+ // if (protectionDomain.equals(ik.getJavaMirror().getProtectionDomain())) {
+ // return true; // Succeeds trivially
+ // }
for (ProtectionDomainEntry current = pdSet(); current != null;
current = current.next()) {
if (protectionDomain.equals(current.protectionDomain())) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java Fri May 31 09:55:35 2013 +0200
@@ -75,8 +75,6 @@
javaFieldsCount = new CIntField(type.getCIntegerField("_java_fields_count"), 0);
constants = new MetadataField(type.getAddressField("_constants"), 0);
classLoaderData = type.getAddressField("_class_loader_data");
- protectionDomain = new OopField(type.getOopField("_protection_domain"), 0);
- signers = new OopField(type.getOopField("_signers"), 0);
sourceFileName = type.getAddressField("_source_file_name");
sourceDebugExtension = type.getAddressField("_source_debug_extension");
innerClasses = type.getAddressField("_inner_classes");
@@ -136,8 +134,6 @@
private static CIntField javaFieldsCount;
private static MetadataField constants;
private static AddressField classLoaderData;
- private static OopField protectionDomain;
- private static OopField signers;
private static AddressField sourceFileName;
private static AddressField sourceDebugExtension;
private static AddressField innerClasses;
@@ -350,8 +346,6 @@
public ConstantPool getConstants() { return (ConstantPool) constants.getValue(this); }
public ClassLoaderData getClassLoaderData() { return ClassLoaderData.instantiateWrapperFor(classLoaderData.getValue(getAddress())); }
public Oop getClassLoader() { return getClassLoaderData().getClassLoader(); }
- public Oop getProtectionDomain() { return protectionDomain.getValue(this); }
- public ObjArray getSigners() { return (ObjArray) signers.getValue(this); }
public Symbol getSourceFileName() { return getSymbol(sourceFileName); }
public String getSourceDebugExtension(){ return CStringUtilities.getString(sourceDebugExtension.getValue(getAddress())); }
public long getNonstaticFieldSize() { return nonstaticFieldSize.getValue(this); }
@@ -541,8 +535,6 @@
// visitor.doOop(methods, true);
// visitor.doOop(localInterfaces, true);
// visitor.doOop(transitiveInterfaces, true);
- visitor.doOop(protectionDomain, true);
- visitor.doOop(signers, true);
visitor.doCInt(nonstaticFieldSize, true);
visitor.doCInt(staticFieldSize, true);
visitor.doCInt(staticOopFieldCount, true);
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java Fri May 31 09:55:35 2013 +0200
@@ -204,13 +204,13 @@
Oop loader = ik.getClassLoader();
writeEdge(instance, loader, "loaded-by");
- // write signers
- Oop signers = ik.getSigners();
- writeEdge(instance, signers, "signed-by");
+ // write signers NYI
+ // Oop signers = ik.getJavaMirror().getSigners();
+ writeEdge(instance, null, "signed-by");
- // write protection domain
- Oop protectionDomain = ik.getProtectionDomain();
- writeEdge(instance, protectionDomain, "protection-domain");
+ // write protection domain NYI
+ // Oop protectionDomain = ik.getJavaMirror().getProtectionDomain();
+ writeEdge(instance, null, "protection-domain");
// write edges for static reference fields from this class
for (Iterator itr = refFields.iterator(); itr.hasNext();) {
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java Fri May 31 09:55:35 2013 +0200
@@ -477,8 +477,8 @@
if (k instanceof InstanceKlass) {
InstanceKlass ik = (InstanceKlass) k;
writeObjectID(ik.getClassLoader());
- writeObjectID(ik.getSigners());
- writeObjectID(ik.getProtectionDomain());
+ writeObjectID(null); // ik.getJavaMirror().getSigners());
+ writeObjectID(null); // ik.getJavaMirror().getProtectionDomain());
// two reserved id fields
writeObjectID(null);
writeObjectID(null);
@@ -516,8 +516,8 @@
if (bottomKlass instanceof InstanceKlass) {
InstanceKlass ik = (InstanceKlass) bottomKlass;
writeObjectID(ik.getClassLoader());
- writeObjectID(ik.getSigners());
- writeObjectID(ik.getProtectionDomain());
+ writeObjectID(null); // ik.getJavaMirror().getSigners());
+ writeObjectID(null); // ik.getJavaMirror().getProtectionDomain());
} else {
writeObjectID(null);
writeObjectID(null);
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaInstanceKlass.java Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaInstanceKlass.java Fri May 31 09:55:35 2013 +0200
@@ -47,8 +47,6 @@
private static final int FIELD_IS_SYNTHETIC = 13;
private static final int FIELD_IS_INTERFACE = 14;
private static final int FIELD_CLASS_LOADER = 15;
- private static final int FIELD_PROTECTION_DOMAIN = 16;
- private static final int FIELD_SIGNERS = 17;
private static final int FIELD_STATICS = 18;
private static final int FIELD_UNDEFINED = -1;
@@ -100,10 +98,6 @@
return Boolean.valueOf(ik.isInterface());
case FIELD_CLASS_LOADER:
return factory.newJSJavaObject(ik.getClassLoader());
- case FIELD_PROTECTION_DOMAIN:
- return factory.newJSJavaObject(ik.getProtectionDomain());
- case FIELD_SIGNERS:
- return factory.newJSJavaObject(ik.getSigners());
case FIELD_STATICS:
return getStatics();
case FIELD_UNDEFINED:
@@ -246,8 +240,6 @@
addField("isSynthetic", FIELD_IS_SYNTHETIC);
addField("isInterface", FIELD_IS_INTERFACE);
addField("classLoader", FIELD_CLASS_LOADER);
- addField("protectionDomain", FIELD_PROTECTION_DOMAIN);
- addField("signers", FIELD_SIGNERS);
addField("statics", FIELD_STATICS);
}
--- a/hotspot/make/excludeSrc.make Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/make/excludeSrc.make Fri May 31 09:55:35 2013 +0200
@@ -25,7 +25,7 @@
CXXFLAGS += -DINCLUDE_JVMTI=0
CFLAGS += -DINCLUDE_JVMTI=0
- Src_Files_EXCLUDE += jvmtiGetLoadedClasses.cpp forte.cpp jvmtiThreadState.cpp jvmtiExtensions.cpp \
+ Src_Files_EXCLUDE += jvmtiGetLoadedClasses.cpp jvmtiThreadState.cpp jvmtiExtensions.cpp \
jvmtiImpl.cpp jvmtiManageCapabilities.cpp jvmtiRawMonitor.cpp jvmtiUtil.cpp jvmtiTrace.cpp \
jvmtiCodeBlobEvents.cpp jvmtiEnv.cpp jvmtiRedefineClasses.cpp jvmtiEnvBase.cpp jvmtiEnvThreadState.cpp \
jvmtiTagMap.cpp jvmtiEventController.cpp evmCompat.cpp jvmtiEnter.xsl jvmtiExport.cpp \
--- a/hotspot/make/hotspot_version Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/make/hotspot_version Fri May 31 09:55:35 2013 +0200
@@ -35,7 +35,7 @@
HS_MAJOR_VER=25
HS_MINOR_VER=0
-HS_BUILD_NUMBER=34
+HS_BUILD_NUMBER=35
JDK_MAJOR_VER=1
JDK_MINOR_VER=8
--- a/hotspot/src/os/windows/vm/os_windows.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/os/windows/vm/os_windows.cpp Fri May 31 09:55:35 2013 +0200
@@ -944,6 +944,8 @@
MINIDUMP_TYPE dumpType;
static const char* cwd;
+// Default is to always create dump for debug builds, on product builds only dump on server versions of Windows.
+#ifndef ASSERT
// If running on a client version of Windows and user has not explicitly enabled dumping
if (!os::win32::is_windows_server() && !CreateMinidumpOnCrash) {
VMError::report_coredump_status("Minidumps are not enabled by default on client versions of Windows", false);
@@ -953,6 +955,12 @@
VMError::report_coredump_status("Minidump has been disabled from the command line", false);
return;
}
+#else
+ if (!FLAG_IS_DEFAULT(CreateMinidumpOnCrash) && !CreateMinidumpOnCrash) {
+ VMError::report_coredump_status("Minidump has been disabled from the command line", false);
+ return;
+ }
+#endif
dbghelp = os::win32::load_Windows_dll("DBGHELP.DLL", NULL, 0);
@@ -1004,7 +1012,21 @@
// the dump types we really want. If first call fails, lets fall back to just use MiniDumpWithFullMemory then.
if (_MiniDumpWriteDump(hProcess, processId, dumpFile, dumpType, pmei, NULL, NULL) == false &&
_MiniDumpWriteDump(hProcess, processId, dumpFile, (MINIDUMP_TYPE)MiniDumpWithFullMemory, pmei, NULL, NULL) == false) {
- VMError::report_coredump_status("Call to MiniDumpWriteDump() failed", false);
+ DWORD error = GetLastError();
+ LPTSTR msgbuf = NULL;
+
+ if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, error, 0, (LPTSTR)&msgbuf, 0, NULL) != 0) {
+
+ jio_snprintf(buffer, bufferSize, "Call to MiniDumpWriteDump() failed (Error 0x%x: %s)", error, msgbuf);
+ LocalFree(msgbuf);
+ } else {
+ // Call to FormatMessage failed, just include the result from GetLastError
+ jio_snprintf(buffer, bufferSize, "Call to MiniDumpWriteDump() failed (Error 0x%x)", error);
+ }
+ VMError::report_coredump_status(buffer, false);
} else {
VMError::report_coredump_status(buffer, true);
}
--- a/hotspot/src/share/vm/classfile/classFileParser.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/classfile/classFileParser.cpp Fri May 31 09:55:35 2013 +0200
@@ -444,8 +444,8 @@
break;
case JVM_REF_invokeStatic:
case JVM_REF_invokeSpecial:
- check_property(
- tag.is_method() || tag.is_interface_method(),
+ check_property(tag.is_method() ||
+ ((_major_version >= JAVA_8_VERSION) && tag.is_interface_method()),
"Invalid constant pool index %u in class file %s (not a method)",
ref_index, CHECK_(nullHandle));
break;
@@ -3152,7 +3152,6 @@
}
}
}
- int contended_count = nonstatic_contended_count;
// Calculate the starting byte offsets
@@ -3177,35 +3176,52 @@
next_nonstatic_field_offset = nonstatic_fields_start;
+ bool is_contended_class = parsed_annotations->is_contended();
+
// Class is contended, pad before all the fields
- if (parsed_annotations->is_contended()) {
+ if (is_contended_class) {
next_nonstatic_field_offset += ContendedPaddingWidth;
}
- // Compute the non-contended fields count
+ // Compute the non-contended fields count.
+ // The packing code below relies on these counts to determine if some field
+ // can be squeezed into the alignment gap. Contended fields are obviously
+ // exempt from that.
unsigned int nonstatic_double_count = fac->count[NONSTATIC_DOUBLE] - fac_contended.count[NONSTATIC_DOUBLE];
unsigned int nonstatic_word_count = fac->count[NONSTATIC_WORD] - fac_contended.count[NONSTATIC_WORD];
unsigned int nonstatic_short_count = fac->count[NONSTATIC_SHORT] - fac_contended.count[NONSTATIC_SHORT];
unsigned int nonstatic_byte_count = fac->count[NONSTATIC_BYTE] - fac_contended.count[NONSTATIC_BYTE];
unsigned int nonstatic_oop_count = fac->count[NONSTATIC_OOP] - fac_contended.count[NONSTATIC_OOP];
+ // Total non-static fields count, including every contended field
+ unsigned int nonstatic_fields_count = fac->count[NONSTATIC_DOUBLE] + fac->count[NONSTATIC_WORD] +
+ fac->count[NONSTATIC_SHORT] + fac->count[NONSTATIC_BYTE] +
+ fac->count[NONSTATIC_OOP];
+
bool super_has_nonstatic_fields =
(_super_klass() != NULL && _super_klass->has_nonstatic_fields());
- bool has_nonstatic_fields = super_has_nonstatic_fields ||
- ((nonstatic_double_count + nonstatic_word_count +
- nonstatic_short_count + nonstatic_byte_count +
- nonstatic_oop_count) != 0);
+ bool has_nonstatic_fields = super_has_nonstatic_fields || (nonstatic_fields_count != 0);
// Prepare list of oops for oop map generation.
+ //
+ // "offset" and "count" lists are describing the set of contiguous oop
+ // regions. offset[i] is the start of the i-th region, which then has
+ // count[i] oops following. Before we know how many regions are required,
+ // we pessimistically allocate the maps to fit all the oops into the
+ // distinct regions.
+ //
+ // TODO: We add +1 to always allocate non-zero resource arrays; we need
+ // to figure out if we still need to do this.
int* nonstatic_oop_offsets;
unsigned int* nonstatic_oop_counts;
unsigned int nonstatic_oop_map_count = 0;
+ unsigned int max_nonstatic_oop_maps = fac->count[NONSTATIC_OOP] + 1;
nonstatic_oop_offsets = NEW_RESOURCE_ARRAY_IN_THREAD(
- THREAD, int, nonstatic_oop_count + 1);
+ THREAD, int, max_nonstatic_oop_maps);
nonstatic_oop_counts = NEW_RESOURCE_ARRAY_IN_THREAD(
- THREAD, unsigned int, nonstatic_oop_count + 1);
+ THREAD, unsigned int, max_nonstatic_oop_maps);
first_nonstatic_oop_offset = 0; // will be set for first oop field
@@ -3392,9 +3408,11 @@
int(nonstatic_oop_counts[nonstatic_oop_map_count - 1]) *
heapOopSize ) {
// Extend current oop map
+ assert(nonstatic_oop_map_count - 1 < max_nonstatic_oop_maps, "range check");
nonstatic_oop_counts[nonstatic_oop_map_count - 1] += 1;
} else {
// Create new oop map
+ assert(nonstatic_oop_map_count < max_nonstatic_oop_maps, "range check");
nonstatic_oop_offsets[nonstatic_oop_map_count] = real_offset;
nonstatic_oop_counts [nonstatic_oop_map_count] = 1;
nonstatic_oop_map_count += 1;
@@ -3452,12 +3470,10 @@
//
// Additionally, this should not break alignment for the fields, so we round the alignment up
// for each field.
- if (contended_count > 0) {
+ if (nonstatic_contended_count > 0) {
// if there is at least one contended field, we need to have pre-padding for them
- if (nonstatic_contended_count > 0) {
- next_nonstatic_padded_offset += ContendedPaddingWidth;
- }
+ next_nonstatic_padded_offset += ContendedPaddingWidth;
// collect all contended groups
BitMap bm(_cp->size());
@@ -3518,6 +3534,7 @@
next_nonstatic_padded_offset += heapOopSize;
// Create new oop map
+ assert(nonstatic_oop_map_count < max_nonstatic_oop_maps, "range check");
nonstatic_oop_offsets[nonstatic_oop_map_count] = real_offset;
nonstatic_oop_counts [nonstatic_oop_map_count] = 1;
nonstatic_oop_map_count += 1;
@@ -3554,18 +3571,17 @@
// handle static fields
}
- // Size of instances
- int notaligned_offset = next_nonstatic_padded_offset;
-
// Entire class is contended, pad in the back.
// This helps to alleviate memory contention effects for subclass fields
// and/or adjacent object.
- if (parsed_annotations->is_contended()) {
- notaligned_offset += ContendedPaddingWidth;
+ if (is_contended_class) {
+ next_nonstatic_padded_offset += ContendedPaddingWidth;
}
- int nonstatic_fields_end = align_size_up(notaligned_offset, heapOopSize);
- int instance_end = align_size_up(notaligned_offset, wordSize);
+ int notaligned_nonstatic_fields_end = next_nonstatic_padded_offset;
+
+ int nonstatic_fields_end = align_size_up(notaligned_nonstatic_fields_end, heapOopSize);
+ int instance_end = align_size_up(notaligned_nonstatic_fields_end, wordSize);
int static_fields_end = align_size_up(next_static_byte_offset, wordSize);
int static_field_size = (static_fields_end -
@@ -3579,6 +3595,14 @@
(instanceOopDesc::base_offset_in_bytes() + nonstatic_field_size*heapOopSize),
wordSize) / wordSize), "consistent layout helper value");
+ // Invariant: nonstatic_field end/start should only change if there are
+ // nonstatic fields in the class, or if the class is contended. We compare
+ // against the non-aligned value, so that end alignment will not fail the
+ // assert without actually having the fields.
+ assert((notaligned_nonstatic_fields_end == nonstatic_fields_start) ||
+ is_contended_class ||
+ (nonstatic_fields_count > 0), "double-check nonstatic start/end");
+
// Number of non-static oop map blocks allocated at end of klass.
const unsigned int total_oop_map_count =
compute_oop_map_count(_super_klass, nonstatic_oop_map_count,
@@ -4040,6 +4064,9 @@
}
}
+ // Allocate mirror and initialize static fields
+ java_lang_Class::create_mirror(this_klass, protection_domain, CHECK_(nullHandle));
+
#ifdef ASSERT
if (ParseAllGenericSignatures) {
@@ -4055,17 +4082,6 @@
this_klass(), &all_mirandas, CHECK_(nullHandle));
}
- // Allocate mirror and initialize static fields
- java_lang_Class::create_mirror(this_klass, CHECK_(nullHandle));
-
- // Allocate a simple java object for locking during class initialization.
- // This needs to be a java object because it can be held across a java call.
- typeArrayOop r = oopFactory::new_typeArray(T_INT, 0, CHECK_NULL);
- this_klass->set_init_lock(r);
-
- // TODO: Move these oops to the mirror
- this_klass->set_protection_domain(protection_domain());
-
// Update the loader_data graph.
record_defined_class_dependencies(this_klass, CHECK_NULL);
--- a/hotspot/src/share/vm/classfile/javaClasses.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/classfile/javaClasses.cpp Fri May 31 09:55:35 2013 +0200
@@ -512,22 +512,22 @@
// If the offset was read from the shared archive, it was fixed up already
if (!k->is_shared()) {
- if (k->oop_is_instance()) {
- // During bootstrap, java.lang.Class wasn't loaded so static field
- // offsets were computed without the size added it. Go back and
- // update all the static field offsets to included the size.
- for (JavaFieldStream fs(InstanceKlass::cast(k())); !fs.done(); fs.next()) {
- if (fs.access_flags().is_static()) {
- int real_offset = fs.offset() + InstanceMirrorKlass::offset_of_static_fields();
- fs.set_offset(real_offset);
+ if (k->oop_is_instance()) {
+ // During bootstrap, java.lang.Class wasn't loaded so static field
+ // offsets were computed without the size added it. Go back and
+ // update all the static field offsets to included the size.
+ for (JavaFieldStream fs(InstanceKlass::cast(k())); !fs.done(); fs.next()) {
+ if (fs.access_flags().is_static()) {
+ int real_offset = fs.offset() + InstanceMirrorKlass::offset_of_static_fields();
+ fs.set_offset(real_offset);
+ }
}
}
}
- }
- create_mirror(k, CHECK);
+ create_mirror(k, Handle(NULL), CHECK);
}
-oop java_lang_Class::create_mirror(KlassHandle k, TRAPS) {
+oop java_lang_Class::create_mirror(KlassHandle k, Handle protection_domain, TRAPS) {
assert(k->java_mirror() == NULL, "should only assign mirror once");
// Use this moment of initialization to cache modifier_flags also,
// to support Class.getModifiers(). Instance classes recalculate
@@ -563,6 +563,16 @@
set_array_klass(comp_mirror(), k());
} else {
assert(k->oop_is_instance(), "Must be");
+
+ // Allocate a simple java object for a lock.
+ // This needs to be a java object because during class initialization
+ // it can be held across a java call.
+ typeArrayOop r = oopFactory::new_typeArray(T_INT, 0, CHECK_NULL);
+ set_init_lock(mirror(), r);
+
+ // Set protection domain also
+ set_protection_domain(mirror(), protection_domain());
+
// Initialize static fields
InstanceKlass::cast(k())->do_local_static_fields(&initialize_static_field, CHECK_NULL);
}
@@ -597,6 +607,34 @@
java_class->int_field_put(_static_oop_field_count_offset, size);
}
+oop java_lang_Class::protection_domain(oop java_class) {
+ assert(_protection_domain_offset != 0, "must be set");
+ return java_class->obj_field(_protection_domain_offset);
+}
+void java_lang_Class::set_protection_domain(oop java_class, oop pd) {
+ assert(_protection_domain_offset != 0, "must be set");
+ java_class->obj_field_put(_protection_domain_offset, pd);
+}
+
+oop java_lang_Class::init_lock(oop java_class) {
+ assert(_init_lock_offset != 0, "must be set");
+ return java_class->obj_field(_init_lock_offset);
+}
+void java_lang_Class::set_init_lock(oop java_class, oop init_lock) {
+ assert(_init_lock_offset != 0, "must be set");
+ java_class->obj_field_put(_init_lock_offset, init_lock);
+}
+
+objArrayOop java_lang_Class::signers(oop java_class) {
+ assert(_signers_offset != 0, "must be set");
+ return (objArrayOop)java_class->obj_field(_signers_offset);
+}
+void java_lang_Class::set_signers(oop java_class, objArrayOop signers) {
+ assert(_signers_offset != 0, "must be set");
+ java_class->obj_field_put(_signers_offset, (oop)signers);
+}
+
+
oop java_lang_Class::create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS) {
// This should be improved by adding a field at the Java level or by
// introducing a new VM klass (see comment in ClassFileParser)
@@ -2934,6 +2972,9 @@
int java_lang_Class::_array_klass_offset;
int java_lang_Class::_oop_size_offset;
int java_lang_Class::_static_oop_field_count_offset;
+int java_lang_Class::_protection_domain_offset;
+int java_lang_Class::_init_lock_offset;
+int java_lang_Class::_signers_offset;
GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
int java_lang_Throwable::backtrace_offset;
int java_lang_Throwable::detailMessage_offset;
--- a/hotspot/src/share/vm/classfile/javaClasses.hpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/classfile/javaClasses.hpp Fri May 31 09:55:35 2013 +0200
@@ -208,7 +208,10 @@
macro(java_lang_Class, klass, intptr_signature, false) \
macro(java_lang_Class, array_klass, intptr_signature, false) \
macro(java_lang_Class, oop_size, int_signature, false) \
- macro(java_lang_Class, static_oop_field_count, int_signature, false)
+ macro(java_lang_Class, static_oop_field_count, int_signature, false) \
+ macro(java_lang_Class, protection_domain, object_signature, false) \
+ macro(java_lang_Class, init_lock, object_signature, false) \
+ macro(java_lang_Class, signers, object_signature, false)
class java_lang_Class : AllStatic {
friend class VMStructs;
@@ -222,15 +225,20 @@
static int _oop_size_offset;
static int _static_oop_field_count_offset;
+ static int _protection_domain_offset;
+ static int _init_lock_offset;
+ static int _signers_offset;
+
static bool offsets_computed;
static int classRedefinedCount_offset;
static GrowableArray<Klass*>* _fixup_mirror_list;
+ static void set_init_lock(oop java_class, oop init_lock);
public:
static void compute_offsets();
// Instance creation
- static oop create_mirror(KlassHandle k, TRAPS);
+ static oop create_mirror(KlassHandle k, Handle protection_domain, TRAPS);
static void fixup_mirror(KlassHandle k, TRAPS);
static oop create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS);
// Conversion
@@ -262,6 +270,13 @@
static int classRedefinedCount(oop the_class_mirror);
static void set_classRedefinedCount(oop the_class_mirror, int value);
+ // Support for embedded per-class oops
+ static oop protection_domain(oop java_class);
+ static void set_protection_domain(oop java_class, oop protection_domain);
+ static oop init_lock(oop java_class);
+ static objArrayOop signers(oop java_class);
+ static void set_signers(oop java_class, objArrayOop signers);
+
static int oop_size(oop java_class);
static void set_oop_size(oop java_class, int size);
static int static_oop_field_count(oop java_class);
--- a/hotspot/src/share/vm/classfile/vmSymbols.hpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp Fri May 31 09:55:35 2013 +0200
@@ -392,6 +392,9 @@
template(array_klass_name, "array_klass") \
template(oop_size_name, "oop_size") \
template(static_oop_field_count_name, "static_oop_field_count") \
+ template(protection_domain_name, "protection_domain") \
+ template(init_lock_name, "init_lock") \
+ template(signers_name, "signers_name") \
template(loader_data_name, "loader_data") \
template(dependencies_name, "dependencies") \
\
--- a/hotspot/src/share/vm/oops/arrayKlass.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/oops/arrayKlass.cpp Fri May 31 09:55:35 2013 +0200
@@ -94,7 +94,7 @@
ResourceMark rm(THREAD);
k->initialize_supers(super_klass(), CHECK);
k->vtable()->initialize_vtable(false, CHECK);
- java_lang_Class::create_mirror(k, CHECK);
+ java_lang_Class::create_mirror(k, Handle(NULL), CHECK);
}
GrowableArray<Klass*>* ArrayKlass::compute_secondary_supers(int num_extra_slots) {
--- a/hotspot/src/share/vm/oops/constantPool.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/oops/constantPool.cpp Fri May 31 09:55:35 2013 +0200
@@ -1063,9 +1063,10 @@
int k2 = cp2->invoke_dynamic_name_and_type_ref_index_at(index2);
int i1 = invoke_dynamic_bootstrap_specifier_index(index1);
int i2 = cp2->invoke_dynamic_bootstrap_specifier_index(index2);
- bool match = compare_entry_to(k1, cp2, k2, CHECK_false) &&
- compare_operand_to(i1, cp2, i2, CHECK_false);
- return match;
+ // separate statements and variables because CHECK_false is used
+ bool match_entry = compare_entry_to(k1, cp2, k2, CHECK_false);
+ bool match_operand = compare_operand_to(i1, cp2, i2, CHECK_false);
+ return (match_entry && match_operand);
} break;
case JVM_CONSTANT_String:
--- a/hotspot/src/share/vm/oops/instanceKlass.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp Fri May 31 09:55:35 2013 +0200
@@ -268,8 +268,6 @@
set_fields(NULL, 0);
set_constants(NULL);
set_class_loader_data(NULL);
- set_protection_domain(NULL);
- set_signers(NULL);
set_source_file_name(NULL);
set_source_debug_extension(NULL, 0);
set_array_name(NULL);
@@ -279,7 +277,6 @@
set_is_marked_dependent(false);
set_init_state(InstanceKlass::allocated);
set_init_thread(NULL);
- set_init_lock(NULL);
set_reference_type(rt);
set_oop_map_cache(NULL);
set_jni_ids(NULL);
@@ -408,12 +405,6 @@
}
set_inner_classes(NULL);
- // Null out Java heap objects, although these won't be walked to keep
- // alive once this InstanceKlass is deallocated.
- set_protection_domain(NULL);
- set_signers(NULL);
- set_init_lock(NULL);
-
// We should deallocate the Annotations instance
MetadataFactory::free_metadata(loader_data, annotations());
set_annotations(NULL);
@@ -451,6 +442,24 @@
}
}
+// JVMTI spec thinks there are signers and protection domain in the
+// instanceKlass. These accessors pretend these fields are there.
+// The hprof specification also thinks these fields are in InstanceKlass.
+oop InstanceKlass::protection_domain() const {
+ // return the protection_domain from the mirror
+ return java_lang_Class::protection_domain(java_mirror());
+}
+
+// To remove these from requires an incompatible change and CCC request.
+objArrayOop InstanceKlass::signers() const {
+ // return the signers from the mirror
+ return java_lang_Class::signers(java_mirror());
+}
+
+volatile oop InstanceKlass::init_lock() const {
+ // return the init lock from the mirror
+ return java_lang_Class::init_lock(java_mirror());
+}
void InstanceKlass::eager_initialize_impl(instanceKlassHandle this_oop) {
EXCEPTION_MARK;
@@ -1883,16 +1892,6 @@
// Garbage collection
-void InstanceKlass::oops_do(OopClosure* cl) {
- Klass::oops_do(cl);
-
- cl->do_oop(adr_protection_domain());
- cl->do_oop(adr_signers());
- cl->do_oop(adr_init_lock());
-
- // Don't walk the arrays since they are walked from the ClassLoaderData objects.
-}
-
#ifdef ASSERT
template <class T> void assert_is_in(T *p) {
T heap_oop = oopDesc::load_heap_oop(p);
@@ -2241,9 +2240,6 @@
m->remove_unshareable_info();
}
- // Need to reinstate when reading back the class.
- set_init_lock(NULL);
-
// do array classes also.
array_klasses_do(remove_unshareable_in_class);
}
@@ -2275,13 +2271,6 @@
ik->itable()->initialize_itable(false, CHECK);
}
- // Allocate a simple java object for a lock.
- // This needs to be a java object because during class initialization
- // it can be held across a java call.
- typeArrayOop r = oopFactory::new_typeArray(T_INT, 0, CHECK);
- Handle h(THREAD, (oop)r);
- ik->set_init_lock(h());
-
// restore constant pool resolved references
ik->constants()->restore_unshareable_info(CHECK);
@@ -2331,10 +2320,15 @@
FreeHeap(jmeths);
}
- MemberNameTable* mnt = member_names();
- if (mnt != NULL) {
- delete mnt;
- set_member_names(NULL);
+ // Deallocate MemberNameTable
+ {
+ Mutex* lock_or_null = SafepointSynchronize::is_at_safepoint() ? NULL : MemberNameTable_lock;
+ MutexLockerEx ml(lock_or_null, Mutex::_no_safepoint_check_flag);
+ MemberNameTable* mnt = member_names();
+ if (mnt != NULL) {
+ delete mnt;
+ set_member_names(NULL);
+ }
}
int* indices = methods_cached_itable_indices_acquire();
@@ -2765,15 +2759,28 @@
return NULL;
}
-void InstanceKlass::add_member_name(Handle mem_name) {
+void InstanceKlass::add_member_name(int index, Handle mem_name) {
jweak mem_name_wref = JNIHandles::make_weak_global(mem_name);
MutexLocker ml(MemberNameTable_lock);
+ assert(0 <= index && index < idnum_allocated_count(), "index is out of bounds");
DEBUG_ONLY(No_Safepoint_Verifier nsv);
if (_member_names == NULL) {
- _member_names = new (ResourceObj::C_HEAP, mtClass) MemberNameTable();
+ _member_names = new (ResourceObj::C_HEAP, mtClass) MemberNameTable(idnum_allocated_count());
}
- _member_names->add_member_name(mem_name_wref);
+ _member_names->add_member_name(index, mem_name_wref);
+}
+
+oop InstanceKlass::get_member_name(int index) {
+ MutexLocker ml(MemberNameTable_lock);
+ assert(0 <= index && index < idnum_allocated_count(), "index is out of bounds");
+ DEBUG_ONLY(No_Safepoint_Verifier nsv);
+
+ if (_member_names == NULL) {
+ return NULL;
+ }
+ oop mem_name =_member_names->get_member_name(index);
+ return mem_name;
}
// -----------------------------------------------------------------------------------------------------
@@ -2836,10 +2843,7 @@
class_loader_data()->print_value_on(st);
st->cr();
}
- st->print(BULLET"protection domain: "); ((InstanceKlass*)this)->protection_domain()->print_value_on(st); st->cr();
st->print(BULLET"host class: "); host_klass()->print_value_on_maybe_null(st); st->cr();
- st->print(BULLET"signers: "); signers()->print_value_on(st); st->cr();
- st->print(BULLET"init_lock: "); ((oop)_init_lock)->print_value_on(st); st->cr();
if (source_file_name() != NULL) {
st->print(BULLET"source file: ");
source_file_name()->print_value_on(st);
@@ -3040,7 +3044,6 @@
n += (sz->_method_ordering_bytes = sz->count_array(method_ordering()));
n += (sz->_local_interfaces_bytes = sz->count_array(local_interfaces()));
n += (sz->_transitive_interfaces_bytes = sz->count_array(transitive_interfaces()));
- n += (sz->_signers_bytes = sz->count_array(signers()));
n += (sz->_fields_bytes = sz->count_array(fields()));
n += (sz->_inner_classes_bytes = sz->count_array(inner_classes()));
sz->_ro_bytes += n;
@@ -3206,17 +3209,11 @@
guarantee(constants()->is_metadata(), "should be in metaspace");
guarantee(constants()->is_constantPool(), "should be constant pool");
}
- if (protection_domain() != NULL) {
- guarantee(protection_domain()->is_oop(), "should be oop");
- }
const Klass* host = host_klass();
if (host != NULL) {
guarantee(host->is_metadata(), "should be in metaspace");
guarantee(host->is_klass(), "should be klass");
}
- if (signers() != NULL) {
- guarantee(signers()->is_objArray(), "should be obj array");
- }
}
void InstanceKlass::oop_verify_on(oop obj, outputStream* st) {
--- a/hotspot/src/share/vm/oops/instanceKlass.hpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/oops/instanceKlass.hpp Fri May 31 09:55:35 2013 +0200
@@ -58,8 +58,6 @@
// [fields ]
// [constants ]
// [class loader ]
-// [protection domain ]
-// [signers ]
// [source file name ]
// [inner classes ]
// [static field size ]
@@ -180,16 +178,6 @@
static volatile int _total_instanceKlass_count;
protected:
- // Protection domain.
- oop _protection_domain;
- // Class signers.
- objArrayOop _signers;
- // Lock for (1) initialization; (2) access to the ConstantPool of this class.
- // Must be one per class and it has to be a VM internal object so java code
- // cannot lock it (like the mirror).
- // It has to be an object not a Mutex because it's held through java calls.
- volatile oop _init_lock;
-
// Annotations for this class
Annotations* _annotations;
// Array classes holding elements of this class.
@@ -527,8 +515,10 @@
void set_constants(ConstantPool* c) { _constants = c; }
// protection domain
- oop protection_domain() { return _protection_domain; }
- void set_protection_domain(oop pd) { klass_oop_store(&_protection_domain, pd); }
+ oop protection_domain() const;
+
+ // signers
+ objArrayOop signers() const;
// host class
Klass* host_klass() const {
@@ -575,10 +565,6 @@
}
}
- // signers
- objArrayOop signers() const { return _signers; }
- void set_signers(objArrayOop s) { klass_oop_store((oop*)&_signers, s); }
-
// source file name
Symbol* source_file_name() const { return _source_file_name; }
void set_source_file_name(Symbol* n);
@@ -912,8 +898,6 @@
Method* method_at_itable(Klass* holder, int index, TRAPS);
// Garbage collection
- virtual void oops_do(OopClosure* cl);
-
void oop_follow_contents(oop obj);
int oop_adjust_pointers(oop obj);
@@ -999,14 +983,12 @@
// Lock during initialization
public:
- volatile oop init_lock() const {return _init_lock; }
+ // Lock for (1) initialization; (2) access to the ConstantPool of this class.
+ // Must be one per class and it has to be a VM internal object so java code
+ // cannot lock it (like the mirror).
+ // It has to be an object not a Mutex because it's held through java calls.
+ volatile oop init_lock() const;
private:
- void set_init_lock(oop value) { klass_oop_store(&_init_lock, value); }
-
- // Offsets for memory management
- oop* adr_protection_domain() const { return (oop*)&this->_protection_domain;}
- oop* adr_signers() const { return (oop*)&this->_signers;}
- oop* adr_init_lock() const { return (oop*)&this->_init_lock;}
// Static methods that are used to implement member methods where an exposed this pointer
// is needed due to possible GCs
@@ -1040,7 +1022,8 @@
// JSR-292 support
MemberNameTable* member_names() { return _member_names; }
void set_member_names(MemberNameTable* member_names) { _member_names = member_names; }
- void add_member_name(Handle member_name);
+ void add_member_name(int index, Handle member_name);
+ oop get_member_name(int index);
public:
// JVMTI support
--- a/hotspot/src/share/vm/oops/klass.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/oops/klass.cpp Fri May 31 09:55:35 2013 +0200
@@ -511,8 +511,9 @@
// (same order as class file parsing)
loader_data->add_class(this);
- // Recreate the class mirror
- java_lang_Class::create_mirror(this, CHECK);
+ // Recreate the class mirror. The protection_domain is always null for
+ // boot loader, for now.
+ java_lang_Class::create_mirror(this, Handle(NULL), CHECK);
}
Klass* Klass::array_klass_or_null(int rank) {
--- a/hotspot/src/share/vm/oops/klass.hpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/oops/klass.hpp Fri May 31 09:55:35 2013 +0200
@@ -445,7 +445,7 @@
Klass* array_klass_or_null(int rank);
Klass* array_klass_or_null();
- virtual oop protection_domain() { return NULL; }
+ virtual oop protection_domain() const = 0;
oop class_loader() const;
--- a/hotspot/src/share/vm/oops/objArrayKlass.hpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/oops/objArrayKlass.hpp Fri May 31 09:55:35 2013 +0200
@@ -75,7 +75,7 @@
void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS);
// Compute protection domain
- oop protection_domain() { return bottom_klass()->protection_domain(); }
+ oop protection_domain() const { return bottom_klass()->protection_domain(); }
private:
// Either oop or narrowOop depending on UseCompressedOops.
--- a/hotspot/src/share/vm/oops/typeArrayKlass.hpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/oops/typeArrayKlass.hpp Fri May 31 09:55:35 2013 +0200
@@ -67,6 +67,8 @@
typeArrayOop allocate(int length, TRAPS) { return allocate_common(length, true, THREAD); }
oop multi_allocate(int rank, jint* sizes, TRAPS);
+ oop protection_domain() const { return NULL; }
+
// Copying
void copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS);
--- a/hotspot/src/share/vm/prims/forte.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/prims/forte.cpp Fri May 31 09:55:35 2013 +0200
@@ -35,6 +35,19 @@
#include "runtime/vframe.hpp"
#include "runtime/vframeArray.hpp"
+// call frame copied from old .h file and renamed
+typedef struct {
+ jint lineno; // line number in the source file
+ jmethodID method_id; // method executed in this frame
+} ASGCT_CallFrame;
+
+// call trace copied from old .h file and renamed
+typedef struct {
+ JNIEnv *env_id; // Env where trace was recorded
+ jint num_frames; // number of frames in this trace
+ ASGCT_CallFrame *frames; // frames
+} ASGCT_CallTrace;
+
// These name match the names reported by the forte quality kit
enum {
ticks_no_Java_frame = 0,
@@ -50,6 +63,8 @@
ticks_safepoint = -10
};
+#if INCLUDE_JVMTI
+
//-------------------------------------------------------
// Native interfaces for use by Forte tools.
@@ -360,20 +375,6 @@
}
-
-// call frame copied from old .h file and renamed
-typedef struct {
- jint lineno; // line number in the source file
- jmethodID method_id; // method executed in this frame
-} ASGCT_CallFrame;
-
-// call trace copied from old .h file and renamed
-typedef struct {
- JNIEnv *env_id; // Env where trace was recorded
- jint num_frames; // number of frames in this trace
- ASGCT_CallFrame *frames; // frames
-} ASGCT_CallTrace;
-
static void forte_fill_call_trace_given_top(JavaThread* thd,
ASGCT_CallTrace* trace,
int depth,
@@ -634,3 +635,12 @@
pointer_delta(end, start, sizeof(jbyte)), 0, NULL);
#endif // !_WINDOWS && !IA64
}
+
+#else // INCLUDE_JVMTI
+extern "C" {
+ JNIEXPORT
+ void AsyncGetCallTrace(ASGCT_CallTrace *trace, jint depth, void* ucontext) {
+ trace->num_frames = ticks_no_class_load; // -1
+ }
+}
+#endif // INCLUDE_JVMTI
--- a/hotspot/src/share/vm/prims/jvm.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/prims/jvm.cpp Fri May 31 09:55:35 2013 +0200
@@ -1072,11 +1072,7 @@
return NULL;
}
- Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
- objArrayOop signers = NULL;
- if (k->oop_is_instance()) {
- signers = InstanceKlass::cast(k)->signers();
- }
+ objArrayOop signers = java_lang_Class::signers(JNIHandles::resolve_non_null(cls));
// If there are no signers set in the class, or if the class
// is an array, return NULL.
@@ -1102,7 +1098,7 @@
// be called with an array. Only the bootstrap loader creates arrays.
Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
if (k->oop_is_instance()) {
- InstanceKlass::cast(k)->set_signers(objArrayOop(JNIHandles::resolve(signers)));
+ java_lang_Class::set_signers(k->java_mirror(), objArrayOop(JNIHandles::resolve(signers)));
}
}
JVM_END
@@ -1119,8 +1115,8 @@
return NULL;
}
- Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls));
- return (jobject) JNIHandles::make_local(env, k->protection_domain());
+ oop pd = java_lang_Class::protection_domain(JNIHandles::resolve(cls));
+ return (jobject) JNIHandles::make_local(env, pd);
JVM_END
@@ -1139,7 +1135,7 @@
if (k->oop_is_instance()) {
oop pd = JNIHandles::resolve(protection_domain);
assert(pd == NULL || pd->is_oop(), "just checking");
- InstanceKlass::cast(k)->set_protection_domain(pd);
+ java_lang_Class::set_protection_domain(k->java_mirror(), pd);
}
}
JVM_END
--- a/hotspot/src/share/vm/prims/methodHandles.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/prims/methodHandles.cpp Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -232,7 +232,8 @@
// This is done eagerly, since it is readily available without
// constructing any new objects.
// TO DO: maybe intern mname_oop
- m->method_holder()->add_member_name(mname);
+ m->method_holder()->add_member_name(m->method_idnum(), mname);
+
return mname();
}
@@ -301,7 +302,6 @@
// Although the fieldDescriptor::_index would also identify the field,
// we do not use it, because it is harder to decode.
// TO DO: maybe intern mname_oop
- InstanceKlass::cast(field_holder())->add_member_name(mname);
return mname();
}
@@ -943,7 +943,8 @@
// MemberNameTable
//
-MemberNameTable::MemberNameTable() : GrowableArray<jweak>(10, true) {
+MemberNameTable::MemberNameTable(int methods_cnt)
+ : GrowableArray<jweak>(methods_cnt, true) {
assert_locked_or_safepoint(MemberNameTable_lock);
}
@@ -957,29 +958,18 @@
}
}
-// Return entry index if found, return -1 otherwise.
-int MemberNameTable::find_member_name(oop mem_name) {
+void MemberNameTable::add_member_name(int index, jweak mem_name_wref) {
assert_locked_or_safepoint(MemberNameTable_lock);
- int len = this->length();
-
- for (int idx = 0; idx < len; idx++) {
- jweak ref = this->at(idx);
- oop entry = JNIHandles::resolve(ref);
- if (entry == mem_name) {
- return idx;
- }
- }
- return -1;
+ this->at_put_grow(index, mem_name_wref);
}
-void MemberNameTable::add_member_name(jweak mem_name_wref) {
+// Return a member name oop or NULL.
+oop MemberNameTable::get_member_name(int index) {
assert_locked_or_safepoint(MemberNameTable_lock);
- oop mem_name = JNIHandles::resolve(mem_name_wref);
- // Each member name may appear just once: add only if not found
- if (find_member_name(mem_name) == -1) {
- this->append(mem_name_wref);
- }
+ jweak ref = this->at(index);
+ oop mem_name = JNIHandles::resolve(ref);
+ return mem_name;
}
#if INCLUDE_JVMTI
--- a/hotspot/src/share/vm/prims/methodHandles.hpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/prims/methodHandles.hpp Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -219,7 +219,6 @@
}
};
-
//------------------------------------------------------------------------------
// MethodHandlesAdapterGenerator
//
@@ -233,13 +232,13 @@
//------------------------------------------------------------------------------
// MemberNameTable
//
+
class MemberNameTable : public GrowableArray<jweak> {
public:
- MemberNameTable();
+ MemberNameTable(int methods_cnt);
~MemberNameTable();
- void add_member_name(jweak mem_name_ref);
- private:
- int find_member_name(oop mem_name);
+ void add_member_name(int index, jweak mem_name_ref);
+ oop get_member_name(int index);
#if INCLUDE_JVMTI
public:
--- a/hotspot/src/share/vm/prims/whitebox.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/prims/whitebox.cpp Fri May 31 09:55:35 2013 +0200
@@ -37,6 +37,7 @@
#include "runtime/os.hpp"
#include "utilities/debug.hpp"
#include "utilities/macros.hpp"
+#include "utilities/exceptions.hpp"
#if INCLUDE_ALL_GCS
#include "gc_implementation/g1/concurrentMark.hpp"
@@ -330,8 +331,18 @@
WB_END
-WB_ENTRY(jlong, WB_ReserveMemory(JNIEnv* env, jobject o, jlong size))
- return (jlong)os::reserve_memory(size, NULL, 0);
+WB_ENTRY(void, WB_ReadReservedMemory(JNIEnv* env, jobject o))
+ // static+volatile in order to force the read to happen
+ // (not be eliminated by the compiler)
+ static char c;
+ static volatile char* p;
+
+ p = os::reserve_memory(os::vm_allocation_granularity(), NULL, 0);
+ if (p == NULL) {
+ THROW_MSG(vmSymbols::java_lang_OutOfMemoryError(), "Failed to reserve memory");
+ }
+
+ c = *p;
WB_END
//Some convenience methods to deal with objects from java
@@ -437,7 +448,7 @@
{CC"isInStringTable", CC"(Ljava/lang/String;)Z", (void*)&WB_IsInStringTable },
{CC"fullGC", CC"()V", (void*)&WB_FullGC },
- {CC"reserveMemory", CC"(J)J", (void*)&WB_ReserveMemory },
+ {CC"readReservedMemory", CC"()V", (void*)&WB_ReadReservedMemory },
};
#undef CC
--- a/hotspot/src/share/vm/runtime/vmStructs.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/runtime/vmStructs.cpp Fri May 31 09:55:35 2013 +0200
@@ -292,10 +292,8 @@
nonstatic_field(InstanceKlass, _transitive_interfaces, Array<Klass*>*) \
nonstatic_field(InstanceKlass, _fields, Array<u2>*) \
nonstatic_field(InstanceKlass, _java_fields_count, u2) \
- nonstatic_field(InstanceKlass, _constants, ConstantPool*) \
+ nonstatic_field(InstanceKlass, _constants, ConstantPool*) \
nonstatic_field(InstanceKlass, _class_loader_data, ClassLoaderData*) \
- nonstatic_field(InstanceKlass, _protection_domain, oop) \
- nonstatic_field(InstanceKlass, _signers, objArrayOop) \
nonstatic_field(InstanceKlass, _source_file_name, Symbol*) \
nonstatic_field(InstanceKlass, _source_debug_extension, char*) \
nonstatic_field(InstanceKlass, _inner_classes, Array<jushort>*) \
--- a/hotspot/src/share/vm/services/memTracker.cpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/services/memTracker.cpp Fri May 31 09:55:35 2013 +0200
@@ -34,6 +34,7 @@
#include "services/memReporter.hpp"
#include "services/memTracker.hpp"
#include "utilities/decoder.hpp"
+#include "utilities/defaultStream.hpp"
#include "utilities/globalDefinitions.hpp"
bool NMT_track_callsite = false;
@@ -77,7 +78,15 @@
if (strcmp(option_line, "=summary") == 0) {
_tracking_level = NMT_summary;
} else if (strcmp(option_line, "=detail") == 0) {
- _tracking_level = NMT_detail;
+ // detail relies on a stack-walking ability that may not
+ // be available depending on platform and/or compiler flags
+ if (PLATFORM_NMT_DETAIL_SUPPORTED) {
+ _tracking_level = NMT_detail;
+ } else {
+ jio_fprintf(defaultStream::error_stream(),
+ "NMT detail is not supported on this platform. Using NMT summary instead.");
+ _tracking_level = NMT_summary;
+ }
} else if (strcmp(option_line, "=off") != 0) {
vm_exit_during_initialization("Syntax error, expecting -XX:NativeMemoryTracking=[off|summary|detail]", NULL);
}
--- a/hotspot/src/share/vm/utilities/globalDefinitions.hpp Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp Fri May 31 09:55:35 2013 +0200
@@ -380,6 +380,14 @@
# include "globalDefinitions_ppc.hpp"
#endif
+/*
+ * If a platform does not support NMT_detail
+ * the platform specific globalDefinitions (above)
+ * can set PLATFORM_NMT_DETAIL_SUPPORTED to false
+ */
+#ifndef PLATFORM_NMT_DETAIL_SUPPORTED
+#define PLATFORM_NMT_DETAIL_SUPPORTED true
+#endif
// The byte alignment to be used by Arena::Amalloc. See bugid 4169348.
// Note: this value must be a power of 2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/Metaspace/FragmentMetaspace.java Fri May 31 09:55:35 2013 +0200
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ */
+
+/**
+ * @test
+ * @library /runtime/testlibrary
+ * @build GeneratedClassLoader
+ * @run main/othervm/timeout=200 FragmentMetaspace
+ */
+
+import java.io.IOException;
+
+/**
+ * Test that tries to fragment the native memory used by class loaders.
+ * This test creates class loaders that load classes of increasing size for every
+ * iteration. By increasing the size of the class meta data needed for every iteration
+ * we stress the subsystem for allocating native memory for meta data.
+ */
+public class FragmentMetaspace {
+
+ public static void main(String... args) {
+ runGrowing(Long.valueOf(System.getProperty("time", "80000")));
+ // try to clean up and unload classes to decrease
+ // class verification time in debug vm
+ System.gc();
+ }
+
+ private static void runGrowing(long time) {
+ long startTime = System.currentTimeMillis();
+ for (int i = 0; System.currentTimeMillis() < startTime + time; ++i) {
+ try {
+ GeneratedClassLoader gcl = new GeneratedClassLoader();
+
+ Class<?> c = gcl.getGeneratedClasses(i, 100)[0];
+ c.newInstance();
+ c = null;
+
+ gcl = null;
+ } catch (IOException|InstantiationException|IllegalAccessException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/Metaspace/FragmentMetaspaceSimple.java Fri May 31 09:55:35 2013 +0200
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+
+/**
+ * @test
+ * @library /runtime/testlibrary
+ * @library classes
+ * @build test.Empty ClassUnloadCommon
+ * @run main/othervm/timeout=200 FragmentMetaspaceSimple
+ */
+
+import java.util.ArrayList;
+
+/**
+ * Test that tries to fragment the native memory used by class loaders.
+ * Keeps every other class loader alive in order to fragment the memory space
+ * used to store classes and meta data. Since the memory is probably allocated in
+ * chunks per class loader this will cause a lot of fragmentation if not handled
+ * properly since every other chunk will be unused.
+ */
+public class FragmentMetaspaceSimple {
+ public static void main(String... args) {
+ runSimple(Long.valueOf(System.getProperty("time", "80000")));
+ System.gc();
+ }
+
+ private static void runSimple(long time) {
+ long startTime = System.currentTimeMillis();
+ ArrayList<ClassLoader> cls = new ArrayList<>();
+ for (int i = 0; System.currentTimeMillis() < startTime + time; ++i) {
+ ClassLoader ldr = ClassUnloadCommon.newClassLoader();
+ if (i % 1000 == 0) {
+ cls.clear();
+ }
+ // only keep every other class loader alive
+ if (i % 2 == 1) {
+ cls.add(ldr);
+ }
+ Class<?> c = null;
+ try {
+ c = ldr.loadClass("test.Empty");
+ } catch (ClassNotFoundException ex) {
+ throw new RuntimeException(ex);
+ }
+ c = null;
+ }
+ cls = null;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/Metaspace/classes/test/Empty.java Fri May 31 09:55:35 2013 +0200
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+package test;
+
+public class Empty {
+public String toString() { return "nothing"; }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/contended/HasNonStatic.java Fri May 31 09:55:35 2013 +0200
@@ -0,0 +1,75 @@
+/*
+ * 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.
+ */
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.lang.Class;
+import java.lang.String;
+import java.lang.System;
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CyclicBarrier;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import sun.misc.Unsafe;
+import sun.misc.Contended;
+
+/*
+ * @test
+ * @bug 8015270
+ * @summary \@Contended: fix multiple issues in the layout code
+ *
+ * @run main/othervm -XX:-RestrictContended HasNonStatic
+ */
+public class HasNonStatic {
+
+ public static void main(String[] args) throws Exception {
+ R1 r1 = new R1();
+ R2 r2 = new R2();
+ R3 r3 = new R3();
+ R4 r4 = new R4();
+ }
+
+ public static class R1 {
+ @Contended
+ Object o;
+ }
+
+ @Contended
+ public static class R2 {
+ Object o;
+ }
+
+ @Contended
+ public static class R3 {
+ }
+
+ public static class R4 extends R3 {
+ }
+
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/contended/OopMaps.java Fri May 31 09:55:35 2013 +0200
@@ -0,0 +1,166 @@
+/*
+ * 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.
+ */
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.lang.Class;
+import java.lang.String;
+import java.lang.System;
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CyclicBarrier;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import sun.misc.Unsafe;
+import sun.misc.Contended;
+
+/*
+ * @test
+ * @bug 8015270
+ * @bug 8015493
+ * @summary \@Contended: fix multiple issues in the layout code
+ *
+ * @run main/othervm -XX:-RestrictContended -XX:ContendedPaddingWidth=128 -Xmx128m OopMaps
+ */
+public class OopMaps {
+
+ public static final int COUNT = 10000;
+
+ public static void main(String[] args) throws Exception {
+ Object o01 = new Object();
+ Object o02 = new Object();
+ Object o03 = new Object();
+ Object o04 = new Object();
+ Object o05 = new Object();
+ Object o06 = new Object();
+ Object o07 = new Object();
+ Object o08 = new Object();
+ Object o09 = new Object();
+ Object o10 = new Object();
+ Object o11 = new Object();
+ Object o12 = new Object();
+ Object o13 = new Object();
+ Object o14 = new Object();
+
+ R1[] rs = new R1[COUNT];
+
+ for (int i = 0; i < COUNT; i++) {
+ R1 r1 = new R1();
+ r1.o01 = o01;
+ r1.o02 = o02;
+ r1.o03 = o03;
+ r1.o04 = o04;
+ r1.o05 = o05;
+ r1.o06 = o06;
+ r1.o07 = o07;
+ r1.o08 = o08;
+ r1.o09 = o09;
+ r1.o10 = o10;
+ r1.o11 = o11;
+ r1.o12 = o12;
+ r1.o13 = o13;
+ r1.o14 = o14;
+ r1.i1 = 1;
+ r1.i2 = 2;
+ r1.i3 = 3;
+ r1.i4 = 4;
+ rs[i] = r1;
+ }
+
+ System.gc();
+
+ for (int i = 0; i < COUNT; i++) {
+ R1 r1 = rs[i];
+ if (r1.o01 != o01) throw new Error("Test Error: o01");
+ if (r1.o02 != o02) throw new Error("Test Error: o02");
+ if (r1.o03 != o03) throw new Error("Test Error: o03");
+ if (r1.o04 != o04) throw new Error("Test Error: o04");
+ if (r1.o05 != o05) throw new Error("Test Error: o05");
+ if (r1.o06 != o06) throw new Error("Test Error: o06");
+ if (r1.o07 != o07) throw new Error("Test Error: o07");
+ if (r1.o08 != o08) throw new Error("Test Error: o08");
+ if (r1.o09 != o09) throw new Error("Test Error: o09");
+ if (r1.o10 != o10) throw new Error("Test Error: o10");
+ if (r1.o11 != o11) throw new Error("Test Error: o11");
+ if (r1.o12 != o12) throw new Error("Test Error: o12");
+ if (r1.o13 != o13) throw new Error("Test Error: o13");
+ if (r1.o14 != o14) throw new Error("Test Error: o14");
+ if (r1.i1 != 1) throw new Error("Test Error: i1");
+ if (r1.i2 != 2) throw new Error("Test Error: i2");
+ if (r1.i3 != 3) throw new Error("Test Error: i3");
+ if (r1.i4 != 4) throw new Error("Test Error: i4");
+ }
+ }
+
+ public static class R0 {
+ int i1;
+ int i2;
+
+ Object o01;
+ Object o02;
+
+ @Contended
+ Object o03;
+
+ @Contended
+ Object o04;
+
+ @Contended
+ Object o05;
+
+ @Contended
+ Object o06;
+
+ @Contended
+ Object o07;
+ }
+
+ public static class R1 extends R0 {
+ int i3;
+ int i4;
+
+ Object o08;
+ Object o09;
+
+ @Contended
+ Object o10;
+
+ @Contended
+ Object o11;
+
+ @Contended
+ Object o12;
+
+ @Contended
+ Object o13;
+
+ @Contended
+ Object o14;
+ }
+
+}
+
--- a/hotspot/test/runtime/memory/ReserveMemory.java Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/test/runtime/memory/ReserveMemory.java Fri May 31 09:55:35 2013 +0200
@@ -34,29 +34,20 @@
import com.oracle.java.testlibrary.*;
-import java.lang.reflect.Field;
import sun.hotspot.WhiteBox;
-import sun.misc.Unsafe;
public class ReserveMemory {
- private static Unsafe getUnsafe() throws Exception {
- Field f = Unsafe.class.getDeclaredField("theUnsafe");
- f.setAccessible(true);
- return (Unsafe)f.get(null);
- }
-
private static boolean isWindows() {
return System.getProperty("os.name").toLowerCase().startsWith("win");
}
+ private static boolean isOsx() {
+ return System.getProperty("os.name").toLowerCase().startsWith("mac");
+ }
+
public static void main(String args[]) throws Exception {
if (args.length > 0) {
- long address = WhiteBox.getWhiteBox().reserveMemory(4096);
-
- System.out.println("Reserved memory at address: 0x" + Long.toHexString(address));
- System.out.println("Will now read from the address, expecting a crash!");
-
- int x = getUnsafe().getInt(address);
+ WhiteBox.getWhiteBox().readReservedMemory();
throw new Exception("Read of reserved/uncommitted memory unexpectedly succeeded, expected crash!");
}
@@ -71,6 +62,8 @@
OutputAnalyzer output = new OutputAnalyzer(pb.start());
if (isWindows()) {
output.shouldContain("EXCEPTION_ACCESS_VIOLATION");
+ } else if (isOsx()) {
+ output.shouldContain("SIGBUS");
} else {
output.shouldContain("SIGSEGV");
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hotspot/test/runtime/testlibrary/GeneratedClassLoader.java Fri May 31 09:55:35 2013 +0200
@@ -0,0 +1,202 @@
+/*
+ * 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.
+ */
+
+import java.io.DataInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import javax.tools.JavaCompiler;
+import javax.tools.ToolProvider;
+
+/**
+ * A class loader that generates new classes.
+ * The generated classes are made by first emitting java sources with nested
+ * static classes, these are then compiled and the class files are read back.
+ * Some efforts are made to make the class instances unique and of not insignificant
+ * size.
+ */
+public class GeneratedClassLoader extends ClassLoader {
+ /**
+ * Holds a pair of class bytecodes and class name (for use with defineClass).
+ */
+ private static class GeneratedClass {
+ public byte[] bytes;
+ public String name;
+ public GeneratedClass(byte[] bytes, String name) {
+ this.bytes = bytes; this.name = name;
+ }
+ }
+
+ /**
+ * Used to uniquely name every class generated.
+ */
+ private static int count = 0;
+ /**
+ * Used to enable/disable keeping the class files and java sources for
+ * the generated classes.
+ */
+ private static boolean deleteFiles = Boolean.parseBoolean(
+ System.getProperty("GeneratedClassLoader.deleteFiles", "true"));
+
+ private static String bigstr =
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
+ + "In facilisis scelerisque vehicula. Donec congue nisi a "
+ + "leo posuere placerat lobortis felis ultrices. Pellentesque "
+ + "habitant morbi tristique senectus et netus et malesuada "
+ + "fames ac turpis egestas. Nam tristique velit at felis "
+ + "iaculis at tempor sem vestibulum. Sed adipiscing lectus "
+ + "non mi molestie sagittis. Morbi eu purus urna. Nam tempor "
+ + "tristique massa eget semper. Mauris cursus, nulla et ornare "
+ + "vehicula, leo dolor scelerisque metus, sit amet rutrum erat "
+ + "sapien quis dui. Nullam eleifend risus et velit accumsan sed "
+ + "suscipit felis pulvinar. Nullam faucibus suscipit gravida. "
+ + "Pellentesque habitant morbi tristique senectus et netus et "
+ + "malesuada fames ac turpis egestas. Nullam ut massa augue, "
+ + "nec viverra mauris.";
+
+ private static int getNextCount() {
+ return count++;
+ }
+
+ ////// end statics
+
+ private JavaCompiler javac;
+ private String nameBase;
+
+ public GeneratedClassLoader() {
+ javac = ToolProvider.getSystemJavaCompiler();
+ nameBase = "TestSimpleClass";
+ }
+
+ private long getBigValue(int which) {
+ // > 65536 is too large to encode in the bytecode
+ // so this will force us to emit a constant pool entry for this int
+ return (long)which + 65537;
+ }
+
+ private String getBigString(int which) {
+ return bigstr + which;
+ }
+
+ private String getClassName(int count) {
+ return nameBase + count;
+ }
+
+ private String generateSource(int count, int sizeFactor, int numClasses) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("public class ").append(getClassName(count)).append("{\n");
+ for (int j = 0; j < numClasses; ++j) {
+ sb.append("public static class ")
+ .append("Class")
+ .append(j)
+ .append("{\n");
+ for (int i = 0; i < sizeFactor; ++i) {
+ int value = i;
+ sb.append("private long field")
+ .append(i).append(" = ")
+ .append(getBigValue(value++))
+ .append(";\n");
+ sb.append("public long method")
+ .append(i)
+ .append("() {\n");
+ sb.append("return ")
+ .append(getBigValue(value++))
+ .append(";");
+ sb.append("}\n");
+ sb.append("private String str").append(i)
+ .append(" = \"")
+ .append(getBigString(i))
+ .append("\";");
+ }
+ sb.append("\n}");
+ }
+ sb.append("\n}");
+ return sb.toString();
+ }
+
+ private GeneratedClass[] getGeneratedClass(int sizeFactor, int numClasses) throws IOException {
+ int uniqueCount = getNextCount();
+ String src = generateSource(uniqueCount, sizeFactor, numClasses);
+ String className = getClassName(uniqueCount);
+ File file = new File(className + ".java");
+ try (PrintWriter pw = new PrintWriter(new FileWriter(file))) {
+ pw.append(src);
+ pw.flush();
+ }
+ int exitcode = javac.run(null, null, null, file.getCanonicalPath());
+ if (exitcode != 0) {
+ throw new RuntimeException("javac failure when compiling: " +
+ file.getCanonicalPath());
+ } else {
+ if (deleteFiles) {
+ file.delete();
+ }
+ }
+ GeneratedClass[] gc = new GeneratedClass[numClasses];
+ for (int i = 0; i < numClasses; ++i) {
+ String name = className + "$" + "Class" + i;
+ File classFile = new File(name + ".class");
+ byte[] bytes;
+ try (DataInputStream dis = new DataInputStream(new FileInputStream(classFile))) {
+ bytes = new byte[dis.available()];
+ dis.readFully(bytes);
+ }
+ if (deleteFiles) {
+ classFile.delete();
+ }
+ gc[i] = new GeneratedClass(bytes, name);
+ }
+ if (deleteFiles) {
+ new File(className + ".class").delete();
+ }
+ return gc;
+ }
+
+ /**
+ * Generate a single class, compile it and load it.
+ * @param sizeFactor Fuzzy measure of how large the class should be.
+ * @return the Class instance.
+ * @throws IOException
+ */
+ public Class<?> generateClass(int sizeFactor) throws IOException {
+ return getGeneratedClasses(sizeFactor, 1)[0];
+ }
+
+ /**
+ * Generate several classes, compile and load them.
+ * @param sizeFactor Fuzzy measure of how large each class should be.
+ * @param numClasses The number of classes to create
+ * @return an array of the Class instances.
+ * @throws IOException
+ */
+ public Class<?>[] getGeneratedClasses(int sizeFactor, int numClasses) throws IOException {
+ GeneratedClass[] gc = getGeneratedClass(sizeFactor, numClasses);
+ Class<?>[] classes = new Class[numClasses];
+ for (int i = 0; i < numClasses; ++i) {
+ classes[i] = defineClass(gc[i].name, gc[i].bytes, 0 , gc[i].bytes.length);
+ }
+ return classes;
+ }
+}
--- a/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Mon May 27 12:58:42 2013 +0200
+++ b/hotspot/test/testlibrary/whitebox/sun/hotspot/WhiteBox.java Fri May 31 09:55:35 2013 +0200
@@ -115,7 +115,7 @@
public native boolean isInStringTable(String str);
// Memory
- public native long reserveMemory(long size);
+ public native void readReservedMemory();
// force Full GC
public native void fullGC();
--- a/jaxp/.hgtags Mon May 27 12:58:42 2013 +0200
+++ b/jaxp/.hgtags Fri May 31 09:55:35 2013 +0200
@@ -212,3 +212,4 @@
7122f7bb0fcc8a39e5254402119b2ee3fa0ad313 jdk8-b88
893d2ba8bbea3a8d090e51d8eaea285b390789ea jdk8-b89
668acc0e1034bc1bec6d02be92e0dd4a63d0667e jdk8-b90
+e3065fb07877c7e96e8b93416fe2ab9a4c9eb2a5 jdk8-b91
--- a/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java Mon May 27 12:58:42 2013 +0200
+++ b/jaxp/src/com/sun/org/apache/xerces/internal/impl/XMLEntityManager.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2006, 2013 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
*/
/*
--- a/jaxws/.hgtags Mon May 27 12:58:42 2013 +0200
+++ b/jaxws/.hgtags Fri May 31 09:55:35 2013 +0200
@@ -212,3 +212,4 @@
24fa5452e5d4e9df8b85196283275a6ca4b4adb4 jdk8-b88
88838e08e4ef6a254867c8126070a1975683108d jdk8-b89
3e5b9ea5ac35ea7096da484e24a863cf4552179f jdk8-b90
+0bb1a9fa56b037d072efdaae5f5b73a0f23c966c jdk8-b91
--- a/jdk/.hgtags Mon May 27 12:58:42 2013 +0200
+++ b/jdk/.hgtags Fri May 31 09:55:35 2013 +0200
@@ -212,3 +212,4 @@
8dbb4b159e04de3c447c9242c70505e71f8624c7 jdk8-b88
845025546e35519fbb8970e79fc2a834063a5e19 jdk8-b89
c63eda8f63008a4398d2c22ac8d72f7fef6f9238 jdk8-b90
+169451cf0cc53bde5af24f9820ea3f35ec4b4df4 jdk8-b91
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/FillableStringTest.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/FillableStringTest.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/MapTest.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/java/util/stream/test/org/openjdk/tests/java/util/MapTest.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/MethodReferenceTestInstanceMethod.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/MethodReferenceTestInstanceMethod.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/MethodReferenceTestKinds.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/MethodReferenceTestKinds.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/MethodReferenceTestSueCase1.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/MethodReferenceTestSueCase1.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/MethodReferenceTestSueCase2.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/MethodReferenceTestSueCase2.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/MethodReferenceTestSueCase4.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/MethodReferenceTestSueCase4.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/separate/AttributeInjector.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/separate/AttributeInjector.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/separate/ClassFile.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/separate/ClassFile.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/separate/ClassFilePreprocessor.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/separate/ClassFilePreprocessor.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/separate/ClassToInterfaceConverter.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/separate/ClassToInterfaceConverter.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/separate/Compiler.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/separate/Compiler.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/separate/DirectedClassLoader.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/separate/DirectedClassLoader.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/separate/SourceModel.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/separate/SourceModel.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/separate/TestHarness.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/separate/TestHarness.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/vm/DefaultMethodRegressionTests.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/vm/DefaultMethodRegressionTests.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/vm/DefaultMethodsTest.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/vm/DefaultMethodsTest.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/jdk/test/jdk/lambda/vm/InterfaceAccessFlagsTest.java Mon May 27 12:58:42 2013 +0200
+++ b/jdk/test/jdk/lambda/vm/InterfaceAccessFlagsTest.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
--- a/langtools/.hgtags Mon May 27 12:58:42 2013 +0200
+++ b/langtools/.hgtags Fri May 31 09:55:35 2013 +0200
@@ -212,3 +212,4 @@
a1e10f3adc47c8602a72e43a41403a642e73e0b1 jdk8-b88
ec434cfd2752a7742c875c2fe7d556d8b81c0f3a jdk8-b89
e19283cd30a43fca94d8f7639c73ef66db493b1e jdk8-b90
+997c0fae2b12108959387862be54b78ca0ae3fca jdk8-b91
--- a/langtools/makefiles/BuildLangtools.gmk Mon May 27 12:58:42 2013 +0200
+++ b/langtools/makefiles/BuildLangtools.gmk Fri May 31 09:55:35 2013 +0200
@@ -56,7 +56,7 @@
# The compileprops tools compiles a properties file into a resource bundle.
TOOL_COMPILEPROPS_CMD:=$(JAVA) -cp $(LANGTOOLS_OUTPUTDIR)/btclasses compileproperties.CompileProperties -quiet
# Lookup the properties that need to be compiled into resource bundles.
-PROPSOURCES:=$(shell find $(LANGTOOLS_TOPDIR)/src/share/classes -name "*.properties")
+PROPSOURCES:=$(shell $(FIND) $(LANGTOOLS_TOPDIR)/src/share/classes -name "*.properties")
# Strip away prefix and suffix, leaving for example only: "com/sun/tools/javac/resources/javac_zh_CN"
PROPPATHS:=$(patsubst $(LANGTOOLS_TOPDIR)/src/share/classes/%.properties,%,$(PROPSOURCES))
# Generate the list of java files to be created.
@@ -70,13 +70,13 @@
# Now setup the rule for the generation of the resource bundles.
$(LANGTOOLS_OUTPUTDIR)/gensrc/_the_props.d : $(PROPSOURCES) $(BUILD_TOOLS)
- rm -rf $(@D)/*
- mkdir -p $(@D) $(PROPDIRS)
- printf "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" > $(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/javah/resources/version.properties
- printf "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" > $(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/javap/resources/version.properties
- printf "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" > $(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/javac/resources/version.properties
- printf "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" > $(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/jdeps/resources/version.properties
- echo Compiling $(words $(PROPSOURCES) v1 v2 v3) properties into resource bundles
+ $(RM) -r $(@D)/*
+ $(MKDIR) -p $(@D) $(PROPDIRS)
+ $(PRINTF) "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" > $(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/javah/resources/version.properties
+ $(PRINTF) "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" > $(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/javap/resources/version.properties
+ $(PRINTF) "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" > $(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/javac/resources/version.properties
+ $(PRINTF) "jdk=$(JDK_VERSION)\nfull=$(FULL_VERSION)\nrelease=$(RELEASE)\n" > $(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/jdeps/resources/version.properties
+ $(ECHO) Compiling $(words $(PROPSOURCES) v1 v2 v3) properties into resource bundles
$(TOOL_COMPILEPROPS_CMD) $(PROPCMDLINE) \
-compile $(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/javah/resources/version.properties \
$(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/javah/resources/version.java \
@@ -90,7 +90,7 @@
-compile $(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/jdeps/resources/version.properties \
$(LANGTOOLS_OUTPUTDIR)/gensrc/com/sun/tools/jdeps/resources/version.java \
java.util.ListResourceBundle
- echo PROPS_ARE_CREATED=yes > $@
+ $(ECHO) PROPS_ARE_CREATED=yes > $@
# Trigger the generation of the resource bundles. After the resource bundles have
# been compiled, then the makefile will restart and the newly created java files
@@ -134,19 +134,19 @@
$(LANGTOOLS_OUTPUTDIR)/genstubs/_the_stubs.d : $(STUBSOURCES) $(BUILD_TOOLS) \
$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar \
$(LANGTOOLS_OUTPUTDIR)/gensrc/_the_props.d
- mkdir -p $(@D)
- mkdir -p $(LANGTOOLS_OUTPUTDIR)/tmpstubs
- echo $(LOG_INFO) Generating stubs from JDK sources.
- ($(TOOL_GENSTUBS_CMD) -s $(LANGTOOLS_OUTPUTDIR)/tmpstubs -sourcepath $(JDKS) $(STUBCLASSES) && echo STUBS_ARE_CREATED=yes > $@)
+ $(MKDIR) -p $(@D)
+ $(MKDIR) -p $(LANGTOOLS_OUTPUTDIR)/tmpstubs
+ $(ECHO) $(LOG_INFO) Generating stubs from JDK sources.
+ ($(TOOL_GENSTUBS_CMD) -s $(LANGTOOLS_OUTPUTDIR)/tmpstubs -sourcepath $(JDKS) $(STUBCLASSES) && $(ECHO) STUBS_ARE_CREATED=yes > $@)
if $(DIFF) -x "_the*" -rq $(LANGTOOLS_OUTPUTDIR)/tmpstubs $(LANGTOOLS_OUTPUTDIR)/genstubs > /dev/null 2>&1; then \
- echo $(LOG_INFO) No changes in the stubs!; \
- rm -rf $(LANGTOOLS_OUTPUTDIR)/tmpstubs; \
+ $(ECHO) $(LOG_INFO) No changes in the stubs!; \
+ $(RM) -r $(LANGTOOLS_OUTPUTDIR)/tmpstubs; \
else \
- echo $(LOG_INFO) Changes in stubs detected!; \
- rm -rf $(@D); \
- mv $(LANGTOOLS_OUTPUTDIR)/tmpstubs $(@D); \
+ $(ECHO) $(LOG_INFO) Changes in stubs detected!; \
+ $(RM) -r $(@D); \
+ $(MV) $(LANGTOOLS_OUTPUTDIR)/tmpstubs $(@D); \
fi
- echo STUBS_ARE_CREATED=yes > $@
+ $(ECHO) STUBS_ARE_CREATED=yes > $@
# Trigger a generation of the genstubs java source code and a restart
# of the makefile to make sure that the following build setup use the
--- a/langtools/test/tools/javac/annotations/typeAnnotations/classfile/TestNewCastArray.java Mon May 27 12:58:42 2013 +0200
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/classfile/TestNewCastArray.java Fri May 31 09:55:35 2013 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013 Oracle and/or its affiliates. All rights reserved.
+ * 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
--- a/nashorn/.hgtags Mon May 27 12:58:42 2013 +0200
+++ b/nashorn/.hgtags Fri May 31 09:55:35 2013 +0200
@@ -200,3 +200,4 @@
40c107d1ae6f81a62e35dfe618b827897405e9b2 jdk8-b88
45ce27fbe2720d80070095c0db7344ec41e2833d jdk8-b89
67ca019e3713dd71c884d753de02fd0021981969 jdk8-b90
+6b9f4120380091b8b1751a825b9f84bf1be224fe jdk8-b91