mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8013496: Code cache management command line options work only in special order. Another order of arguments does not deliver the second parameter to the jvm
Moved check that ReservedCodeCacheSize >= InitialCodeCacheSize to Arguments::check_vm_args_consistency(). As a result, the ordering in which the two parameters are given to the VM is not relevant. Added a regression test. Reviewed-by: kvn, twisti
This commit is contained in:
parent
ff008d0615
commit
34f8be0bc9
2 changed files with 64 additions and 5 deletions
|
@ -2217,6 +2217,13 @@ bool Arguments::check_vm_args_consistency() {
|
||||||
status = false;
|
status = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ReservedCodeCacheSize < InitialCodeCacheSize) {
|
||||||
|
jio_fprintf(defaultStream::error_stream(),
|
||||||
|
"Invalid ReservedCodeCacheSize: %dK. Should be greater than InitialCodeCacheSize=%dK\n",
|
||||||
|
ReservedCodeCacheSize/K, InitialCodeCacheSize/K);
|
||||||
|
status = false;
|
||||||
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2619,13 +2626,10 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args,
|
||||||
} else if (match_option(option, "-Xmaxjitcodesize", &tail) ||
|
} else if (match_option(option, "-Xmaxjitcodesize", &tail) ||
|
||||||
match_option(option, "-XX:ReservedCodeCacheSize=", &tail)) {
|
match_option(option, "-XX:ReservedCodeCacheSize=", &tail)) {
|
||||||
julong long_ReservedCodeCacheSize = 0;
|
julong long_ReservedCodeCacheSize = 0;
|
||||||
ArgsRange errcode = parse_memory_size(tail, &long_ReservedCodeCacheSize,
|
ArgsRange errcode = parse_memory_size(tail, &long_ReservedCodeCacheSize, 1);
|
||||||
(size_t)InitialCodeCacheSize);
|
|
||||||
if (errcode != arg_in_range) {
|
if (errcode != arg_in_range) {
|
||||||
jio_fprintf(defaultStream::error_stream(),
|
jio_fprintf(defaultStream::error_stream(),
|
||||||
"Invalid maximum code cache size: %s. Should be greater than InitialCodeCacheSize=%dK\n",
|
"Invalid maximum code cache size: %s.\n", option->optionString);
|
||||||
option->optionString, InitialCodeCacheSize/K);
|
|
||||||
describe_range_error(errcode);
|
|
||||||
return JNI_EINVAL;
|
return JNI_EINVAL;
|
||||||
}
|
}
|
||||||
FLAG_SET_CMDLINE(uintx, ReservedCodeCacheSize, (uintx)long_ReservedCodeCacheSize);
|
FLAG_SET_CMDLINE(uintx, ReservedCodeCacheSize, (uintx)long_ReservedCodeCacheSize);
|
||||||
|
|
55
hotspot/test/compiler/8013496/Test8013496.sh
Normal file
55
hotspot/test/compiler/8013496/Test8013496.sh
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
# @bug 8013496
|
||||||
|
# @summary Test checks that the order in which ReversedCodeCacheSize and
|
||||||
|
# InitialCodeCacheSize are passed to the VM is irrelevant.
|
||||||
|
# @run shell Test8013496.sh
|
||||||
|
#
|
||||||
|
#
|
||||||
|
## some tests require path to find test source dir
|
||||||
|
if [ "${TESTSRC}" = "" ]
|
||||||
|
then
|
||||||
|
TESTSRC=${PWD}
|
||||||
|
echo "TESTSRC not set. Using "${TESTSRC}" as default"
|
||||||
|
fi
|
||||||
|
echo "TESTSRC=${TESTSRC}"
|
||||||
|
## Adding common setup Variables for running shell tests.
|
||||||
|
. ${TESTSRC}/../../test_env.sh
|
||||||
|
set -x
|
||||||
|
|
||||||
|
${TESTJAVA}/bin/java ${TESTVMOPTS} -XX:ReservedCodeCacheSize=2m -XX:InitialCodeCacheSize=500K -version > 1.out 2>&1
|
||||||
|
${TESTJAVA}/bin/java ${TESTVMOPTS} -XX:InitialCodeCacheSize=500K -XX:ReservedCodeCacheSize=2m -version > 2.out 2>&1
|
||||||
|
|
||||||
|
diff 1.out 2.out
|
||||||
|
|
||||||
|
result=$?
|
||||||
|
if [ $result -eq 0 ] ; then
|
||||||
|
echo "Test Passed"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "Test Failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
Loading…
Add table
Add a link
Reference in a new issue