--- a/make/Help.gmk Thu Oct 11 07:22:53 2018 -0700
+++ b/make/Help.gmk Mon Oct 15 13:44:31 2018 -0700
@@ -119,7 +119,7 @@
run-test-prebuilt:
@( cd $(topdir) && \
$(MAKE) --no-print-directory -r -R -I make/common/ -f make/RunTestsPrebuilt.gmk \
- run-test-prebuilt TEST="$(TEST)" )
+ run-test-prebuilt CUSTOM_MAKE_DIR=$(CUSTOM_MAKE_DIR) TEST="$(TEST)" )
ALL_GLOBAL_TARGETS := help print-configurations run-test-prebuilt
--- a/make/RunTests.gmk Thu Oct 11 07:22:53 2018 -0700
+++ b/make/RunTests.gmk Mon Oct 15 13:44:31 2018 -0700
@@ -45,8 +45,8 @@
endif
$(eval $(call ParseKeywordVariable, TEST_OPTS, \
- KEYWORDS := JOBS TIMEOUT, \
- STRING_KEYWORDS := VM_OPTIONS, \
+ SINGLE_KEYWORDS := JOBS TIMEOUT_FACTOR, \
+ STRING_KEYWORDS := VM_OPTIONS JAVA_OPTIONS, \
))
# Helper function to propagate TEST_OPTS values.
@@ -104,22 +104,50 @@
GTEST_VARIANTS := $(strip $(patsubst $(TEST_IMAGE_DIR)/hotspot/gtest/%, %, $(GTEST_LAUNCHER_DIRS)))
################################################################################
+# Setup global test running parameters
+################################################################################
+
+# Each factor variable comes in 3 variants. The first one is reserved for users
+# to use on command line. The other two are for predifined configurations in JDL
+# and for machine specific configurations respectively.
+TEST_JOBS_FACTOR ?= 1
+TEST_JOBS_FACTOR_JDL ?= 1
+TEST_JOBS_FACTOR_MACHINE ?= 1
+
+ifeq ($(TEST_JOBS), 0)
+ # Concurrency based on min(cores / 2, 12) * TEST_JOBS_FACTOR
+ TEST_JOBS := $(shell $(AWK) \
+ 'BEGIN { \
+ c = $(NUM_CORES) / 2; \
+ if (c > 12) c = 12; \
+ c = c * $(TEST_JOBS_FACTOR); \
+ c = c * $(TEST_JOBS_FACTOR_JDL); \
+ c = c * $(TEST_JOBS_FACTOR_MACHINE); \
+ if (c < 1) c = 1; \
+ printf "%.0f", c; \
+ }')
+endif
+
+################################################################################
# Parse control variables
################################################################################
ifneq ($(TEST_OPTS), )
# Inform the user
$(info Running tests using TEST_OPTS control variable '$(TEST_OPTS)')
-
- $(eval $(call SetTestOpt,VM_OPTIONS,JTREG))
- $(eval $(call SetTestOpt,VM_OPTIONS,GTEST))
-
- $(eval $(call SetTestOpt,JOBS,JTREG))
- $(eval $(call SetTestOpt,TIMEOUT,JTREG))
endif
+$(eval $(call SetTestOpt,VM_OPTIONS,JTREG))
+$(eval $(call SetTestOpt,JAVA_OPTIONS,JTREG))
+$(eval $(call SetTestOpt,VM_OPTIONS,GTEST))
+$(eval $(call SetTestOpt,JAVA_OPTIONS,GTEST))
+
+$(eval $(call SetTestOpt,JOBS,JTREG))
+$(eval $(call SetTestOpt,TIMEOUT_FACTOR,JTREG))
+
$(eval $(call ParseKeywordVariable, JTREG, \
- KEYWORDS := JOBS TIMEOUT TEST_MODE ASSERT VERBOSE RETAIN MAX_MEM, \
+ SINGLE_KEYWORDS := JOBS TIMEOUT_FACTOR TEST_MODE ASSERT VERBOSE RETAIN MAX_MEM \
+ EXTRA_PROBLEM_LISTS KEYWORDS, \
STRING_KEYWORDS := OPTIONS JAVA_OPTIONS VM_OPTIONS, \
))
@@ -129,8 +157,8 @@
endif
$(eval $(call ParseKeywordVariable, GTEST, \
- KEYWORDS := REPEAT, \
- STRING_KEYWORDS := OPTIONS VM_OPTIONS, \
+ SINGLE_KEYWORDS := REPEAT, \
+ STRING_KEYWORDS := OPTIONS VM_OPTIONS JAVA_OPTIONS, \
))
ifneq ($(GTEST), )
@@ -143,17 +171,6 @@
# Component-specific Jtreg settings
################################################################################
-ifeq ($(TEST_JOBS), 0)
- # If TEST_JOBS is not specified, hotspot fallback default is
- # min(num_cores / 2, 12).
- hotspot_JTREG_JOBS := $(shell $(EXPR) $(NUM_CORES) / 2)
- ifeq ($(hotspot_JTREG_JOBS), 0)
- hotspot_JTREG_JOBS := 1
- else ifeq ($(shell $(EXPR) $(hotspot_JTREG_JOBS) \> 12), 1)
- hotspot_JTREG_JOBS := 12
- endif
-endif
-
hotspot_JTREG_MAX_MEM := 0
hotspot_JTREG_ASSERT := false
hotspot_JTREG_NATIVEPATH := $(TEST_IMAGE_DIR)/hotspot/jtreg/native
@@ -165,6 +182,8 @@
nashorn_JTREG_PROBLEM_LIST += $(TOPDIR)/test/nashorn/ProblemList.txt
hotspot_JTREG_PROBLEM_LIST += $(TOPDIR)/test/hotspot/jtreg/ProblemList.txt
+langtools_JTREG_MAX_MEM := 768m
+
################################################################################
# Parse test selection
#
@@ -368,15 +387,16 @@
$1_GTEST_REPEAT :=--gtest_repeat=$$(GTEST_REPEAT)
endif
- run-test-$1:
+ run-test-$1: $(TEST_PREREQS)
$$(call LogWarn)
$$(call LogWarn, Running test '$$($1_TEST)')
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/gtest, \
$$(FIXPATH) $$(TEST_IMAGE_DIR)/hotspot/gtest/$$($1_VARIANT)/gtestLauncher \
- -jdk $(JDK_IMAGE_DIR) $$($1_GTEST_FILTER) \
- --gtest_output=xml:$$($1_TEST_RESULTS_DIR)/gtest.xml \
- $$($1_GTEST_REPEAT) $$(GTEST_OPTIONS) $$(GTEST_VM_OPTIONS) \
+ -jdk $(JDK_IMAGE_DIR) $$($1_GTEST_FILTER) \
+ --gtest_output=xml:$$($1_TEST_RESULTS_DIR)/gtest.xml \
+ $$($1_GTEST_REPEAT) $$(GTEST_OPTIONS) $$(GTEST_VM_OPTIONS) \
+ $$($1_GTEST_JAVA_OPTIONS) \
> >($(TEE) $$($1_TEST_RESULTS_DIR)/gtest.txt) \
&& $$(ECHO) $$$$? > $$($1_EXITCODE) \
|| $$(ECHO) $$$$? > $$($1_EXITCODE) \
@@ -447,12 +467,11 @@
$1_TEST_NAME := $$(strip $$(patsubst jtreg:%, %, $$($1_TEST)))
- $1_COMPONENT := \
+ $1_TEST_ROOT := \
$$(strip $$(foreach root, $$(JTREG_TESTROOTS), \
- $$(if $$(filter $$(root)%, $$(JTREG_TOPDIR)/$$($1_TEST_NAME)), \
- $$(lastword $$(subst /, $$(SPACE), $$(root))) \
- ) \
+ $$(if $$(filter $$(root)%, $$(JTREG_TOPDIR)/$$($1_TEST_NAME)), $$(root)) \
))
+ $1_COMPONENT := $$(lastword $$(subst /, $$(SPACE), $$($1_TEST_ROOT)))
# This will work only as long as just hotspot has the additional "jtreg" directory
ifeq ($$($1_COMPONENT), jtreg)
$1_COMPONENT := hotspot
@@ -475,11 +494,12 @@
$$(eval $$(call SetJtregValue,$1,JTREG_BASIC_OPTIONS))
$$(eval $$(call SetJtregValue,$1,JTREG_PROBLEM_LIST))
+ # Only the problem list for the current test root should be used.
+ $1_JTREG_PROBLEM_LIST := $$(filter $$($1_TEST_ROOT)%, $$($1_JTREG_PROBLEM_LIST))
+
ifneq ($(TEST_JOBS), 0)
- # User has specified TEST_JOBS, use that as fallback default
$$(eval $$(call SetJtregValue,$1,JTREG_JOBS,$$(TEST_JOBS)))
else
- # Use JOBS as default (except for hotspot)
$$(eval $$(call SetJtregValue,$1,JTREG_JOBS,$$(JOBS)))
endif
@@ -487,7 +507,7 @@
# we may end up with a lot of JVM's
$1_JTREG_MAX_RAM_PERCENTAGE := $$(shell $$(EXPR) 25 / $$($1_JTREG_JOBS))
- JTREG_TIMEOUT ?= 4
+ JTREG_TIMEOUT_FACTOR ?= 4
JTREG_VERBOSE ?= fail,error,summary
JTREG_RETAIN ?= fail,error
@@ -498,10 +518,10 @@
$1_JTREG_BASIC_OPTIONS += -$$($1_JTREG_TEST_MODE) \
-verbose:$$(JTREG_VERBOSE) -retain:$$(JTREG_RETAIN) \
- -concurrency:$$($1_JTREG_JOBS) -timeoutFactor:$$(JTREG_TIMEOUT) \
+ -concurrency:$$($1_JTREG_JOBS) -timeoutFactor:$$(JTREG_TIMEOUT_FACTOR) \
-vmoption:-XX:MaxRAMPercentage=$$($1_JTREG_MAX_RAM_PERCENTAGE)
- $1_JTREG_BASIC_OPTIONS += -automatic -keywords:\!ignore -ignore:quiet
+ $1_JTREG_BASIC_OPTIONS += -automatic -ignore:quiet
# Make it possible to specify the JIB_DATA_DIR for tests using the
# JIB Artifact resolver
@@ -531,6 +551,14 @@
$1_JTREG_BASIC_OPTIONS += $$(addprefix -exclude:, $$($1_JTREG_PROBLEM_LIST))
endif
+ ifneq ($$(JTREG_EXTRA_PROBLEM_LISTS), )
+ # Accept both absolute paths as well as relative to the current test root.
+ $1_JTREG_BASIC_OPTIONS += $$(addprefix -exclude:, $$(wildcard \
+ $$(JTREG_EXTRA_PROBLEM_LISTS) \
+ $$(addprefix $$($1_TEST_ROOT)/, $$(JTREG_EXTRA_PROBLEM_LISTS)) \
+ ))
+ endif
+
ifneq ($$(JIB_HOME), )
$1_JTREG_BASIC_OPTIONS += -e:JIB_HOME=$$(JIB_HOME)
endif
@@ -541,10 +569,21 @@
$1_JTREG_LAUNCHER_OPTIONS += -Djava.library.path="$(JTREG_FAILURE_HANDLER_DIR)"
endif
+ ifneq ($$(JTREG_KEYWORDS), )
+ # The keywords string may contain problematic characters and may be quoted
+ # already when it arrives here. Remove any existing quotes and replace them
+ # with one set of single quotes.
+ $1_JTREG_KEYWORDS := \
+ $$(strip $$(subst $$(SQUOTE),,$$(subst $$(DQUOTE),,$$(JTREG_KEYWORDS))))
+ ifneq ($$($1_JTREG_KEYWORDS), )
+ $1_JTREG_BASIC_OPTIONS += -k:'$$($1_JTREG_KEYWORDS)'
+ endif
+ endif
+
clean-workdir-$1:
$$(RM) -r $$($1_TEST_SUPPORT_DIR)
- run-test-$1: clean-workdir-$1
+ run-test-$1: clean-workdir-$1 $(TEST_PREREQS)
$$(call LogWarn)
$$(call LogWarn, Running test '$$($1_TEST)')
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
@@ -631,7 +670,7 @@
$$(error Invalid special test specification: $$($1_TEST_NAME))
endif
- run-test-$1:
+ run-test-$1: $(TEST_PREREQS)
$$(call LogWarn)
$$(call LogWarn, Running test '$$($1_TEST)')
$$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
--- a/make/RunTestsPrebuilt.gmk Thu Oct 11 07:22:53 2018 -0700
+++ b/make/RunTestsPrebuilt.gmk Mon Oct 15 13:44:31 2018 -0700
@@ -49,10 +49,11 @@
# given.
# Note: No spaces are allowed around the arguments.
#
-# $1: The name of the argument
+# $1: The name of the variable
# $2: The default value, if any, or OPTIONAL (do not provide a default but
# do not exit if it is missing)
# $3: If NO_CHECK, disable checking for target file/directory existence
+# If MKDIR, create the default directory
define SetupVariable
ifeq ($$($1), )
ifeq ($2, )
@@ -75,10 +76,17 @@
endif
# If $1 has a value (is not optional), and $3 is not set (to NO_CHECK),
# and if wildcard is empty, then complain that the file is missing.
- ifeq ($$(strip $$(if $$($1), , OPTIONAL) $$(wildcard $$($1)) $3), )
- $$(info Error: Prebuilt variable $1 points to missing file/directory:)
- $$(info '$$($1)')
- $$(error Cannot continue.)
+ ifeq ($3, MKDIR)
+ ifneq ($$(findstring $$(LOG), info debug trace), )
+ $$(info Creating directory for $1)
+ endif
+ $$(shell mkdir -p $$($1))
+ else ifneq ($3, NO_CHECK)
+ ifeq ($$(strip $$(if $$($1), , OPTIONAL) $$(wildcard $$($1))), )
+ $$(info Error: Prebuilt variable $1 points to missing file/directory:)
+ $$(info '$$($1)')
+ $$(error Cannot continue.)
+ endif
endif
endef
@@ -106,14 +114,14 @@
# Verify that user has given correct additional input.
# These variables are absolutely necessary
-$(eval $(call SetupVariable,OUTPUTDIR))
+$(eval $(call SetupVariable,OUTPUTDIR,$(TOPDIR)/build/run-test-prebuilt,MKDIR))
$(eval $(call SetupVariable,BOOT_JDK))
$(eval $(call SetupVariable,JT_HOME))
# These can have default values based on the ones above
$(eval $(call SetupVariable,JDK_IMAGE_DIR,$(OUTPUTDIR)/images/jdk))
$(eval $(call SetupVariable,TEST_IMAGE_DIR,$(OUTPUTDIR)/images/test))
-$(eval $(call SetupVariable,SYMBOLS_IMAGE_DIR,$(OUTPUTDIR)/images/symbols))
+$(eval $(call SetupVariable,SYMBOLS_IMAGE_DIR,$(OUTPUTDIR)/images/symbols,NO_CHECK))
# Provide default values for tools that we need
$(eval $(call SetupVariable,MAKE,make,NO_CHECK))
@@ -202,8 +210,8 @@
ifeq ($(OPENJDK_TARGET_OS), windows)
ifeq ($(wildcard $(TEST_IMAGE_DIR)/bin/fixpath.exe), )
- $$(info Error: fixpath is missing from test image '$(TEST_IMAGE_DIR)')
- $$(error Cannot continue.)
+ $(info Error: fixpath is missing from test image '$(TEST_IMAGE_DIR)')
+ $(error Cannot continue.)
endif
FIXPATH := $(TEST_IMAGE_DIR)/bin/fixpath.exe -c
PATH_SEP:=;
@@ -214,15 +222,17 @@
# Check number of cores
ifeq ($(OPENJDK_TARGET_OS), linux)
- NUM_CORES := $(shell $(CAT) /proc/cpuinfo | $(GREP) -c processor)
+ NUM_CORES := $(shell $(CAT) /proc/cpuinfo | $(GREP) -c processor)
else ifeq ($(OPENJDK_TARGET_OS), macosx)
- NUM_CORES := $(shell /usr/sbin/sysctl -n hw.ncpu)
+ NUM_CORES := $(shell /usr/sbin/sysctl -n hw.ncpu)
else ifeq ($(OPENJDK_TARGET_OS), solaris)
- NUM_CORES := $(shell LC_MESSAGES=C /usr/sbin/psrinfo -v | $(GREP) -c on-line)
+ NUM_CORES := $(shell LC_MESSAGES=C /usr/sbin/psrinfo -v | $(GREP) -c on-line)
else ifeq ($(OPENJDK_TARGET_OS), windows)
- NUM_CORES := $(NUMBER_OF_PROCESSORS)
-else
- NUM_CORES := 1
+ NUM_CORES := $(NUMBER_OF_PROCESSORS)
+endif
+ifeq ($(NUM_CORES), )
+ $(warn Could not find number of CPUs, assuming 1)
+ NUM_CORES := 1
endif
################################################################################
@@ -276,9 +286,6 @@
@$(RM) -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error
@cd $(TOPDIR) && $(MAKE) $(MAKE_ARGS) -f make/RunTests.gmk run-test \
TEST="$(TEST)"
- @if test -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error ; then \
- exit 1 ; \
- fi
all: run-test-prebuilt
--- a/make/RunTestsPrebuiltSpec.gmk Thu Oct 11 07:22:53 2018 -0700
+++ b/make/RunTestsPrebuiltSpec.gmk Mon Oct 15 13:44:31 2018 -0700
@@ -124,7 +124,7 @@
JMOD := $(FIXPATH) $(JMOD_CMD)
JARSIGNER := $(FIXPATH) $(JARSIGNER_CMD)
-BUILD_JAVA := $(JAVA)
+BUILD_JAVA := $(JDK_IMAGE_DIR)/bin/JAVA
################################################################################
# Some common tools. Assume most common name and no path.
AWK := awk
@@ -172,3 +172,13 @@
EXPR := expr
FILE := file
HG := hg
+
+# On Solaris gnu versions of some tools are required.
+ifeq ($(OPENJDK_BUILD_OS), solaris)
+ AWK := gawk
+ GREP := ggrep
+ EGREP := ggrep -E
+ FGREP := grep -F
+ SED := gsed
+ TAR := gtar
+endif
--- a/make/common/MakeBase.gmk Thu Oct 11 07:22:53 2018 -0700
+++ b/make/common/MakeBase.gmk Mon Oct 15 13:44:31 2018 -0700
@@ -842,7 +842,7 @@
# Parameter 1 is the name of the rule, and is also the name of the variable.
#
# Remaining parameters are named arguments. These include:
-# KEYWORDS A list of valid keywords
+# SINGLE_KEYWORDS A list of valid keywords with single string values
# STRING_KEYWORDS A list of valid keywords, processed as string. This means
# that '%20' will be replaced by ' ' to allow for multi-word strings.
#
@@ -856,7 +856,7 @@
$$(eval mangled_part_eval := $$(call DoubleDollar, $$(mangled_part))) \
$$(eval part := $$$$(subst ||||,$$$$(SPACE),$$$$(mangled_part_eval))) \
$$(eval $1_NO_MATCH := true) \
- $$(foreach keyword, $$($1_KEYWORDS), \
+ $$(foreach keyword, $$($1_SINGLE_KEYWORDS), \
$$(eval keyword_eval := $$(call DoubleDollar, $$(keyword))) \
$$(if $$(filter $$(keyword)=%, $$(part)), \
$$(eval $(strip $1)_$$$$(keyword_eval) := $$$$(strip $$$$(patsubst $$$$(keyword_eval)=%, %, $$$$(part)))) \
@@ -871,11 +871,11 @@
) \
) \
$$(if $$($1_NO_MATCH), \
- $$(if $$(filter $$(part), $$($1_KEYWORDS) $$($1_STRING_KEYWORDS)), \
+ $$(if $$(filter $$(part), $$($1_SINGLE_KEYWORDS) $$($1_STRING_KEYWORDS)), \
$$(info Keyword $$(part) for $1 needs to be assigned a value.) \
, \
$$(info $$(part) is not a valid keyword for $1.) \
- $$(info Valid keywords: $$($1_KEYWORDS) $$($1_STRING_KEYWORDS).) \
+ $$(info Valid keywords: $$($1_SINGLE_KEYWORDS) $$($1_STRING_KEYWORDS).) \
) \
$$(error Cannot continue) \
) \
--- a/make/conf/jib-profiles.js Thu Oct 11 07:22:53 2018 -0700
+++ b/make/conf/jib-profiles.js Mon Oct 15 13:44:31 2018 -0700
@@ -755,16 +755,15 @@
"run-test-prebuilt": {
target_os: input.build_os,
target_cpu: input.build_cpu,
- src: "src.conf",
dependencies: [ "jtreg", "gnumake", "boot_jdk", "jib", testedProfile + ".jdk",
- testedProfile + ".test", "src.full"
+ testedProfile + ".test"
],
- work_dir: input.get("src.full", "install_path") + "/test",
+ src: "src.conf",
+ make_args: [ "run-test-prebuilt", "LOG_CMDLINES=true" ],
environment: {
- "JT_JAVA": common.boot_jdk_home,
- "PRODUCT_HOME": input.get(testedProfile + ".jdk", "home_path"),
- "TEST_IMAGE_DIR": input.get(testedProfile + ".test", "home_path"),
- "TEST_OUTPUT_DIR": input.src_top_dir
+ "BOOT_JDK": common.boot_jdk_home,
+ "JDK_IMAGE_DIR": input.get(testedProfile + ".jdk", "home_path"),
+ "TEST_IMAGE_DIR": input.get(testedProfile + ".test", "home_path")
},
labels: "test"
}
@@ -802,13 +801,34 @@
windowsRunTestPrebuiltExtra = {
dependencies: [ testedProfile + ".jdk_symbols" ],
environment: {
- "PRODUCT_SYMBOLS_HOME": input.get(testedProfile + ".jdk_symbols", "home_path"),
+ "SYMBOLS_IMAGE_DIR": input.get(testedProfile + ".jdk_symbols", "home_path"),
}
};
profiles["run-test-prebuilt"] = concatObjects(profiles["run-test-prebuilt"],
windowsRunTestPrebuiltExtra);
}
+ // The profile run-test-prebuilt defines src.conf as the src bundle. When
+ // running in Mach 5, this reduces the time it takes to populate the
+ // considerably. But with just src.conf, we cannot actually run any tests,
+ // so if running from a workspace with just src.conf in it, we need to also
+ // get src.full as a dependency, and define the work_dir (where make gets
+ // run) to be in the src.full install path. By running in the install path,
+ // the same cached installation of the full src can be reused for multiple
+ // test tasks. Care must however be taken not to polute that work dir by
+ // setting the appropriate make variables to control output directories.
+ //
+ // Use the existance of the top level README as indication of if this is
+ // the full source or just src.conf.
+ if (!new java.io.File(__DIR__, "../../README").exists()) {
+ var runTestPrebuiltSrcFullExtra = {
+ dependencies: "src.full",
+ work_dir: input.get("src.full", "install_path"),
+ }
+ profiles["run-test-prebuilt"] = concatObjects(profiles["run-test-prebuilt"],
+ runTestPrebuiltSrcFullExtra);
+ }
+
// Generate the missing platform attributes
profiles = generatePlatformAttributes(profiles);
profiles = generateDefaultMakeTargetsConfigureArg(common, profiles);
@@ -835,7 +855,7 @@
: "gcc7.3.0-Fedora27+1.0"),
linux_arm: (input.profile != null && input.profile.indexOf("hflt") >= 0
? "gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux+1.0"
- : (input.profile.indexOf("arm32") >= 0
+ : (input.profile != null && input.profile.indexOf("arm32") >= 0
? "gcc7.3.0-Fedora27+1.0"
: "arm-linaro-4.7+1.0"
)
--- a/src/hotspot/share/gc/shared/collectedHeap.cpp Thu Oct 11 07:22:53 2018 -0700
+++ b/src/hotspot/share/gc/shared/collectedHeap.cpp Mon Oct 15 13:44:31 2018 -0700
@@ -445,6 +445,15 @@
CollectedHeap::fill_with_object(start, end, zap);
}
+size_t CollectedHeap::min_dummy_object_size() const {
+ return oopDesc::header_size();
+}
+
+size_t CollectedHeap::tlab_alloc_reserve() const {
+ size_t min_size = min_dummy_object_size();
+ return min_size > (size_t)MinObjAlignment ? align_object_size(min_size) : 0;
+}
+
HeapWord* CollectedHeap::allocate_new_tlab(size_t min_size,
size_t requested_size,
size_t* actual_size) {
--- a/src/hotspot/share/gc/shared/collectedHeap.hpp Thu Oct 11 07:22:53 2018 -0700
+++ b/src/hotspot/share/gc/shared/collectedHeap.hpp Mon Oct 15 13:44:31 2018 -0700
@@ -309,6 +309,8 @@
}
virtual void fill_with_dummy_object(HeapWord* start, HeapWord* end, bool zap);
+ virtual size_t min_dummy_object_size() const;
+ size_t tlab_alloc_reserve() const;
// Return the address "addr" aligned by "alignment_in_bytes" if such
// an address is below "end". Return NULL otherwise.
--- a/src/hotspot/share/gc/shared/plab.cpp Thu Oct 11 07:22:53 2018 -0700
+++ b/src/hotspot/share/gc/shared/plab.cpp Mon Oct 15 13:44:31 2018 -0700
@@ -27,7 +27,6 @@
#include "gc/shared/plab.inline.hpp"
#include "gc/shared/threadLocalAllocBuffer.hpp"
#include "logging/log.hpp"
-#include "oops/arrayOop.hpp"
#include "oops/oop.inline.hpp"
size_t PLAB::min_size() {
@@ -43,8 +42,7 @@
_word_sz(desired_plab_sz_), _bottom(NULL), _top(NULL),
_end(NULL), _hard_end(NULL), _allocated(0), _wasted(0), _undo_wasted(0)
{
- // ArrayOopDesc::header_size depends on command line initialization.
- AlignmentReserve = oopDesc::header_size() > MinObjAlignment ? align_object_size(arrayOopDesc::header_size(T_INT)) : 0;
+ AlignmentReserve = Universe::heap()->tlab_alloc_reserve();
assert(min_size() > AlignmentReserve,
"Minimum PLAB size " SIZE_FORMAT " must be larger than alignment reserve " SIZE_FORMAT " "
"to be able to contain objects", min_size(), AlignmentReserve);
--- a/src/hotspot/share/gc/shared/threadLocalAllocBuffer.cpp Thu Oct 11 07:22:53 2018 -0700
+++ b/src/hotspot/share/gc/shared/threadLocalAllocBuffer.cpp Mon Oct 15 13:44:31 2018 -0700
@@ -23,6 +23,7 @@
*/
#include "precompiled.hpp"
+#include "gc/shared/collectedHeap.hpp"
#include "gc/shared/threadLocalAllocBuffer.inline.hpp"
#include "logging/log.hpp"
#include "memory/resourceArea.hpp"
@@ -461,3 +462,8 @@
_perf_max_slow_allocations ->set_value(_max_slow_allocations);
}
}
+
+size_t ThreadLocalAllocBuffer::end_reserve() {
+ size_t reserve_size = Universe::heap()->tlab_alloc_reserve();
+ return MAX2(reserve_size, (size_t)_reserve_for_allocation_prefetch);
+}
--- a/src/hotspot/share/gc/shared/threadLocalAllocBuffer.hpp Thu Oct 11 07:22:53 2018 -0700
+++ b/src/hotspot/share/gc/shared/threadLocalAllocBuffer.hpp Mon Oct 15 13:44:31 2018 -0700
@@ -26,7 +26,6 @@
#define SHARE_VM_GC_SHARED_THREADLOCALALLOCBUFFER_HPP
#include "gc/shared/gcUtil.hpp"
-#include "oops/typeArrayOop.hpp"
#include "runtime/perfData.hpp"
#include "runtime/vm_version.hpp"
@@ -138,10 +137,7 @@
inline HeapWord* allocate(size_t size);
// Reserve space at the end of TLAB
- static size_t end_reserve() {
- int reserve_size = typeArrayOopDesc::header_size(T_INT);
- return MAX2(reserve_size, _reserve_for_allocation_prefetch);
- }
+ static size_t end_reserve();
static size_t alignment_reserve() { return align_object_size(end_reserve()); }
static size_t alignment_reserve_in_bytes() { return alignment_reserve() * HeapWordSize; }
--- a/src/hotspot/share/memory/filemap.cpp Thu Oct 11 07:22:53 2018 -0700
+++ b/src/hotspot/share/memory/filemap.cpp Mon Oct 15 13:44:31 2018 -0700
@@ -1088,8 +1088,8 @@
}
bool FileMapInfo::verify_mapped_heap_regions(int first, int num) {
- for (int i = first;
- i <= first + num; i++) {
+ assert(num > 0, "sanity");
+ for (int i = first; i < first + num; i++) {
if (!verify_region_checksum(i)) {
return false;
}
--- a/src/java.base/share/classes/java/util/Locale.java Thu Oct 11 07:22:53 2018 -0700
+++ b/src/java.base/share/classes/java/util/Locale.java Mon Oct 15 13:44:31 2018 -0700
@@ -2246,22 +2246,26 @@
/**
* @serialField language String
- * language subtag in lower case. (See <a href="java/util/Locale.html#getLanguage()">getLanguage()</a>)
+ * language subtag in lower case.
+ * (See <a href="java.base/java/util/Locale.html#getLanguage()">getLanguage()</a>)
* @serialField country String
- * country subtag in upper case. (See <a href="java/util/Locale.html#getCountry()">getCountry()</a>)
+ * country subtag in upper case.
+ * (See <a href="java.base/java/util/Locale.html#getCountry()">getCountry()</a>)
* @serialField variant String
- * variant subtags separated by LOWLINE characters. (See <a href="java/util/Locale.html#getVariant()">getVariant()</a>)
+ * variant subtags separated by LOWLINE characters.
+ * (See <a href="java.base/java/util/Locale.html#getVariant()">getVariant()</a>)
* @serialField hashcode int
* deprecated, for forward compatibility only
* @serialField script String
- * script subtag in title case (See <a href="java/util/Locale.html#getScript()">getScript()</a>)
+ * script subtag in title case
+ * (See <a href="java.base/java/util/Locale.html#getScript()">getScript()</a>)
* @serialField extensions String
* canonical representation of extensions, that is,
* BCP47 extensions in alphabetical order followed by
* BCP47 private use subtags, all in lower case letters
* separated by HYPHEN-MINUS characters.
- * (See <a href="java/util/Locale.html#getExtensionKeys()">getExtensionKeys()</a>,
- * <a href="java/util/Locale.html#getExtension(char)">getExtension(char)</a>)
+ * (See <a href="java.base/java/util/Locale.html#getExtensionKeys()">getExtensionKeys()</a>,
+ * <a href="java.base/java/util/Locale.html#getExtension(char)">getExtension(char)</a>)
*/
private static final ObjectStreamField[] serialPersistentFields = {
new ObjectStreamField("language", String.class),
--- a/src/java.xml/share/classes/com/sun/xml/internal/stream/util/ThreadLocalBufferAllocator.java Thu Oct 11 07:22:53 2018 -0700
+++ b/src/java.xml/share/classes/com/sun/xml/internal/stream/util/ThreadLocalBufferAllocator.java Mon Oct 15 13:44:31 2018 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2018, 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
@@ -39,15 +39,19 @@
* @author Santiago PericasGeertsen
*/
public class ThreadLocalBufferAllocator {
- private static ThreadLocal<SoftReference<BufferAllocator>> tlba = new ThreadLocal<>();
+ private static final ThreadLocal<SoftReference<BufferAllocator>> TL = new ThreadLocal<>();
- public static BufferAllocator getBufferAllocator() {
- SoftReference<BufferAllocator> bAllocatorRef = tlba.get();
- if (bAllocatorRef == null || bAllocatorRef.get() == null) {
- bAllocatorRef = new SoftReference<>(new BufferAllocator());
- tlba.set(bAllocatorRef);
+ public static BufferAllocator getBufferAllocator() {
+ BufferAllocator ba = null;
+ SoftReference<BufferAllocator> sr = TL.get();
+ if (sr != null) {
+ ba = sr.get();
}
-
- return bAllocatorRef.get();
- }
+ if (ba == null) {
+ ba = new BufferAllocator();
+ sr = new SoftReference<>(ba);
+ TL.set(sr);
+ }
+ return ba;
+ }
}
--- a/test/hotspot/jtreg/compiler/escapeAnalysis/TestArrayCopy.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/hotspot/jtreg/compiler/escapeAnalysis/TestArrayCopy.java Mon Oct 15 13:44:31 2018 -0700
@@ -33,7 +33,7 @@
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
* sun.hotspot.WhiteBox$WhiteBoxPermission
*
- * @run main/othervm
+ * @run main/othervm/timeout=300
* -Xbootclasspath/a:.
* -XX:+UnlockDiagnosticVMOptions
* -XX:+WhiteBoxAPI
--- a/test/hotspot/jtreg/compiler/graalunit/JttLangMathALTest.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/hotspot/jtreg/compiler/graalunit/JttLangMathALTest.java Mon Oct 15 13:44:31 2018 -0700
@@ -34,5 +34,6 @@
*
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
*
- * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.lang.Math_[a-lA-L] -exclude ExcludeList.txt
+ * @run main/othervm/timeout=300 compiler.graalunit.common.GraalUnitTestLauncher
+ * -prefix org.graalvm.compiler.jtt.lang.Math_[a-lA-L] -exclude ExcludeList.txt
*/
--- a/test/hotspot/jtreg/compiler/graalunit/JttLangMathMZTest.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/hotspot/jtreg/compiler/graalunit/JttLangMathMZTest.java Mon Oct 15 13:44:31 2018 -0700
@@ -34,5 +34,6 @@
*
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
*
- * @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.lang.Math_[m-zM-Z] -exclude ExcludeList.txt
+ * @run main/othervm/timeout=300 compiler.graalunit.common.GraalUnitTestLauncher
+ * -prefix org.graalvm.compiler.jtt.lang.Math_[m-zM-Z] -exclude ExcludeList.txt
*/
--- a/test/hotspot/jtreg/compiler/jsr292/ContinuousCallSiteTargetChange.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/hotspot/jtreg/compiler/jsr292/ContinuousCallSiteTargetChange.java Mon Oct 15 13:44:31 2018 -0700
@@ -25,7 +25,7 @@
* @test
* @library /test/lib /
*
- * @run driver compiler.jsr292.ContinuousCallSiteTargetChange
+ * @run driver/timeout=300 compiler.jsr292.ContinuousCallSiteTargetChange
*/
package compiler.jsr292;
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationApp.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationApp.java Mon Oct 15 13:44:31 2018 -0700
@@ -116,10 +116,10 @@
System.out.println("INFO: AppCDSv1 " + (wb.isSharedClass(InstrumentationApp.class) ? "enabled" :"disabled"));
System.out.println("INFO: AppCDSv2 " + (isAppCDSV2Enabled() ? "enabled" : "disabled"));
- File bootJar = new File(args[0]);
- File appJar = new File(args[1]);
- File custJar = new File(args[2]);
- String flagFile = args[3];
+ String flagFile = args[0];
+ File bootJar = new File(args[1]);
+ File appJar = new File(args[2]);
+ File custJar = new File(args[3]);
waitAttach(flagFile);
instrumentation = InstrumentationRegisterClassFileTransformer.getInstrumentation();
--- a/test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationTest.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/hotspot/jtreg/runtime/appcds/jvmti/InstrumentationTest.java Mon Oct 15 13:44:31 2018 -0700
@@ -120,7 +120,7 @@
"-XX:+WhiteBoxAPI",
"-Xshare:off",
agentCmdArg,
- "InstrumentationApp", bootJar, appJar, custJar, flagFile);
+ "InstrumentationApp", flagFile, bootJar, appJar, custJar);
TestCommon.executeAndLog(pb, "no-sharing").shouldHaveExitValue(0);
checkAttach(t);
@@ -155,7 +155,7 @@
"-XX:+UnlockDiagnosticVMOptions",
"-XX:+WhiteBoxAPI",
agentCmdArg,
- "InstrumentationApp", bootJar, appJar, custJar, flagFile);
+ "InstrumentationApp", flagFile, bootJar, appJar, custJar);
CDSOptions opts = (new CDSOptions()).setXShareMode("auto");
TestCommon.checkExec(out, opts);
--- a/test/hotspot/jtreg/vmTestbase/vm/mlvm/cp/stress/classfmt/correctBootstrap/TestDescription.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/hotspot/jtreg/vmTestbase/vm/mlvm/cp/stress/classfmt/correctBootstrap/TestDescription.java Mon Oct 15 13:44:31 2018 -0700
@@ -50,7 +50,7 @@
* @build vm.mlvm.share.ClassfileGeneratorTest
* @run driver vm.mlvm.share.IndifiedClassesBuilder
*
- * @run main/othervm
+ * @run main/othervm/timeout=300
* vm.mlvm.share.ClassfileGeneratorTest
* -generator vm.mlvm.cp.share.GenManyIndyCorrectBootstrap
*/
--- a/test/hotspot/jtreg/vmTestbase/vm/mlvm/cp/stress/classfmt/incorrectBootstrap/TestDescription.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/hotspot/jtreg/vmTestbase/vm/mlvm/cp/stress/classfmt/incorrectBootstrap/TestDescription.java Mon Oct 15 13:44:31 2018 -0700
@@ -51,7 +51,7 @@
* @build vm.mlvm.share.ClassfileGeneratorTest
* @run driver vm.mlvm.share.IndifiedClassesBuilder
*
- * @run main/othervm
+ * @run main/othervm/timeout=300
* vm.mlvm.share.ClassfileGeneratorTest
* -generator vm.mlvm.cp.share.GenManyIndyIncorrectBootstrap
*/
--- a/test/hotspot/jtreg/vmTestbase/vm/mlvm/cp/stress/classfmt/mh/TestDescription.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/hotspot/jtreg/vmTestbase/vm/mlvm/cp/stress/classfmt/mh/TestDescription.java Mon Oct 15 13:44:31 2018 -0700
@@ -50,6 +50,6 @@
* @build vm.mlvm.share.ClassfileGeneratorTest
* @run driver vm.mlvm.share.IndifiedClassesBuilder
*
- * @run main/othervm vm.mlvm.share.ClassfileGeneratorTest -generator vm.mlvm.cp.share.GenCPFullOfMH
+ * @run main/othervm/timeout=300 vm.mlvm.share.ClassfileGeneratorTest -generator vm.mlvm.cp.share.GenCPFullOfMH
*/
--- a/test/hotspot/jtreg/vmTestbase/vm/mlvm/cp/stress/classfmt/mt/TestDescription.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/hotspot/jtreg/vmTestbase/vm/mlvm/cp/stress/classfmt/mt/TestDescription.java Mon Oct 15 13:44:31 2018 -0700
@@ -50,6 +50,6 @@
* @build vm.mlvm.share.ClassfileGeneratorTest
* @run driver vm.mlvm.share.IndifiedClassesBuilder
*
- * @run main/othervm vm.mlvm.share.ClassfileGeneratorTest -generator vm.mlvm.cp.share.GenCPFullOfMT
+ * @run main/othervm/timeout=300 vm.mlvm.share.ClassfileGeneratorTest -generator vm.mlvm.cp.share.GenCPFullOfMT
*/
--- a/test/hotspot/jtreg/vmTestbase/vm/mlvm/meth/stress/gc/createLotsOfMHConsts/Test.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/hotspot/jtreg/vmTestbase/vm/mlvm/meth/stress/gc/createLotsOfMHConsts/Test.java Mon Oct 15 13:44:31 2018 -0700
@@ -50,7 +50,7 @@
* @build vm.mlvm.meth.stress.gc.createLotsOfMHConsts.Test
* @run driver vm.mlvm.share.IndifiedClassesBuilder
*
- * @run main/othervm
+ * @run main/othervm/timeout=300
* vm.mlvm.meth.stress.gc.createLotsOfMHConsts.Test
* -stressIterationsFactor 100000
* -generator vm.mlvm.cp.share.GenCPFullOfMH
--- a/test/jdk/tools/jimage/JImageExtractTest.java Thu Oct 11 07:22:53 2018 -0700
+++ b/test/jdk/tools/jimage/JImageExtractTest.java Mon Oct 15 13:44:31 2018 -0700
@@ -27,7 +27,7 @@
* @library /test/lib
* @modules jdk.jlink/jdk.tools.jimage
* @build jdk.test.lib.Asserts
- * @run main/othervm JImageExtractTest
+ * @run main/othervm/timeout=300 JImageExtractTest
*/
import java.io.IOException;