mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
Merge
This commit is contained in:
commit
4222f3408c
117 changed files with 5032 additions and 252 deletions
5
.hgtags
5
.hgtags
|
@ -490,9 +490,6 @@ a11c1cb542bbd1671d25b85efe7d09b983c48525 jdk-11+15
|
||||||
02934b0d661b82b7fe1052a04998d2091352e08d jdk-11+16
|
02934b0d661b82b7fe1052a04998d2091352e08d jdk-11+16
|
||||||
64e4b1686141e57a681936a8283983341484676e jdk-11+17
|
64e4b1686141e57a681936a8283983341484676e jdk-11+17
|
||||||
e1b3def126240d5433902f3cb0e91a4c27f6db50 jdk-11+18
|
e1b3def126240d5433902f3cb0e91a4c27f6db50 jdk-11+18
|
||||||
fb8b3f4672774e15654958295558a1af1b576919 jdk-11+19
|
|
||||||
fb8b3f4672774e15654958295558a1af1b576919 jdk-11+19
|
|
||||||
36ca515343e00b021dcfc902e986d26ec994a2e5 jdk-11+19
|
36ca515343e00b021dcfc902e986d26ec994a2e5 jdk-11+19
|
||||||
c9cd3ec6a0ebaf373b6ff0071c396cc657f7c4bd jdk-12+0
|
|
||||||
c9cd3ec6a0ebaf373b6ff0071c396cc657f7c4bd jdk-12+0
|
|
||||||
95aad0c785e497f1bade3955c4e4a677b629fa9d jdk-12+0
|
95aad0c785e497f1bade3955c4e4a677b629fa9d jdk-12+0
|
||||||
|
9816d7cc655e53ba081f938b656e31971b8f097a jdk-11+20
|
||||||
|
|
|
@ -487,6 +487,14 @@ test-image-jdk-jtreg-native:
|
||||||
+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNativeJdk.gmk \
|
+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNativeJdk.gmk \
|
||||||
test-image-jdk-jtreg-native)
|
test-image-jdk-jtreg-native)
|
||||||
|
|
||||||
|
build-test-hotspot-jtreg-graal:
|
||||||
|
+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregGraalUnit.gmk \
|
||||||
|
build-test-hotspot-jtreg-graal)
|
||||||
|
|
||||||
|
test-image-hotspot-jtreg-graal:
|
||||||
|
+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregGraalUnit.gmk \
|
||||||
|
test-image-hotspot-jtreg-graal)
|
||||||
|
|
||||||
run-test:
|
run-test:
|
||||||
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test TEST="$(TEST)")
|
+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test TEST="$(TEST)")
|
||||||
|
|
||||||
|
@ -523,6 +531,7 @@ ALL_TARGETS += prepare-test-image build-test-hotspot-jtreg-native \
|
||||||
test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \
|
test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \
|
||||||
test-image-jdk-jtreg-native build-test-lib build-test-failure-handler \
|
test-image-jdk-jtreg-native build-test-lib build-test-failure-handler \
|
||||||
test-failure-handler test-image-failure-handler test-image-hotspot-gtest \
|
test-failure-handler test-image-failure-handler test-image-hotspot-gtest \
|
||||||
|
test-image-hotspot-jtreg-graal build-test-hotspot-jtreg-graal \
|
||||||
run-test exploded-run-test
|
run-test exploded-run-test
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -853,10 +862,14 @@ else
|
||||||
|
|
||||||
build-test-jdk-jtreg-native: buildtools-jdk java.base-libs
|
build-test-jdk-jtreg-native: buildtools-jdk java.base-libs
|
||||||
|
|
||||||
|
build-test-hotspot-jtreg-graal: exploded-image-optimize
|
||||||
|
|
||||||
test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native
|
test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native
|
||||||
|
|
||||||
test-image-jdk-jtreg-native: build-test-jdk-jtreg-native
|
test-image-jdk-jtreg-native: build-test-jdk-jtreg-native
|
||||||
|
|
||||||
|
test-image-hotspot-jtreg-graal: build-test-hotspot-jtreg-graal
|
||||||
|
|
||||||
test-image-hotspot-gtest: hotspot
|
test-image-hotspot-gtest: hotspot
|
||||||
|
|
||||||
test-hotspot-internal: exploded-image
|
test-hotspot-internal: exploded-image
|
||||||
|
@ -993,6 +1006,10 @@ docs-image: docs-jdk
|
||||||
# If not already set, set the JVM specific targets to build the test image
|
# If not already set, set the JVM specific targets to build the test image
|
||||||
JVM_TEST_IMAGE_TARGETS ?= test-image-hotspot-jtreg-native test-image-hotspot-gtest
|
JVM_TEST_IMAGE_TARGETS ?= test-image-hotspot-jtreg-native test-image-hotspot-gtest
|
||||||
|
|
||||||
|
ifeq ($(INCLUDE_GRAAL), true)
|
||||||
|
JVM_TEST_IMAGE_TARGETS += test-image-hotspot-jtreg-graal
|
||||||
|
endif
|
||||||
|
|
||||||
# This target builds the test image
|
# This target builds the test image
|
||||||
test-image: prepare-test-image \
|
test-image: prepare-test-image \
|
||||||
test-image-jdk-jtreg-native test-image-failure-handler \
|
test-image-jdk-jtreg-native test-image-failure-handler \
|
||||||
|
|
|
@ -535,6 +535,8 @@ define SetupRunJtregTestBody
|
||||||
$1_JTREG_BASIC_OPTIONS += -cpa:$$(JIB_JAR)
|
$1_JTREG_BASIC_OPTIONS += -cpa:$$(JIB_JAR)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
$1_JTREG_BASIC_OPTIONS += -e:TEST_IMAGE_GRAAL_DIR=${TEST_IMAGE_DIR}/hotspot/jtreg/graal
|
||||||
|
|
||||||
ifneq ($$(JTREG_FAILURE_HANDLER_OPTIONS), )
|
ifneq ($$(JTREG_FAILURE_HANDLER_OPTIONS), )
|
||||||
$1_JTREG_LAUNCHER_OPTIONS += -Djava.library.path="$(JTREG_FAILURE_HANDLER_DIR)"
|
$1_JTREG_LAUNCHER_OPTIONS += -Djava.library.path="$(JTREG_FAILURE_HANDLER_DIR)"
|
||||||
endif
|
endif
|
||||||
|
|
57
make/autoconf/lib-tests.m4
Normal file
57
make/autoconf/lib-tests.m4
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 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
|
||||||
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
|
# published by the Free Software Foundation. Oracle designates this
|
||||||
|
# particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
# accompanied this code).
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License version
|
||||||
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# Check for graalunit libs, needed for running graalunit tests.
|
||||||
|
#
|
||||||
|
AC_DEFUN_ONCE([LIB_TESTS_SETUP_GRAALUNIT],
|
||||||
|
[
|
||||||
|
AC_ARG_WITH(graalunit-lib, [AS_HELP_STRING([--with-graalunit-lib],
|
||||||
|
[specify location of 3rd party libraries used by Graal unit tests])])
|
||||||
|
|
||||||
|
GRAALUNIT_LIB=
|
||||||
|
if test "x${with_graalunit_lib}" != x; then
|
||||||
|
AC_MSG_CHECKING([for graalunit libs])
|
||||||
|
if test "x${with_graalunit_lib}" = xno; then
|
||||||
|
AC_MSG_RESULT([disabled, graalunit tests can not be run])
|
||||||
|
elif test "x${with_graalunit_lib}" = xyes; then
|
||||||
|
AC_MSG_RESULT([not specified])
|
||||||
|
AC_MSG_ERROR([You must specify the path to 3rd party libraries used by Graal unit tests])
|
||||||
|
else
|
||||||
|
GRAALUNIT_LIB="${with_graalunit_lib}"
|
||||||
|
if test ! -d "${GRAALUNIT_LIB}"; then
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
AC_MSG_ERROR([Could not find graalunit 3rd party libraries as specified. (${with_graalunit_lib})])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([$GRAALUNIT_LIB])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
BASIC_FIXUP_PATH([GRAALUNIT_LIB])
|
||||||
|
AC_SUBST(GRAALUNIT_LIB)
|
||||||
|
])
|
||||||
|
|
|
@ -32,6 +32,7 @@ m4_include([lib-freetype.m4])
|
||||||
m4_include([lib-std.m4])
|
m4_include([lib-std.m4])
|
||||||
m4_include([lib-x11.m4])
|
m4_include([lib-x11.m4])
|
||||||
m4_include([lib-fontconfig.m4])
|
m4_include([lib-fontconfig.m4])
|
||||||
|
m4_include([lib-tests.m4])
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Determine which libraries are needed for this configuration
|
# Determine which libraries are needed for this configuration
|
||||||
|
@ -101,6 +102,7 @@ AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
|
||||||
LIB_SETUP_BUNDLED_LIBS
|
LIB_SETUP_BUNDLED_LIBS
|
||||||
LIB_SETUP_MISC_LIBS
|
LIB_SETUP_MISC_LIBS
|
||||||
LIB_SETUP_SOLARIS_STLPORT
|
LIB_SETUP_SOLARIS_STLPORT
|
||||||
|
LIB_TESTS_SETUP_GRAALUNIT
|
||||||
|
|
||||||
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
|
||||||
GLOBAL_LIBS="-lc"
|
GLOBAL_LIBS="-lc"
|
||||||
|
|
|
@ -347,6 +347,7 @@ LIBFFI_LIBS:=@LIBFFI_LIBS@
|
||||||
LIBFFI_CFLAGS:=@LIBFFI_CFLAGS@
|
LIBFFI_CFLAGS:=@LIBFFI_CFLAGS@
|
||||||
ENABLE_LIBFFI_BUNDLING:=@ENABLE_LIBFFI_BUNDLING@
|
ENABLE_LIBFFI_BUNDLING:=@ENABLE_LIBFFI_BUNDLING@
|
||||||
LIBFFI_LIB_FILE:=@LIBFFI_LIB_FILE@
|
LIBFFI_LIB_FILE:=@LIBFFI_LIB_FILE@
|
||||||
|
GRAALUNIT_LIB := @GRAALUNIT_LIB@
|
||||||
|
|
||||||
PACKAGE_PATH=@PACKAGE_PATH@
|
PACKAGE_PATH=@PACKAGE_PATH@
|
||||||
|
|
||||||
|
|
|
@ -378,7 +378,7 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||||
"linux-x64": {
|
"linux-x64": {
|
||||||
target_os: "linux",
|
target_os: "linux",
|
||||||
target_cpu: "x64",
|
target_cpu: "x64",
|
||||||
dependencies: ["devkit", "autoconf", "graphviz", "pandoc"],
|
dependencies: ["devkit", "autoconf", "graphviz", "pandoc", "graalunit_lib"],
|
||||||
configure_args: concat(common.configure_args_64bit,
|
configure_args: concat(common.configure_args_64bit,
|
||||||
"--enable-full-docs", "--with-zlib=system"),
|
"--enable-full-docs", "--with-zlib=system"),
|
||||||
default_make_targets: ["docs-bundles"],
|
default_make_targets: ["docs-bundles"],
|
||||||
|
@ -396,7 +396,7 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||||
"macosx-x64": {
|
"macosx-x64": {
|
||||||
target_os: "macosx",
|
target_os: "macosx",
|
||||||
target_cpu: "x64",
|
target_cpu: "x64",
|
||||||
dependencies: ["devkit", "autoconf"],
|
dependencies: ["devkit", "autoconf", "graalunit_lib"],
|
||||||
configure_args: concat(common.configure_args_64bit, "--with-zlib=system",
|
configure_args: concat(common.configure_args_64bit, "--with-zlib=system",
|
||||||
"--with-macosx-version-max=10.9.0"),
|
"--with-macosx-version-max=10.9.0"),
|
||||||
},
|
},
|
||||||
|
@ -420,7 +420,7 @@ var getJibProfilesProfiles = function (input, common, data) {
|
||||||
"windows-x64": {
|
"windows-x64": {
|
||||||
target_os: "windows",
|
target_os: "windows",
|
||||||
target_cpu: "x64",
|
target_cpu: "x64",
|
||||||
dependencies: ["devkit", "autoconf"],
|
dependencies: ["devkit", "autoconf", "graalunit_lib"],
|
||||||
configure_args: concat(common.configure_args_64bit),
|
configure_args: concat(common.configure_args_64bit),
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -972,6 +972,14 @@ var getJibProfilesDependencies = function (input, common) {
|
||||||
configure_args: "",
|
configure_args: "",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
graalunit_lib: {
|
||||||
|
organization: common.organization,
|
||||||
|
ext: "zip",
|
||||||
|
revision: "619_Apr_12_2018",
|
||||||
|
module: "graalunit-lib",
|
||||||
|
configure_args: "--with-graalunit-lib=" + input.get("graalunit_lib", "install_path"),
|
||||||
|
environment_name: "GRAALUNIT_LIB"
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Need to add a value for the Visual Studio tools variable to make
|
// Need to add a value for the Visual Studio tools variable to make
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Github: https://raw.githubusercontent.com/publicsuffix/list/2225db8d9f4a2a27ec697c883360632fa0c16261/public_suffix_list.dat
|
Github: https://raw.githubusercontent.com/publicsuffix/list/2225db8d9f4a2a27ec697c883360632fa0c16261/public_suffix_list.dat
|
||||||
Date: 2018-05-09
|
Date: 2018-05-24
|
||||||
|
|
144
make/test/JtregGraalUnit.gmk
Normal file
144
make/test/JtregGraalUnit.gmk
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 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
|
||||||
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
|
# published by the Free Software Foundation. Oracle designates this
|
||||||
|
# particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
# accompanied this code).
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License version
|
||||||
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# This file builds Graal component of the JTReg tests for Hotspot.
|
||||||
|
# It also covers the test-image part, where the built files are copied to the
|
||||||
|
# test image.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
default: all
|
||||||
|
|
||||||
|
include $(SPEC)
|
||||||
|
include MakeBase.gmk
|
||||||
|
include SetupJavaCompilers.gmk
|
||||||
|
|
||||||
|
TARGETS_BUILD :=
|
||||||
|
TARGETS_IMAGE :=
|
||||||
|
TARGETS_EXTRA_LIB :=
|
||||||
|
|
||||||
|
ifeq ($(INCLUDE_GRAAL), true)
|
||||||
|
ifneq ($(GRAALUNIT_LIB), )
|
||||||
|
SRC_DIR := $(TOPDIR)/src/jdk.internal.vm.compiler/share/classes
|
||||||
|
TEST_DIR := $(TOPDIR)/test/hotspot/jtreg/compiler/graalunit
|
||||||
|
COMPILE_OUTPUTDIR := $(SUPPORT_OUTPUTDIR)/test/graalunit
|
||||||
|
LIB_OUTPUTDIR := $(TEST_IMAGE_DIR)/hotspot/jtreg/graal
|
||||||
|
|
||||||
|
### Copy 3rd party libs
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_GRAALUNIT_LIBS, \
|
||||||
|
FILES := $(wildcard $(GRAALUNIT_LIB)/*.jar), \
|
||||||
|
DEST := $(LIB_OUTPUTDIR), \
|
||||||
|
))
|
||||||
|
|
||||||
|
TARGETS_EXTRA_LIB += $(COPY_GRAALUNIT_LIBS)
|
||||||
|
|
||||||
|
### Compile and build graalunit tests
|
||||||
|
$(eval $(call SetupJavaCompilation, BUILD_VM_COMPILER_TESTS, \
|
||||||
|
SETUP := GENERATE_USINGJDKBYTECODE, \
|
||||||
|
SRC := \
|
||||||
|
$(SRC_DIR)/jdk.internal.vm.compiler.collections.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.api.directives.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.api.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.asm.aarch64.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.asm.amd64.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.asm.sparc.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.asm.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.core.amd64.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.core.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.debug.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.graph.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.hotspot.amd64.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.hotspot.lir.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.hotspot.sparc.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.hotspot.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.lir.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.loop.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.nodes.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.options.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.phases.common.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.replacements.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.util.test/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.jtt/src \
|
||||||
|
$(SRC_DIR)/org.graalvm.compiler.lir.jtt/src \
|
||||||
|
, \
|
||||||
|
BIN := $(COMPILE_OUTPUTDIR)/jdk.vm.compiler.tests, \
|
||||||
|
JAR := $(COMPILE_OUTPUTDIR)/jdk.vm.compiler.tests.jar, \
|
||||||
|
CLASSPATH := \
|
||||||
|
$(JDK_OUTPUTDIR)/modules/jdk.internal.vm.compiler \
|
||||||
|
$(JDK_OUTPUTDIR)/modules/jdk.internal.vm.ci \
|
||||||
|
$(LIB_OUTPUTDIR)/junit-4.12.jar \
|
||||||
|
$(LIB_OUTPUTDIR)/asm-5.0.4.jar \
|
||||||
|
$(LIB_OUTPUTDIR)/asm-tree-5.0.4.jar \
|
||||||
|
$(LIB_OUTPUTDIR)/java-allocation-instrumenter.jar \
|
||||||
|
$(LIB_OUTPUTDIR)/hamcrest-core-1.3.jar \
|
||||||
|
, \
|
||||||
|
ADD_JAVAC_FLAGS := \
|
||||||
|
-Xlint:none -processorpath \
|
||||||
|
$(BUILDTOOLS_OUTPUTDIR)/jdk.vm.compiler.replacements.verifier.jar \
|
||||||
|
--add-exports jdk.unsupported/sun.misc=ALL-UNNAMED \
|
||||||
|
, \
|
||||||
|
))
|
||||||
|
|
||||||
|
TARGETS_BUILD += $(BUILD_VM_COMPILER_TESTS)
|
||||||
|
|
||||||
|
|
||||||
|
### Compile and build mxtool
|
||||||
|
$(eval $(call SetupJavaCompilation, BUILD_MXTOOL, \
|
||||||
|
SETUP := GENERATE_USINGJDKBYTECODE, \
|
||||||
|
SRC := $(TEST_DIR)/com.oracle.mxtool.junit, \
|
||||||
|
BIN := $(COMPILE_OUTPUTDIR)/com.oracle.mxtool.junit, \
|
||||||
|
JAR := $(COMPILE_OUTPUTDIR)/com.oracle.mxtool.junit.jar, \
|
||||||
|
CLASSPATH := $(LIB_OUTPUTDIR)/junit-4.12.jar, \
|
||||||
|
))
|
||||||
|
|
||||||
|
TARGETS_BUILD += $(BUILD_MXTOOL)
|
||||||
|
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Targets for building test-image.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Copy to hotspot jtreg test image
|
||||||
|
$(eval $(call SetupCopyFiles, COPY_HOTSPOT_JTREG_GRAAL, \
|
||||||
|
SRC := $(COMPILE_OUTPUTDIR), \
|
||||||
|
DEST := $(LIB_OUTPUTDIR), \
|
||||||
|
FILES := jdk.vm.compiler.tests.jar com.oracle.mxtool.junit.jar, \
|
||||||
|
))
|
||||||
|
|
||||||
|
TARGETS_IMAGE += $(COPY_HOTSPOT_JTREG_GRAAL)
|
||||||
|
else
|
||||||
|
$(info Skip building of Graal unit tests because 3rd party libraries directory is not specified)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(TARGETS_BUILD): $(TARGETS_EXTRA_LIB)
|
||||||
|
build-test-hotspot-jtreg-graal: $(TARGETS_BUILD)
|
||||||
|
test-image-hotspot-jtreg-graal: $(TARGETS_IMAGE)
|
||||||
|
|
||||||
|
all: build-test-hotspot-jtreg-graal
|
||||||
|
test-image: test-image-hotspot-jtreg-graal
|
||||||
|
|
||||||
|
.PHONY: default all build-test-hotspot-jtreg-graal test-image-hotspot-jtreg-graal test-image
|
|
@ -1638,12 +1638,6 @@ bool CompileBroker::init_compiler_runtime() {
|
||||||
* out to be a problem.
|
* out to be a problem.
|
||||||
*/
|
*/
|
||||||
void CompileBroker::shutdown_compiler_runtime(AbstractCompiler* comp, CompilerThread* thread) {
|
void CompileBroker::shutdown_compiler_runtime(AbstractCompiler* comp, CompilerThread* thread) {
|
||||||
// Free buffer blob, if allocated
|
|
||||||
if (thread->get_buffer_blob() != NULL) {
|
|
||||||
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
|
|
||||||
CodeCache::free(thread->get_buffer_blob());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (comp->should_perform_shutdown()) {
|
if (comp->should_perform_shutdown()) {
|
||||||
// There are two reasons for shutting down the compiler
|
// There are two reasons for shutting down the compiler
|
||||||
// 1) compiler runtime initialization failed
|
// 1) compiler runtime initialization failed
|
||||||
|
|
|
@ -1033,7 +1033,7 @@ ReferenceProcessor::add_to_discovered_list_mt(DiscoveredList& refs_list,
|
||||||
// The last ref must have its discovered field pointing to itself.
|
// The last ref must have its discovered field pointing to itself.
|
||||||
oop next_discovered = (current_head != NULL) ? current_head : obj;
|
oop next_discovered = (current_head != NULL) ? current_head : obj;
|
||||||
|
|
||||||
oop retest = RawAccess<>::oop_atomic_cmpxchg(next_discovered, discovered_addr, oop(NULL));
|
oop retest = HeapAccess<AS_NO_KEEPALIVE>::oop_atomic_cmpxchg(next_discovered, discovered_addr, oop(NULL));
|
||||||
|
|
||||||
if (retest == NULL) {
|
if (retest == NULL) {
|
||||||
// This thread just won the right to enqueue the object.
|
// This thread just won the right to enqueue the object.
|
||||||
|
|
|
@ -1490,7 +1490,8 @@ Node* IfNode::dominated_by(Node* prev_dom, PhaseIterGVN *igvn) {
|
||||||
// be skipped. For example, range check predicate has two checks
|
// be skipped. For example, range check predicate has two checks
|
||||||
// for lower and upper bounds.
|
// for lower and upper bounds.
|
||||||
ProjNode* unc_proj = proj_out(1 - prev_dom->as_Proj()->_con)->as_Proj();
|
ProjNode* unc_proj = proj_out(1 - prev_dom->as_Proj()->_con)->as_Proj();
|
||||||
if (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate) != NULL) {
|
if (unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate) != NULL ||
|
||||||
|
unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_profile_predicate) != NULL) {
|
||||||
prev_dom = idom;
|
prev_dom = idom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1056,7 +1056,9 @@ void PhaseIdealLoop::loop_predication_follow_branches(Node *n, IdealLoopTree *lo
|
||||||
stack.push(in, 1);
|
stack.push(in, 1);
|
||||||
break;
|
break;
|
||||||
} else if (in->is_IfProj() &&
|
} else if (in->is_IfProj() &&
|
||||||
in->as_Proj()->is_uncommon_trap_if_pattern(Deoptimization::Reason_none)) {
|
in->as_Proj()->is_uncommon_trap_if_pattern(Deoptimization::Reason_none) &&
|
||||||
|
(in->in(0)->Opcode() == Op_If ||
|
||||||
|
in->in(0)->Opcode() == Op_RangeCheck)) {
|
||||||
if (pf.to(in) * loop_trip_cnt >= 1) {
|
if (pf.to(in) * loop_trip_cnt >= 1) {
|
||||||
stack.push(in, 1);
|
stack.push(in, 1);
|
||||||
}
|
}
|
||||||
|
@ -1281,7 +1283,7 @@ bool PhaseIdealLoop::loop_predication_impl(IdealLoopTree *loop) {
|
||||||
Node* n = skip_loop_predicates(entry);
|
Node* n = skip_loop_predicates(entry);
|
||||||
// Check if predicates were already added to the profile predicate
|
// Check if predicates were already added to the profile predicate
|
||||||
// block
|
// block
|
||||||
if (n != entry->in(0)->in(0)) {
|
if (n != entry->in(0)->in(0) || n->outcnt() != 1) {
|
||||||
has_profile_predicates = true;
|
has_profile_predicates = true;
|
||||||
}
|
}
|
||||||
entry = n;
|
entry = n;
|
||||||
|
|
|
@ -4224,34 +4224,34 @@ void PhaseIdealLoop::build_loop_late_post( Node *n ) {
|
||||||
// which can inhibit range check elimination.
|
// which can inhibit range check elimination.
|
||||||
if (least != early) {
|
if (least != early) {
|
||||||
Node* ctrl_out = least->unique_ctrl_out();
|
Node* ctrl_out = least->unique_ctrl_out();
|
||||||
if (ctrl_out && ctrl_out->is_CountedLoop() &&
|
if (ctrl_out && ctrl_out->is_Loop() &&
|
||||||
least == ctrl_out->in(LoopNode::EntryControl)) {
|
least == ctrl_out->in(LoopNode::EntryControl)) {
|
||||||
|
// Move the node above predicates as far up as possible so a
|
||||||
|
// following pass of loop predication doesn't hoist a predicate
|
||||||
|
// that depends on it above that node.
|
||||||
Node* new_ctrl = least;
|
Node* new_ctrl = least;
|
||||||
// Move the node above predicates so a following pass of loop
|
for (;;) {
|
||||||
// predication doesn't hoist a predicate that depends on it
|
if (!new_ctrl->is_Proj()) {
|
||||||
// above that node.
|
break;
|
||||||
if (find_predicate_insertion_point(new_ctrl, Deoptimization::Reason_loop_limit_check) != NULL) {
|
|
||||||
new_ctrl = new_ctrl->in(0)->in(0);
|
|
||||||
assert(is_dominator(early, new_ctrl), "least != early so we can move up the dominator tree");
|
|
||||||
}
|
|
||||||
if (find_predicate_insertion_point(new_ctrl, Deoptimization::Reason_profile_predicate) != NULL) {
|
|
||||||
Node* c = new_ctrl->in(0)->in(0);
|
|
||||||
assert(is_dominator(early, c), "least != early so we can move up the dominator tree");
|
|
||||||
new_ctrl = c;
|
|
||||||
}
|
|
||||||
if (find_predicate_insertion_point(new_ctrl, Deoptimization::Reason_predicate) != NULL) {
|
|
||||||
Node* c = new_ctrl->in(0)->in(0);
|
|
||||||
assert(is_dominator(early, c), "least != early so we can move up the dominator tree");
|
|
||||||
new_ctrl = c;
|
|
||||||
}
|
|
||||||
if (new_ctrl != ctrl_out) {
|
|
||||||
least = new_ctrl;
|
|
||||||
} else if (ctrl_out->is_CountedLoop() || ctrl_out->is_OuterStripMinedLoop()) {
|
|
||||||
Node* least_dom = idom(least);
|
|
||||||
if (get_loop(least_dom)->is_member(get_loop(least))) {
|
|
||||||
least = least_dom;
|
|
||||||
}
|
}
|
||||||
|
CallStaticJavaNode* call = new_ctrl->as_Proj()->is_uncommon_trap_if_pattern(Deoptimization::Reason_none);
|
||||||
|
if (call == NULL) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
int req = call->uncommon_trap_request();
|
||||||
|
Deoptimization::DeoptReason trap_reason = Deoptimization::trap_request_reason(req);
|
||||||
|
if (trap_reason != Deoptimization::Reason_loop_limit_check &&
|
||||||
|
trap_reason != Deoptimization::Reason_predicate &&
|
||||||
|
trap_reason != Deoptimization::Reason_profile_predicate) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Node* c = new_ctrl->in(0)->in(0);
|
||||||
|
if (is_dominator(c, early) && c != early) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
new_ctrl = c;
|
||||||
}
|
}
|
||||||
|
least = new_ctrl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -257,6 +257,7 @@ void PhaseIdealLoop::dominated_by( Node *prevdom, Node *iff, bool flip, bool exc
|
||||||
ProjNode* unc_proj = iff->as_If()->proj_out(1 - dp_proj->_con)->as_Proj();
|
ProjNode* unc_proj = iff->as_If()->proj_out(1 - dp_proj->_con)->as_Proj();
|
||||||
if (exclude_loop_predicate &&
|
if (exclude_loop_predicate &&
|
||||||
(unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate) != NULL ||
|
(unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_predicate) != NULL ||
|
||||||
|
unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_profile_predicate) != NULL ||
|
||||||
unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_range_check) != NULL)) {
|
unc_proj->is_uncommon_trap_proj(Deoptimization::Reason_range_check) != NULL)) {
|
||||||
// If this is a range check (IfNode::is_range_check), do not
|
// If this is a range check (IfNode::is_range_check), do not
|
||||||
// reorder because Compile::allow_range_check_smearing might have
|
// reorder because Compile::allow_range_check_smearing might have
|
||||||
|
|
|
@ -518,8 +518,7 @@ Node* LoadNode::find_previous_arraycopy(PhaseTransform* phase, Node* ld_alloc, N
|
||||||
if (ac->is_clonebasic()) {
|
if (ac->is_clonebasic()) {
|
||||||
intptr_t offset;
|
intptr_t offset;
|
||||||
AllocateNode* alloc = AllocateNode::Ideal_allocation(ac->in(ArrayCopyNode::Dest), phase, offset);
|
AllocateNode* alloc = AllocateNode::Ideal_allocation(ac->in(ArrayCopyNode::Dest), phase, offset);
|
||||||
assert(alloc != NULL && (!ReduceBulkZeroing || alloc->initialization()->is_complete_with_arraycopy()), "broken allocation");
|
if (alloc != NULL && alloc == ld_alloc) {
|
||||||
if (alloc == ld_alloc) {
|
|
||||||
return ac;
|
return ac;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -297,12 +297,12 @@ HandshakeState::HandshakeState() : _operation(NULL), _semaphore(1), _thread_in_p
|
||||||
|
|
||||||
void HandshakeState::set_operation(JavaThread* target, HandshakeOperation* op) {
|
void HandshakeState::set_operation(JavaThread* target, HandshakeOperation* op) {
|
||||||
_operation = op;
|
_operation = op;
|
||||||
SafepointMechanism::arm_local_poll(target);
|
SafepointMechanism::arm_local_poll_release(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandshakeState::clear_handshake(JavaThread* target) {
|
void HandshakeState::clear_handshake(JavaThread* target) {
|
||||||
_operation = NULL;
|
_operation = NULL;
|
||||||
SafepointMechanism::disarm_local_poll(target);
|
SafepointMechanism::disarm_local_poll_release(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandshakeState::process_self_inner(JavaThread* thread) {
|
void HandshakeState::process_self_inner(JavaThread* thread) {
|
||||||
|
|
|
@ -243,9 +243,10 @@ void SafepointSynchronize::begin() {
|
||||||
if (SafepointMechanism::uses_thread_local_poll()) {
|
if (SafepointMechanism::uses_thread_local_poll()) {
|
||||||
// Arming the per thread poll while having _state != _not_synchronized means safepointing
|
// Arming the per thread poll while having _state != _not_synchronized means safepointing
|
||||||
log_trace(safepoint)("Setting thread local yield flag for threads");
|
log_trace(safepoint)("Setting thread local yield flag for threads");
|
||||||
|
OrderAccess::storestore(); // storestore, global state -> local state
|
||||||
for (JavaThreadIteratorWithHandle jtiwh; JavaThread *cur = jtiwh.next(); ) {
|
for (JavaThreadIteratorWithHandle jtiwh; JavaThread *cur = jtiwh.next(); ) {
|
||||||
// Make sure the threads start polling, it is time to yield.
|
// Make sure the threads start polling, it is time to yield.
|
||||||
SafepointMechanism::arm_local_poll(cur); // release store, global state -> local state
|
SafepointMechanism::arm_local_poll(cur);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
OrderAccess::fence(); // storestore|storeload, global state -> local state
|
OrderAccess::fence(); // storestore|storeload, global state -> local state
|
||||||
|
@ -546,7 +547,7 @@ void SafepointSynchronize::end() {
|
||||||
for (; JavaThread *current = jtiwh.next(); ) {
|
for (; JavaThread *current = jtiwh.next(); ) {
|
||||||
ThreadSafepointState* cur_state = current->safepoint_state();
|
ThreadSafepointState* cur_state = current->safepoint_state();
|
||||||
cur_state->restart(); // TSS _running
|
cur_state->restart(); // TSS _running
|
||||||
SafepointMechanism::disarm_local_poll(current); // release store, local state -> polling page
|
SafepointMechanism::disarm_local_poll(current);
|
||||||
}
|
}
|
||||||
log_info(safepoint)("Leaving safepoint region");
|
log_info(safepoint)("Leaving safepoint region");
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -79,9 +79,13 @@ public:
|
||||||
// Blocks a thread until safepoint is completed
|
// Blocks a thread until safepoint is completed
|
||||||
static inline void block_if_requested(JavaThread* thread);
|
static inline void block_if_requested(JavaThread* thread);
|
||||||
|
|
||||||
|
// Caller is responsible for using a memory barrier if needed.
|
||||||
static inline void arm_local_poll(JavaThread* thread);
|
static inline void arm_local_poll(JavaThread* thread);
|
||||||
static inline void disarm_local_poll(JavaThread* thread);
|
static inline void disarm_local_poll(JavaThread* thread);
|
||||||
|
|
||||||
|
static inline void arm_local_poll_release(JavaThread* thread);
|
||||||
|
static inline void disarm_local_poll_release(JavaThread* thread);
|
||||||
|
|
||||||
// Setup the selected safepoint mechanism
|
// Setup the selected safepoint mechanism
|
||||||
static void initialize();
|
static void initialize();
|
||||||
static void initialize_header(JavaThread* thread);
|
static void initialize_header(JavaThread* thread);
|
||||||
|
|
|
@ -87,4 +87,12 @@ void SafepointMechanism::disarm_local_poll(JavaThread* thread) {
|
||||||
thread->set_polling_page(poll_disarmed_value());
|
thread->set_polling_page(poll_disarmed_value());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SafepointMechanism::arm_local_poll_release(JavaThread* thread) {
|
||||||
|
thread->set_polling_page_release(poll_armed_value());
|
||||||
|
}
|
||||||
|
|
||||||
|
void SafepointMechanism::disarm_local_poll_release(JavaThread* thread) {
|
||||||
|
thread->set_polling_page_release(poll_disarmed_value());
|
||||||
|
}
|
||||||
|
|
||||||
#endif // SHARE_VM_RUNTIME_SAFEPOINTMECHANISM_INLINE_HPP
|
#endif // SHARE_VM_RUNTIME_SAFEPOINTMECHANISM_INLINE_HPP
|
||||||
|
|
|
@ -3298,6 +3298,11 @@ CompilerThread::CompilerThread(CompileQueue* queue,
|
||||||
}
|
}
|
||||||
|
|
||||||
CompilerThread::~CompilerThread() {
|
CompilerThread::~CompilerThread() {
|
||||||
|
// Free buffer blob, if allocated
|
||||||
|
if (get_buffer_blob() != NULL) {
|
||||||
|
MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
|
||||||
|
CodeCache::free(get_buffer_blob());
|
||||||
|
}
|
||||||
// Delete objects which were allocated on heap.
|
// Delete objects which were allocated on heap.
|
||||||
delete _counters;
|
delete _counters;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1207,6 +1207,7 @@ class JavaThread: public Thread {
|
||||||
bool do_not_unlock_if_synchronized() { return _do_not_unlock_if_synchronized; }
|
bool do_not_unlock_if_synchronized() { return _do_not_unlock_if_synchronized; }
|
||||||
void set_do_not_unlock_if_synchronized(bool val) { _do_not_unlock_if_synchronized = val; }
|
void set_do_not_unlock_if_synchronized(bool val) { _do_not_unlock_if_synchronized = val; }
|
||||||
|
|
||||||
|
inline void set_polling_page_release(void* poll_value);
|
||||||
inline void set_polling_page(void* poll_value);
|
inline void set_polling_page(void* poll_value);
|
||||||
inline volatile void* get_polling_page();
|
inline volatile void* get_polling_page();
|
||||||
|
|
||||||
|
|
|
@ -170,10 +170,15 @@ inline bool JavaThread::stack_guards_enabled() {
|
||||||
|
|
||||||
// The release make sure this store is done after storing the handshake
|
// The release make sure this store is done after storing the handshake
|
||||||
// operation or global state
|
// operation or global state
|
||||||
inline void JavaThread::set_polling_page(void* poll_value) {
|
inline void JavaThread::set_polling_page_release(void* poll_value) {
|
||||||
OrderAccess::release_store(polling_page_addr(), poll_value);
|
OrderAccess::release_store(polling_page_addr(), poll_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Caller is responsible for using a memory barrier if needed.
|
||||||
|
inline void JavaThread::set_polling_page(void* poll_value) {
|
||||||
|
*polling_page_addr() = poll_value;
|
||||||
|
}
|
||||||
|
|
||||||
// The aqcquire make sure reading of polling page is done before
|
// The aqcquire make sure reading of polling page is done before
|
||||||
// the reading the handshake operation or the global state
|
// the reading the handshake operation or the global state
|
||||||
inline volatile void* JavaThread::get_polling_page() {
|
inline volatile void* JavaThread::get_polling_page() {
|
||||||
|
|
|
@ -100,7 +100,7 @@ public class RSAKeyFactory extends KeyFactorySpi {
|
||||||
private static void checkKeyAlgo(Key key, String expectedAlg)
|
private static void checkKeyAlgo(Key key, String expectedAlg)
|
||||||
throws InvalidKeyException {
|
throws InvalidKeyException {
|
||||||
String keyAlg = key.getAlgorithm();
|
String keyAlg = key.getAlgorithm();
|
||||||
if (!(keyAlg.equalsIgnoreCase(expectedAlg))) {
|
if (keyAlg == null || !(keyAlg.equalsIgnoreCase(expectedAlg))) {
|
||||||
throw new InvalidKeyException("Expected a " + expectedAlg
|
throw new InvalidKeyException("Expected a " + expectedAlg
|
||||||
+ " key, but got " + keyAlg);
|
+ " key, but got " + keyAlg);
|
||||||
}
|
}
|
||||||
|
@ -123,8 +123,7 @@ public class RSAKeyFactory extends KeyFactorySpi {
|
||||||
return (RSAKey)key;
|
return (RSAKey)key;
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
String keyAlgo = key.getAlgorithm();
|
KeyType type = KeyType.lookup(key.getAlgorithm());
|
||||||
KeyType type = KeyType.lookup(keyAlgo);
|
|
||||||
RSAKeyFactory kf = RSAKeyFactory.getInstance(type);
|
RSAKeyFactory kf = RSAKeyFactory.getInstance(type);
|
||||||
return (RSAKey) kf.engineTranslateKey(key);
|
return (RSAKey) kf.engineTranslateKey(key);
|
||||||
} catch (ProviderException e) {
|
} catch (ProviderException e) {
|
||||||
|
@ -268,8 +267,7 @@ public class RSAKeyFactory extends KeyFactorySpi {
|
||||||
throw new InvalidKeyException("Invalid key", e);
|
throw new InvalidKeyException("Invalid key", e);
|
||||||
}
|
}
|
||||||
} else if ("X.509".equals(key.getFormat())) {
|
} else if ("X.509".equals(key.getFormat())) {
|
||||||
byte[] encoded = key.getEncoded();
|
RSAPublicKey translated = new RSAPublicKeyImpl(key.getEncoded());
|
||||||
RSAPublicKey translated = new RSAPublicKeyImpl(encoded);
|
|
||||||
// ensure the key algorithm matches the current KeyFactory instance
|
// ensure the key algorithm matches the current KeyFactory instance
|
||||||
checkKeyAlgo(translated, type.keyAlgo());
|
checkKeyAlgo(translated, type.keyAlgo());
|
||||||
return translated;
|
return translated;
|
||||||
|
@ -313,8 +311,8 @@ public class RSAKeyFactory extends KeyFactorySpi {
|
||||||
throw new InvalidKeyException("Invalid key", e);
|
throw new InvalidKeyException("Invalid key", e);
|
||||||
}
|
}
|
||||||
} else if ("PKCS#8".equals(key.getFormat())) {
|
} else if ("PKCS#8".equals(key.getFormat())) {
|
||||||
byte[] encoded = key.getEncoded();
|
RSAPrivateKey translated =
|
||||||
RSAPrivateKey translated = RSAPrivateCrtKeyImpl.newKey(encoded);
|
RSAPrivateCrtKeyImpl.newKey(key.getEncoded());
|
||||||
// ensure the key algorithm matches the current KeyFactory instance
|
// ensure the key algorithm matches the current KeyFactory instance
|
||||||
checkKeyAlgo(translated, type.keyAlgo());
|
checkKeyAlgo(translated, type.keyAlgo());
|
||||||
return translated;
|
return translated;
|
||||||
|
|
|
@ -123,6 +123,10 @@ public final class RSAPrivateCrtKeyImpl
|
||||||
* Construct a key from its encoding. Called from newKey above.
|
* Construct a key from its encoding. Called from newKey above.
|
||||||
*/
|
*/
|
||||||
RSAPrivateCrtKeyImpl(byte[] encoded) throws InvalidKeyException {
|
RSAPrivateCrtKeyImpl(byte[] encoded) throws InvalidKeyException {
|
||||||
|
if (encoded == null || encoded.length == 0) {
|
||||||
|
throw new InvalidKeyException("Missing key encoding");
|
||||||
|
}
|
||||||
|
|
||||||
decode(encoded);
|
decode(encoded);
|
||||||
RSAKeyFactory.checkRSAProviderKeyLengths(n.bitLength(), e);
|
RSAKeyFactory.checkRSAProviderKeyLengths(n.bitLength(), e);
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -116,6 +116,9 @@ public final class RSAPublicKeyImpl extends X509Key implements RSAPublicKey {
|
||||||
* Construct a key from its encoding. Used by RSAKeyFactory.
|
* Construct a key from its encoding. Used by RSAKeyFactory.
|
||||||
*/
|
*/
|
||||||
RSAPublicKeyImpl(byte[] encoded) throws InvalidKeyException {
|
RSAPublicKeyImpl(byte[] encoded) throws InvalidKeyException {
|
||||||
|
if (encoded == null || encoded.length == 0) {
|
||||||
|
throw new InvalidKeyException("Missing key encoding");
|
||||||
|
}
|
||||||
decode(encoded); // this sets n and e value
|
decode(encoded); // this sets n and e value
|
||||||
RSAKeyFactory.checkRSAProviderKeyLengths(n.bitLength(), e);
|
RSAKeyFactory.checkRSAProviderKeyLengths(n.bitLength(), e);
|
||||||
checkExponentRange(n, e);
|
checkExponentRange(n, e);
|
||||||
|
|
|
@ -52,7 +52,11 @@ public class RSAUtil {
|
||||||
public String keyAlgo() {
|
public String keyAlgo() {
|
||||||
return algo;
|
return algo;
|
||||||
}
|
}
|
||||||
public static KeyType lookup(String name) {
|
public static KeyType lookup(String name)
|
||||||
|
throws InvalidKeyException, ProviderException {
|
||||||
|
if (name == null) {
|
||||||
|
throw new InvalidKeyException("Null key algorithm");
|
||||||
|
}
|
||||||
for (KeyType kt : KeyType.values()) {
|
for (KeyType kt : KeyType.values()) {
|
||||||
if (kt.keyAlgo().equalsIgnoreCase(name)) {
|
if (kt.keyAlgo().equalsIgnoreCase(name)) {
|
||||||
return kt;
|
return kt;
|
||||||
|
@ -133,21 +137,24 @@ public class RSAUtil {
|
||||||
throws ProviderException {
|
throws ProviderException {
|
||||||
if (params == null) return null;
|
if (params == null) return null;
|
||||||
|
|
||||||
String algName = params.getAlgorithm();
|
|
||||||
KeyType type = KeyType.lookup(algName);
|
|
||||||
Class<? extends AlgorithmParameterSpec> specCls;
|
|
||||||
switch (type) {
|
|
||||||
case RSA:
|
|
||||||
throw new ProviderException("No params accepted for " +
|
|
||||||
type.keyAlgo());
|
|
||||||
case PSS:
|
|
||||||
specCls = PSSParameterSpec.class;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new ProviderException("Unsupported RSA algorithm: " + algName);
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
|
String algName = params.getAlgorithm();
|
||||||
|
KeyType type = KeyType.lookup(algName);
|
||||||
|
Class<? extends AlgorithmParameterSpec> specCls;
|
||||||
|
switch (type) {
|
||||||
|
case RSA:
|
||||||
|
throw new ProviderException("No params accepted for " +
|
||||||
|
type.keyAlgo());
|
||||||
|
case PSS:
|
||||||
|
specCls = PSSParameterSpec.class;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new ProviderException("Unsupported RSA algorithm: " + algName);
|
||||||
|
}
|
||||||
return params.getParameterSpec(specCls);
|
return params.getParameterSpec(specCls);
|
||||||
|
} catch (ProviderException pe) {
|
||||||
|
// pass it up
|
||||||
|
throw pe;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new ProviderException(e);
|
throw new ProviderException(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
## Mozilla Public Suffix List
|
## Mozilla Public Suffix List
|
||||||
|
|
||||||
### Public Suffix Notice
|
### Public Suffix Notice
|
||||||
<pre>
|
```
|
||||||
You are receiving a copy of the Mozilla Public Suffix List in the following
|
You are receiving a copy of the Mozilla Public Suffix List in the following
|
||||||
file: <java-home>/lib/security/public_suffix_list.dat. The terms of the
|
file: <java-home>/lib/security/public_suffix_list.dat. The terms of the
|
||||||
Oracle license do NOT apply to this file; it is licensed under the
|
Oracle license do NOT apply to this file; it is licensed under the
|
||||||
|
@ -11,17 +11,17 @@ If you do not wish to use the Public Suffix List, you may remove the
|
||||||
|
|
||||||
The Source Code of this file is available under the
|
The Source Code of this file is available under the
|
||||||
Mozilla Public License, v. 2.0 and is located at
|
Mozilla Public License, v. 2.0 and is located at
|
||||||
https://github.com/publicsuffix/list/blob/03089bfe4aa5b7a2e291f33e07a28d20f875cb83/public_suffix_list.dat
|
https://raw.githubusercontent.com/publicsuffix/list/2225db8d9f4a2a27ec697c883360632fa0c16261/public_suffix_list.dat.
|
||||||
If a copy of the MPL was not distributed with this file, you can obtain one
|
If a copy of the MPL was not distributed with this file, you can obtain one
|
||||||
at http://mozilla.org/MPL/2.0/.
|
at https://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
Software distributed under the License is distributed on an "AS IS" basis,
|
Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
for the specific language governing rights and limitations under the License.
|
for the specific language governing rights and limitations under the License.
|
||||||
</pre>
|
```
|
||||||
|
|
||||||
### MPL v2.0
|
### MPL v2.0
|
||||||
<pre>
|
```
|
||||||
Mozilla Public License Version 2.0
|
Mozilla Public License Version 2.0
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
|
@ -381,7 +381,7 @@ Exhibit A - Source Code Form License Notice
|
||||||
|
|
||||||
This Source Code Form is subject to the terms of the Mozilla Public
|
This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
If it is not possible or desirable to put the notice in a particular
|
If it is not possible or desirable to put the notice in a particular
|
||||||
file, then You may include the notice in a location (such as a LICENSE
|
file, then You may include the notice in a location (such as a LICENSE
|
||||||
|
@ -396,4 +396,4 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice
|
||||||
This Source Code Form is "Incompatible With Secondary Licenses", as
|
This Source Code Form is "Incompatible With Secondary Licenses", as
|
||||||
defined by the Mozilla Public License, v. 2.0.
|
defined by the Mozilla Public License, v. 2.0.
|
||||||
|
|
||||||
</pre>
|
```
|
||||||
|
|
|
@ -3320,7 +3320,7 @@ public class AquaTabbedPaneCopyFromBasicUI extends TabbedPaneUI implements Swing
|
||||||
} else if (name == "indexForNullComponent") {
|
} else if (name == "indexForNullComponent") {
|
||||||
isRunsDirty = true;
|
isRunsDirty = true;
|
||||||
updateHtmlViews((Integer) e.getNewValue(), true);
|
updateHtmlViews((Integer) e.getNewValue(), true);
|
||||||
} else if (name == "font") {
|
} else if (name == "font" || SwingUtilities2.isScaleChanged(e)) {
|
||||||
calculatedBaseline = false;
|
calculatedBaseline = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1995, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -22,67 +22,98 @@
|
||||||
* or visit www.oracle.com if you need additional information or have any
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package java.awt;
|
package java.awt;
|
||||||
|
|
||||||
import java.io.PrintStream;
|
import java.applet.Applet;
|
||||||
import java.io.PrintWriter;
|
import java.awt.dnd.DropTarget;
|
||||||
import java.util.Objects;
|
import java.awt.event.ActionEvent;
|
||||||
import java.util.Vector;
|
import java.awt.event.AdjustmentEvent;
|
||||||
import java.util.Locale;
|
import java.awt.event.ComponentEvent;
|
||||||
import java.util.EventListener;
|
import java.awt.event.ComponentListener;
|
||||||
import java.util.HashSet;
|
import java.awt.event.FocusEvent;
|
||||||
import java.util.Map;
|
import java.awt.event.FocusListener;
|
||||||
import java.util.Set;
|
import java.awt.event.HierarchyBoundsListener;
|
||||||
import java.util.Collections;
|
import java.awt.event.HierarchyEvent;
|
||||||
|
import java.awt.event.HierarchyListener;
|
||||||
|
import java.awt.event.InputEvent;
|
||||||
|
import java.awt.event.InputMethodEvent;
|
||||||
|
import java.awt.event.InputMethodListener;
|
||||||
|
import java.awt.event.ItemEvent;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.awt.event.KeyListener;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.awt.event.MouseListener;
|
||||||
|
import java.awt.event.MouseMotionListener;
|
||||||
|
import java.awt.event.MouseWheelEvent;
|
||||||
|
import java.awt.event.MouseWheelListener;
|
||||||
|
import java.awt.event.PaintEvent;
|
||||||
|
import java.awt.event.TextEvent;
|
||||||
|
import java.awt.im.InputContext;
|
||||||
|
import java.awt.im.InputMethodRequests;
|
||||||
|
import java.awt.image.BufferStrategy;
|
||||||
|
import java.awt.image.ColorModel;
|
||||||
|
import java.awt.image.ImageObserver;
|
||||||
|
import java.awt.image.ImageProducer;
|
||||||
|
import java.awt.image.VolatileImage;
|
||||||
import java.awt.peer.ComponentPeer;
|
import java.awt.peer.ComponentPeer;
|
||||||
import java.awt.peer.ContainerPeer;
|
import java.awt.peer.ContainerPeer;
|
||||||
import java.awt.peer.LightweightPeer;
|
import java.awt.peer.LightweightPeer;
|
||||||
import java.awt.image.BufferStrategy;
|
|
||||||
import java.awt.image.ImageObserver;
|
|
||||||
import java.awt.image.ImageProducer;
|
|
||||||
import java.awt.image.ColorModel;
|
|
||||||
import java.awt.image.VolatileImage;
|
|
||||||
import java.awt.event.*;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.io.ObjectOutputStream;
|
|
||||||
import java.io.ObjectInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.beans.PropertyChangeSupport;
|
import java.beans.PropertyChangeSupport;
|
||||||
import java.beans.Transient;
|
import java.beans.Transient;
|
||||||
import java.awt.im.InputContext;
|
import java.io.IOException;
|
||||||
import java.awt.im.InputMethodRequests;
|
import java.io.ObjectInputStream;
|
||||||
import java.awt.dnd.DropTarget;
|
import java.io.ObjectOutputStream;
|
||||||
import java.security.AccessController;
|
import java.io.PrintStream;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.Serializable;
|
||||||
import java.security.AccessControlContext;
|
import java.security.AccessControlContext;
|
||||||
import javax.accessibility.*;
|
import java.security.AccessController;
|
||||||
import java.applet.Applet;
|
import java.util.Collections;
|
||||||
|
import java.util.EventListener;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.Vector;
|
||||||
|
|
||||||
|
import javax.accessibility.Accessible;
|
||||||
|
import javax.accessibility.AccessibleComponent;
|
||||||
|
import javax.accessibility.AccessibleContext;
|
||||||
|
import javax.accessibility.AccessibleRole;
|
||||||
|
import javax.accessibility.AccessibleSelection;
|
||||||
|
import javax.accessibility.AccessibleState;
|
||||||
|
import javax.accessibility.AccessibleStateSet;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JRootPane;
|
import javax.swing.JRootPane;
|
||||||
|
|
||||||
import sun.awt.ComponentFactory;
|
|
||||||
import sun.security.action.GetPropertyAction;
|
|
||||||
import sun.awt.AppContext;
|
|
||||||
import sun.awt.AWTAccessor;
|
import sun.awt.AWTAccessor;
|
||||||
|
import sun.awt.AppContext;
|
||||||
|
import sun.awt.ComponentFactory;
|
||||||
import sun.awt.ConstrainableGraphics;
|
import sun.awt.ConstrainableGraphics;
|
||||||
|
import sun.awt.EmbeddedFrame;
|
||||||
|
import sun.awt.RequestFocusController;
|
||||||
import sun.awt.SubRegionShowable;
|
import sun.awt.SubRegionShowable;
|
||||||
import sun.awt.SunToolkit;
|
import sun.awt.SunToolkit;
|
||||||
import sun.awt.EmbeddedFrame;
|
|
||||||
import sun.awt.dnd.SunDropTargetEvent;
|
import sun.awt.dnd.SunDropTargetEvent;
|
||||||
import sun.awt.im.CompositionArea;
|
import sun.awt.im.CompositionArea;
|
||||||
|
import sun.awt.image.VSyncedBSManager;
|
||||||
import sun.font.FontManager;
|
import sun.font.FontManager;
|
||||||
import sun.font.FontManagerFactory;
|
import sun.font.FontManagerFactory;
|
||||||
import sun.font.SunFontManager;
|
import sun.font.SunFontManager;
|
||||||
import sun.java2d.SunGraphics2D;
|
import sun.java2d.SunGraphics2D;
|
||||||
import sun.java2d.pipe.Region;
|
|
||||||
import sun.awt.image.VSyncedBSManager;
|
|
||||||
import sun.java2d.pipe.hw.ExtendedBufferCapabilities;
|
|
||||||
import static sun.java2d.pipe.hw.ExtendedBufferCapabilities.VSyncType.*;
|
|
||||||
import sun.awt.RequestFocusController;
|
|
||||||
import sun.java2d.SunGraphicsEnvironment;
|
import sun.java2d.SunGraphicsEnvironment;
|
||||||
|
import sun.java2d.pipe.Region;
|
||||||
|
import sun.java2d.pipe.hw.ExtendedBufferCapabilities;
|
||||||
|
import sun.security.action.GetPropertyAction;
|
||||||
import sun.swing.SwingAccessor;
|
import sun.swing.SwingAccessor;
|
||||||
import sun.util.logging.PlatformLogger;
|
import sun.util.logging.PlatformLogger;
|
||||||
|
|
||||||
|
import static sun.java2d.pipe.hw.ExtendedBufferCapabilities.VSyncType.VSYNC_DEFAULT;
|
||||||
|
import static sun.java2d.pipe.hw.ExtendedBufferCapabilities.VSyncType.VSYNC_ON;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A <em>component</em> is an object having a graphical representation
|
* A <em>component</em> is an object having a graphical representation
|
||||||
* that can be displayed on the screen and that can interact with the
|
* that can be displayed on the screen and that can interact with the
|
||||||
|
@ -1129,24 +1160,31 @@ public abstract class Component implements ImageObserver, MenuContainer,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean updateGraphicsData(GraphicsConfiguration gc) {
|
final boolean updateGraphicsData(GraphicsConfiguration gc) {
|
||||||
checkTreeLock();
|
GraphicsConfiguration oldConfig = graphicsConfig;
|
||||||
|
// First, update own graphics configuration
|
||||||
|
boolean ret = updateSelfGraphicsData(gc);
|
||||||
|
// Second, update children graphics configurations
|
||||||
|
ret |= updateChildGraphicsData(gc);
|
||||||
|
// Third, fire PropertyChange if needed
|
||||||
|
if (oldConfig != gc) {
|
||||||
|
/*
|
||||||
|
* If component is moved from one screen to another screen or shown
|
||||||
|
* for the first time graphicsConfiguration property is fired to
|
||||||
|
* enable the component to recalculate any rendering data, if needed
|
||||||
|
*/
|
||||||
|
firePropertyChange("graphicsConfiguration", oldConfig, gc);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean updateSelfGraphicsData(GraphicsConfiguration gc) {
|
||||||
|
checkTreeLock();
|
||||||
if (graphicsConfig == gc) {
|
if (graphicsConfig == gc) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
GraphicsConfiguration oldConfig = graphicsConfig;
|
|
||||||
graphicsConfig = gc;
|
graphicsConfig = gc;
|
||||||
|
|
||||||
/*
|
|
||||||
* If component is moved from one screen to another sceeen
|
|
||||||
* graphicsConfiguration property is fired to enable the component
|
|
||||||
* to recalculate any rendering data, if needed
|
|
||||||
*/
|
|
||||||
if (oldConfig != null && gc != null) {
|
|
||||||
firePropertyChange("graphicsConfiguration", oldConfig, gc);
|
|
||||||
}
|
|
||||||
|
|
||||||
ComponentPeer peer = this.peer;
|
ComponentPeer peer = this.peer;
|
||||||
if (peer != null) {
|
if (peer != null) {
|
||||||
return peer.updateGraphicsData(gc);
|
return peer.updateGraphicsData(gc);
|
||||||
|
@ -1154,6 +1192,10 @@ public abstract class Component implements ImageObserver, MenuContainer,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean updateChildGraphicsData(GraphicsConfiguration gc) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks that this component's {@code GraphicsDevice}
|
* Checks that this component's {@code GraphicsDevice}
|
||||||
* {@code idString} matches the string argument.
|
* {@code idString} matches the string argument.
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
* or visit www.oracle.com if you need additional information or have any
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package java.awt;
|
package java.awt;
|
||||||
|
|
||||||
import java.awt.dnd.DropTarget;
|
import java.awt.dnd.DropTarget;
|
||||||
|
@ -1172,10 +1173,10 @@ public class Container extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean updateGraphicsData(GraphicsConfiguration gc) {
|
final boolean updateChildGraphicsData(GraphicsConfiguration gc) {
|
||||||
checkTreeLock();
|
checkTreeLock();
|
||||||
|
|
||||||
boolean ret = super.updateGraphicsData(gc);
|
boolean ret = false;
|
||||||
|
|
||||||
for (Component comp : component) {
|
for (Component comp : component) {
|
||||||
if (comp != null) {
|
if (comp != null) {
|
||||||
|
|
|
@ -35,7 +35,7 @@ import java.awt.Rectangle;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import sun.swing.DefaultLookup;
|
import sun.swing.DefaultLookup;
|
||||||
|
import sun.swing.SwingUtilities2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders an item in a list.
|
* Renders an item in a list.
|
||||||
|
@ -259,9 +259,10 @@ public class DefaultListCellRenderer extends JLabel
|
||||||
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
|
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
|
||||||
// Strings get interned...
|
// Strings get interned...
|
||||||
if (propertyName == "text"
|
if (propertyName == "text"
|
||||||
|| ((propertyName == "font" || propertyName == "foreground")
|
|| ((SwingUtilities2.isScaleChanged(propertyName, oldValue, newValue)
|
||||||
&& oldValue != newValue
|
|| propertyName == "font" || propertyName == "foreground")
|
||||||
&& getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
|
&& oldValue != newValue
|
||||||
|
&& getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
|
||||||
|
|
||||||
super.firePropertyChange(propertyName, oldValue, newValue);
|
super.firePropertyChange(propertyName, oldValue, newValue);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -75,9 +75,8 @@ public class BasicButtonListener implements MouseListener, MouseMotionListener,
|
||||||
else if(prop == AbstractButton.CONTENT_AREA_FILLED_CHANGED_PROPERTY) {
|
else if(prop == AbstractButton.CONTENT_AREA_FILLED_CHANGED_PROPERTY) {
|
||||||
checkOpacity((AbstractButton) e.getSource() );
|
checkOpacity((AbstractButton) e.getSource() );
|
||||||
}
|
}
|
||||||
else if(prop == AbstractButton.TEXT_CHANGED_PROPERTY ||
|
else if(prop == AbstractButton.TEXT_CHANGED_PROPERTY || "font" == prop
|
||||||
"font" == prop || "foreground" == prop ||
|
|| "foreground" == prop || SwingUtilities2.isScaleChanged(e)) {
|
||||||
"ancestor" == prop || "graphicsConfiguration" == prop) {
|
|
||||||
AbstractButton b = (AbstractButton) e.getSource();
|
AbstractButton b = (AbstractButton) e.getSource();
|
||||||
BasicHTML.updateRenderer(b, b.getText());
|
BasicHTML.updateRenderer(b, b.getText());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -36,6 +36,7 @@ import java.beans.PropertyChangeListener;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import sun.awt.AppContext;
|
import sun.awt.AppContext;
|
||||||
import sun.swing.DefaultLookup;
|
import sun.swing.DefaultLookup;
|
||||||
|
import sun.swing.SwingUtilities2;
|
||||||
import sun.swing.UIAction;
|
import sun.swing.UIAction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1809,6 +1810,10 @@ public class BasicComboBoxUI extends ComboBoxUI {
|
||||||
isMinimumSizeDirty = true;
|
isMinimumSizeDirty = true;
|
||||||
isDisplaySizeDirty = true;
|
isDisplaySizeDirty = true;
|
||||||
comboBox.validate();
|
comboBox.validate();
|
||||||
|
} else if (SwingUtilities2.isScaleChanged(e)) {
|
||||||
|
isMinimumSizeDirty = true;
|
||||||
|
isDisplaySizeDirty = true;
|
||||||
|
comboBox.validate();
|
||||||
}
|
}
|
||||||
else if ( propertyName == JComponent.TOOL_TIP_TEXT_KEY ) {
|
else if ( propertyName == JComponent.TOOL_TIP_TEXT_KEY ) {
|
||||||
updateToolTipTextForChildren();
|
updateToolTipTextForChildren();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -477,8 +477,8 @@ public class BasicLabelUI extends LabelUI implements PropertyChangeListener
|
||||||
|
|
||||||
public void propertyChange(PropertyChangeEvent e) {
|
public void propertyChange(PropertyChangeEvent e) {
|
||||||
String name = e.getPropertyName();
|
String name = e.getPropertyName();
|
||||||
if (name == "text" || "font" == name || "foreground" == name ||
|
if (name == "text" || "font" == name || "foreground" == name
|
||||||
"ancestor" == name || "graphicsConfiguration" == name) {
|
|| SwingUtilities2.isScaleChanged(e)) {
|
||||||
// remove the old html view client property if one
|
// remove the old html view client property if one
|
||||||
// existed, and install a new one if the text installed
|
// existed, and install a new one if the text installed
|
||||||
// into the JLabel is html source.
|
// into the JLabel is html source.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -2656,7 +2656,8 @@ public class BasicListUI extends ListUI
|
||||||
updateLayoutStateNeeded |= cellRendererChanged;
|
updateLayoutStateNeeded |= cellRendererChanged;
|
||||||
redrawList();
|
redrawList();
|
||||||
}
|
}
|
||||||
else if (propertyName == "font") {
|
else if (propertyName == "font"
|
||||||
|
|| SwingUtilities2.isScaleChanged(e)) {
|
||||||
updateLayoutStateNeeded |= fontChanged;
|
updateLayoutStateNeeded |= fontChanged;
|
||||||
redrawList();
|
redrawList();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -1145,9 +1145,8 @@ public class BasicMenuItemUI extends MenuItemUI
|
||||||
if (name == "labelFor" || name == "displayedMnemonic" ||
|
if (name == "labelFor" || name == "displayedMnemonic" ||
|
||||||
name == "accelerator") {
|
name == "accelerator") {
|
||||||
updateAcceleratorBinding();
|
updateAcceleratorBinding();
|
||||||
} else if (name == "text" || "font" == name ||
|
} else if (name == "text" || "font" == name || "foreground" == name
|
||||||
"foreground" == name ||
|
|| SwingUtilities2.isScaleChanged(e)) {
|
||||||
"ancestor" == name || "graphicsConfiguration" == name) {
|
|
||||||
// remove the old html view client property if one
|
// remove the old html view client property if one
|
||||||
// existed, and install a new one if the text installed
|
// existed, and install a new one if the text installed
|
||||||
// into the JLabel is html source.
|
// into the JLabel is html source.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -35,6 +35,7 @@ import javax.swing.*;
|
||||||
import javax.swing.event.*;
|
import javax.swing.event.*;
|
||||||
import javax.swing.plaf.*;
|
import javax.swing.plaf.*;
|
||||||
import sun.swing.DefaultLookup;
|
import sun.swing.DefaultLookup;
|
||||||
|
import sun.swing.SwingUtilities2;
|
||||||
import sun.swing.UIAction;
|
import sun.swing.UIAction;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1829,6 +1830,7 @@ public class BasicSliderUI extends SliderUI{
|
||||||
propertyName == "paintTicks" ||
|
propertyName == "paintTicks" ||
|
||||||
propertyName == "paintTrack" ||
|
propertyName == "paintTrack" ||
|
||||||
propertyName == "font" ||
|
propertyName == "font" ||
|
||||||
|
SwingUtilities2.isScaleChanged(e) ||
|
||||||
propertyName == "paintLabels" ||
|
propertyName == "paintLabels" ||
|
||||||
propertyName == "Slider.paintThumbArrowShape") {
|
propertyName == "Slider.paintThumbArrowShape") {
|
||||||
checkedLabelBaselines = false;
|
checkedLabelBaselines = false;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -4008,7 +4008,7 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants {
|
||||||
} else if (name == "indexForNullComponent") {
|
} else if (name == "indexForNullComponent") {
|
||||||
isRunsDirty = true;
|
isRunsDirty = true;
|
||||||
updateHtmlViews((Integer)e.getNewValue(), true);
|
updateHtmlViews((Integer)e.getNewValue(), true);
|
||||||
} else if (name == "font") {
|
} else if (name == "font" || SwingUtilities2.isScaleChanged(e)) {
|
||||||
calculatedBaseline = false;
|
calculatedBaseline = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -260,9 +260,8 @@ public class BasicToolTipUI extends ToolTipUI
|
||||||
PropertyChangeListener {
|
PropertyChangeListener {
|
||||||
public void propertyChange(PropertyChangeEvent e) {
|
public void propertyChange(PropertyChangeEvent e) {
|
||||||
String name = e.getPropertyName();
|
String name = e.getPropertyName();
|
||||||
if (name.equals("tiptext") || "font".equals(name) ||
|
if (name.equals("tiptext") || "foreground".equals(name)
|
||||||
"foreground".equals(name) ||
|
|| "font".equals(name) || SwingUtilities2.isScaleChanged(e)) {
|
||||||
"ancestor" == name || "graphicsConfiguration" == name) {
|
|
||||||
// remove the old html view client property if one
|
// remove the old html view client property if one
|
||||||
// existed, and install a new one if the text installed
|
// existed, and install a new one if the text installed
|
||||||
// into the JLabel is html source.
|
// into the JLabel is html source.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -3843,7 +3843,8 @@ public class BasicTreeUI extends TreeUI
|
||||||
else if(changeName == JTree.SELECTION_MODEL_PROPERTY) {
|
else if(changeName == JTree.SELECTION_MODEL_PROPERTY) {
|
||||||
setSelectionModel(tree.getSelectionModel());
|
setSelectionModel(tree.getSelectionModel());
|
||||||
}
|
}
|
||||||
else if(changeName == "font") {
|
else if(changeName == "font"
|
||||||
|
|| SwingUtilities2.isScaleChanged(event)) {
|
||||||
completeEditing();
|
completeEditing();
|
||||||
if(treeState != null)
|
if(treeState != null)
|
||||||
treeState.invalidateSizes();
|
treeState.invalidateSizes();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -35,6 +35,7 @@ import javax.swing.plaf.basic.BasicToolTipUI;
|
||||||
import javax.swing.plaf.ComponentUI;
|
import javax.swing.plaf.ComponentUI;
|
||||||
import javax.swing.text.View;
|
import javax.swing.text.View;
|
||||||
|
|
||||||
|
import sun.swing.SwingUtilities2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides the Synth L&F UI delegate for
|
* Provides the Synth L&F UI delegate for
|
||||||
|
@ -226,9 +227,8 @@ public class SynthToolTipUI extends BasicToolTipUI
|
||||||
updateStyle((JToolTip)e.getSource());
|
updateStyle((JToolTip)e.getSource());
|
||||||
}
|
}
|
||||||
String name = e.getPropertyName();
|
String name = e.getPropertyName();
|
||||||
if (name.equals("tiptext") || "font".equals(name) ||
|
if (name.equals("tiptext") || SwingUtilities2.isScaleChanged(e)
|
||||||
"foreground".equals(name) ||
|
|| "foreground".equals(name) || "font".equals(name)) {
|
||||||
"ancestor" == name || "graphicsConfiguration" == name) {
|
|
||||||
// remove the old html view client property if one
|
// remove the old html view client property if one
|
||||||
// existed, and install a new one if the text installed
|
// existed, and install a new one if the text installed
|
||||||
// into the JLabel is html source.
|
// into the JLabel is html source.
|
||||||
|
|
|
@ -34,7 +34,7 @@ import java.awt.Rectangle;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import sun.swing.DefaultLookup;
|
import sun.swing.DefaultLookup;
|
||||||
|
import sun.swing.SwingUtilities2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The standard class for rendering (displaying) individual cells
|
* The standard class for rendering (displaying) individual cells
|
||||||
|
@ -345,11 +345,12 @@ public class DefaultTableCellRenderer extends JLabel
|
||||||
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
|
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
|
||||||
// Strings get interned...
|
// Strings get interned...
|
||||||
if (propertyName=="text"
|
if (propertyName=="text"
|
||||||
|| propertyName == "labelFor"
|
|| propertyName == "labelFor"
|
||||||
|| propertyName == "displayedMnemonic"
|
|| propertyName == "displayedMnemonic"
|
||||||
|| ((propertyName == "font" || propertyName == "foreground")
|
|| ((SwingUtilities2.isScaleChanged(propertyName, oldValue, newValue)
|
||||||
&& oldValue != newValue
|
|| propertyName == "font" || propertyName == "foreground")
|
||||||
&& getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
|
&& oldValue != newValue
|
||||||
|
&& getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
|
||||||
|
|
||||||
super.firePropertyChange(propertyName, oldValue, newValue);
|
super.firePropertyChange(propertyName, oldValue, newValue);
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ import javax.swing.LookAndFeel;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import javax.swing.border.EmptyBorder;
|
import javax.swing.border.EmptyBorder;
|
||||||
import sun.swing.DefaultLookup;
|
import sun.swing.DefaultLookup;
|
||||||
|
import sun.swing.SwingUtilities2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays an entry in a tree.
|
* Displays an entry in a tree.
|
||||||
|
@ -690,9 +691,10 @@ public class DefaultTreeCellRenderer extends JLabel implements TreeCellRenderer
|
||||||
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
|
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
|
||||||
// Strings get interned...
|
// Strings get interned...
|
||||||
if (propertyName == "text"
|
if (propertyName == "text"
|
||||||
|| ((propertyName == "font" || propertyName == "foreground")
|
|| ((SwingUtilities2.isScaleChanged(propertyName, oldValue, newValue)
|
||||||
&& oldValue != newValue
|
|| propertyName == "font" || propertyName == "foreground")
|
||||||
&& getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
|
&& oldValue != newValue
|
||||||
|
&& getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey) != null)) {
|
||||||
|
|
||||||
super.firePropertyChange(propertyName, oldValue, newValue);
|
super.firePropertyChange(propertyName, oldValue, newValue);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,48 +25,95 @@
|
||||||
|
|
||||||
package sun.swing;
|
package sun.swing;
|
||||||
|
|
||||||
import java.lang.reflect.*;
|
import java.awt.AWTEvent;
|
||||||
import java.awt.*;
|
import java.awt.Color;
|
||||||
import static java.awt.RenderingHints.*;
|
import java.awt.Component;
|
||||||
import java.awt.event.*;
|
import java.awt.Container;
|
||||||
import java.awt.font.*;
|
import java.awt.Dimension;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.EventQueue;
|
||||||
|
import java.awt.FocusTraversalPolicy;
|
||||||
|
import java.awt.Font;
|
||||||
|
import java.awt.FontMetrics;
|
||||||
|
import java.awt.Graphics;
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import java.awt.GraphicsConfiguration;
|
||||||
|
import java.awt.GraphicsEnvironment;
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.awt.PrintGraphics;
|
||||||
|
import java.awt.Rectangle;
|
||||||
|
import java.awt.RenderingHints;
|
||||||
|
import java.awt.Shape;
|
||||||
|
import java.awt.Toolkit;
|
||||||
|
import java.awt.event.InputEvent;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import java.awt.font.FontRenderContext;
|
||||||
|
import java.awt.font.GlyphVector;
|
||||||
|
import java.awt.font.LineBreakMeasurer;
|
||||||
|
import java.awt.font.TextAttribute;
|
||||||
|
import java.awt.font.TextHitInfo;
|
||||||
|
import java.awt.font.TextLayout;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import static java.awt.geom.AffineTransform.TYPE_FLIP;
|
import java.awt.geom.Rectangle2D;
|
||||||
import static java.awt.geom.AffineTransform.TYPE_MASK_SCALE;
|
|
||||||
import static java.awt.geom.AffineTransform.TYPE_TRANSLATION;
|
|
||||||
import java.awt.print.PrinterGraphics;
|
import java.awt.print.PrinterGraphics;
|
||||||
import java.text.BreakIterator;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.text.CharacterIterator;
|
import java.io.BufferedInputStream;
|
||||||
import java.text.AttributedCharacterIterator;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.text.AttributedString;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import javax.swing.*;
|
import java.lang.reflect.Modifier;
|
||||||
import javax.swing.event.TreeModelEvent;
|
|
||||||
import javax.swing.text.Highlighter;
|
|
||||||
import javax.swing.text.JTextComponent;
|
|
||||||
import javax.swing.text.DefaultHighlighter;
|
|
||||||
import javax.swing.text.DefaultCaret;
|
|
||||||
import javax.swing.table.TableCellRenderer;
|
|
||||||
import javax.swing.table.TableColumnModel;
|
|
||||||
import javax.swing.tree.TreeModel;
|
|
||||||
import javax.swing.tree.TreePath;
|
|
||||||
|
|
||||||
import sun.java2d.pipe.Region;
|
|
||||||
import sun.print.ProxyPrintGraphics;
|
|
||||||
import sun.awt.*;
|
|
||||||
import java.io.*;
|
|
||||||
import java.security.AccessController;
|
import java.security.AccessController;
|
||||||
import java.security.PrivilegedAction;
|
import java.security.PrivilegedAction;
|
||||||
import java.util.*;
|
import java.text.AttributedCharacterIterator;
|
||||||
import sun.font.FontDesignMetrics;
|
import java.text.AttributedString;
|
||||||
import sun.font.FontUtilities;
|
import java.text.BreakIterator;
|
||||||
import sun.java2d.SunGraphicsEnvironment;
|
import java.text.CharacterIterator;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
import java.util.concurrent.FutureTask;
|
import java.util.concurrent.FutureTask;
|
||||||
|
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JList;
|
||||||
|
import javax.swing.JTable;
|
||||||
|
import javax.swing.ListCellRenderer;
|
||||||
|
import javax.swing.ListSelectionModel;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
import javax.swing.UIDefaults;
|
||||||
|
import javax.swing.UIManager;
|
||||||
|
import javax.swing.event.TreeModelEvent;
|
||||||
|
import javax.swing.table.TableCellRenderer;
|
||||||
|
import javax.swing.table.TableColumnModel;
|
||||||
|
import javax.swing.text.DefaultCaret;
|
||||||
|
import javax.swing.text.DefaultHighlighter;
|
||||||
|
import javax.swing.text.Highlighter;
|
||||||
|
import javax.swing.text.JTextComponent;
|
||||||
|
import javax.swing.tree.TreeModel;
|
||||||
|
import javax.swing.tree.TreePath;
|
||||||
|
|
||||||
|
import sun.awt.AWTAccessor;
|
||||||
|
import sun.awt.AWTPermissions;
|
||||||
|
import sun.awt.AppContext;
|
||||||
|
import sun.awt.SunToolkit;
|
||||||
|
import sun.font.FontDesignMetrics;
|
||||||
|
import sun.font.FontUtilities;
|
||||||
|
import sun.java2d.SunGraphicsEnvironment;
|
||||||
|
import sun.print.ProxyPrintGraphics;
|
||||||
|
|
||||||
|
import static java.awt.RenderingHints.KEY_TEXT_ANTIALIASING;
|
||||||
|
import static java.awt.RenderingHints.KEY_TEXT_LCD_CONTRAST;
|
||||||
|
import static java.awt.RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT;
|
||||||
|
import static java.awt.RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT;
|
||||||
|
import static java.awt.RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HBGR;
|
||||||
|
import static java.awt.RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB;
|
||||||
|
import static java.awt.RenderingHints.VALUE_TEXT_ANTIALIAS_OFF;
|
||||||
|
import static java.awt.geom.AffineTransform.TYPE_FLIP;
|
||||||
|
import static java.awt.geom.AffineTransform.TYPE_MASK_SCALE;
|
||||||
|
import static java.awt.geom.AffineTransform.TYPE_TRANSLATION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A collection of utility methods for Swing.
|
* A collection of utility methods for Swing.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -2256,4 +2303,40 @@ public class SwingUtilities2 {
|
||||||
public interface RepaintListener {
|
public interface RepaintListener {
|
||||||
void repaintPerformed(JComponent c, int x, int y, int w, int h);
|
void repaintPerformed(JComponent c, int x, int y, int w, int h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether or not the scale used by {@code GraphicsConfiguration}
|
||||||
|
* was changed.
|
||||||
|
*
|
||||||
|
* @param ev a {@code PropertyChangeEvent}
|
||||||
|
* @return whether or not the scale was changed
|
||||||
|
* @since 11
|
||||||
|
*/
|
||||||
|
public static boolean isScaleChanged(final PropertyChangeEvent ev) {
|
||||||
|
return isScaleChanged(ev.getPropertyName(), ev.getOldValue(),
|
||||||
|
ev.getNewValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether or not the scale used by {@code GraphicsConfiguration}
|
||||||
|
* was changed.
|
||||||
|
*
|
||||||
|
* @param name the name of the property
|
||||||
|
* @param oldValue the old value of the property
|
||||||
|
* @param newValue the new value of the property
|
||||||
|
* @return whether or not the scale was changed
|
||||||
|
* @since 11
|
||||||
|
*/
|
||||||
|
public static boolean isScaleChanged(final String name,
|
||||||
|
final Object oldValue,
|
||||||
|
final Object newValue) {
|
||||||
|
if (oldValue == newValue || !"graphicsConfiguration".equals(name)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var newGC = (GraphicsConfiguration) oldValue;
|
||||||
|
var oldGC = (GraphicsConfiguration) newValue;
|
||||||
|
var newTx = newGC != null ? newGC.getDefaultTransform() : null;
|
||||||
|
var oldTx = oldGC != null ? oldGC.getDefaultTransform() : null;
|
||||||
|
return !Objects.equals(newTx, oldTx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,8 +117,8 @@ public class CSVUtilTest {
|
||||||
CSVUtil.Escape.println(new PrintStream(outputStream), format, toObjectArray(args));
|
CSVUtil.Escape.println(new PrintStream(outputStream), format, toObjectArray(args));
|
||||||
// get the actual string
|
// get the actual string
|
||||||
String printedStream = new String(outputStream.toByteArray(), StandardCharsets.UTF_8);
|
String printedStream = new String(outputStream.toByteArray(), StandardCharsets.UTF_8);
|
||||||
// remove newline
|
// add newline to the expected string
|
||||||
assertEquals(expected, printedStream.substring(0, printedStream.length() - 1));
|
assertEquals(expected + System.lineSeparator(), printedStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Object[] toObjectArray(String args) {
|
private static Object[] toObjectArray(String args) {
|
||||||
|
|
|
@ -27,6 +27,8 @@ package org.graalvm.compiler.debug.test;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
import java.nio.file.FileVisitResult;
|
import java.nio.file.FileVisitResult;
|
||||||
import java.nio.file.FileVisitor;
|
import java.nio.file.FileVisitor;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
@ -80,15 +82,15 @@ public class VersionsTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void emptyProperties() {
|
public void emptyProperties() throws URISyntaxException {
|
||||||
Path root = Paths.get("file:/");
|
Path root = Paths.get(new URI("file:/"));
|
||||||
Versions v = new Versions(root);
|
Versions v = new Versions(root);
|
||||||
assertEmpty(v.withVersions(null));
|
assertEmpty(v.withVersions(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void emptyWithNullProperties() {
|
public void emptyWithNullProperties() throws URISyntaxException {
|
||||||
Path root = Paths.get("file:/");
|
Path root = Paths.get(new URI("file:/"));
|
||||||
Versions v = new Versions(root);
|
Versions v = new Versions(root);
|
||||||
assertEmpty(v.withVersions(null));
|
assertEmpty(v.withVersions(null));
|
||||||
}
|
}
|
||||||
|
|
|
@ -448,6 +448,9 @@ JTREG_BASIC_OPTIONS += -e:JDK8_HOME=${JT_JAVA}
|
||||||
ifneq ($(VS120COMNTOOLS), )
|
ifneq ($(VS120COMNTOOLS), )
|
||||||
JTREG_BASIC_OPTIONS += -e:VS120COMNTOOLS="$(shell $(GETMIXEDPATH) "$(patsubst %\,%,$(VS120COMNTOOLS))")"
|
JTREG_BASIC_OPTIONS += -e:VS120COMNTOOLS="$(shell $(GETMIXEDPATH) "$(patsubst %\,%,$(VS120COMNTOOLS))")"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
JTREG_BASIC_OPTIONS += -e:TEST_IMAGE_GRAAL_DIR=${TEST_IMAGE_DIR}/hotspot/jtreg/graal
|
||||||
|
|
||||||
# Set other vm and test options
|
# Set other vm and test options
|
||||||
JTREG_TEST_OPTIONS += $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_VM_ARGS:%=-vmoption:%)
|
JTREG_TEST_OPTIONS += $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_VM_ARGS:%=-vmoption:%)
|
||||||
ifneq ($(JIB_JAR), )
|
ifneq ($(JIB_JAR), )
|
||||||
|
|
|
@ -149,8 +149,6 @@ vmTestbase/nsk/jvmti/PopFrame/popframe009/TestDescription.java
|
||||||
vmTestbase/nsk/jvmti/ForceEarlyReturn/ForceEarlyReturn001/TestDescription.java 8195674 generic-all
|
vmTestbase/nsk/jvmti/ForceEarlyReturn/ForceEarlyReturn001/TestDescription.java 8195674 generic-all
|
||||||
vmTestbase/nsk/jvmti/ForceEarlyReturn/ForceEarlyReturn002/TestDescription.java 8195674 generic-all
|
vmTestbase/nsk/jvmti/ForceEarlyReturn/ForceEarlyReturn002/TestDescription.java 8195674 generic-all
|
||||||
|
|
||||||
vmTestbase/nsk/jvmti/AttachOnDemand/attach024/TestDescription.java 8195630 generic-all
|
|
||||||
|
|
||||||
vmTestbase/nsk/jvmti/unit/FollowReferences/followref003/TestDescription.java 8202342 generic-all
|
vmTestbase/nsk/jvmti/unit/FollowReferences/followref003/TestDescription.java 8202342 generic-all
|
||||||
|
|
||||||
vmTestbase/nsk/jvmti/scenarios/hotswap/HS102/hs102t002/TestDescription.java 8204506 macosx-all
|
vmTestbase/nsk/jvmti/scenarios/hotswap/HS102/hs102t002/TestDescription.java 8204506 macosx-all
|
||||||
|
@ -167,3 +165,19 @@ compiler/stable/TestStableObject.java 8204347 gener
|
||||||
compiler/stable/TestStableShort.java 8204347 generic-all
|
compiler/stable/TestStableShort.java 8204347 generic-all
|
||||||
compiler/stable/TestStableUByte.java 8204347 generic-all
|
compiler/stable/TestStableUByte.java 8204347 generic-all
|
||||||
compiler/stable/TestStableUShort.java 8204347 generic-all
|
compiler/stable/TestStableUShort.java 8204347 generic-all
|
||||||
|
|
||||||
|
# Graal unit tests
|
||||||
|
org.graalvm.compiler.core.test.CheckGraalInvariants 8205081
|
||||||
|
org.graalvm.compiler.core.test.inlining.PolymorphicInliningTest 8205081
|
||||||
|
org.graalvm.compiler.core.test.OptionsVerifierTest 8205081
|
||||||
|
org.graalvm.compiler.core.test.ProfilingInfoTest 8205081
|
||||||
|
org.graalvm.compiler.hotspot.test.CompilationWrapperTest 8205081
|
||||||
|
org.graalvm.compiler.hotspot.test.HsErrLogTest 8205081
|
||||||
|
org.graalvm.compiler.hotspot.test.OptionsInFileTest 8205081
|
||||||
|
org.graalvm.compiler.replacements.test.classfile.ClassfileBytecodeProviderTest 8205081
|
||||||
|
org.graalvm.compiler.replacements.test.classfile.RedefineIntrinsicTest 8205081
|
||||||
|
|
||||||
|
org.graalvm.compiler.core.test.deopt.CompiledMethodTest 8202955
|
||||||
|
org.graalvm.compiler.core.test.CountedLoopTest 8199885
|
||||||
|
org.graalvm.compiler.debug.test.DebugContextTest 8203504
|
||||||
|
org.graalvm.compiler.core.test.VerifyDebugUsageTest 8205078
|
||||||
|
|
|
@ -76,7 +76,8 @@ tier1_compiler = \
|
||||||
hotspot_not_fast_compiler = \
|
hotspot_not_fast_compiler = \
|
||||||
:hotspot_compiler \
|
:hotspot_compiler \
|
||||||
-:tier1_compiler \
|
-:tier1_compiler \
|
||||||
-:hotspot_slow_compiler
|
-:hotspot_slow_compiler \
|
||||||
|
-compiler/graalunit
|
||||||
|
|
||||||
hotspot_slow_compiler = \
|
hotspot_slow_compiler = \
|
||||||
compiler/codegen/aes \
|
compiler/codegen/aes \
|
||||||
|
|
38
test/hotspot/jtreg/compiler/graalunit/ApiDirectivesTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/ApiDirectivesTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.api.directives.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/ApiTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/ApiTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.api.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/AsmAarch64Test.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/AsmAarch64Test.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.asm.aarch64.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/AsmAmd64Test.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/AsmAmd64Test.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.asm.amd64.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/AsmSparcTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/AsmSparcTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.asm.sparc.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/CollectionsTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/CollectionsTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix jdk.internal.vm.compiler.collections.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/CoreAmd64Test.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/CoreAmd64Test.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.core.amd64.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/CoreSparcTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/CoreSparcTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
* @requires vm.simpleArch == "sparcv9"
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.core.sparc.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/CoreTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/CoreTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.core.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/DebugTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/DebugTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.debug.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/GraphTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/GraphTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
* @requires vm.graal.enabled
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.graph.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/HotspotAmd64Test.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/HotspotAmd64Test.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.hotspot.amd64.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/HotspotLirTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/HotspotLirTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.hotspot.lir.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/HotspotTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/HotspotTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.hotspot.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/Jtt.MicroTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/Jtt.MicroTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.micro -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttBackendTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttBackendTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.backend -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttBytecodeTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttBytecodeTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.bytecode -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttExceptTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttExceptTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.except -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttHotpathTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttHotpathTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.hotpath -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttHotspotTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttHotspotTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.hotspot -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttJdkTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttJdkTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.jdk -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttLangALTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttLangALTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.lang.[a-lA-L] -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttLangMTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttLangMTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.lang.[mM] -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttLangNZTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttLangNZTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.lang.[n-zN-Z] -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttLoopTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttLoopTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.loop -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttOptimizeTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttOptimizeTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.optimize -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttReflectAETest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttReflectAETest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.reflect.[a-eA-E] -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttReflectFTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttReflectFTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.reflect.[fF] -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttReflectGZTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttReflectGZTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.reflect.[g-zG-Z] -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/JttThreadsTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/JttThreadsTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.jtt.threads -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/LirJttTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/LirJttTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.lir.jtt -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/LoopTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/LoopTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.loop.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/NodesTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/NodesTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
* @requires vm.graal.enabled
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.nodes.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/OptionsTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/OptionsTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.options.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/PhasesCommonTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/PhasesCommonTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.phases.common.test -exclude ExcludeList.txt
|
||||||
|
*/
|
36
test/hotspot/jtreg/compiler/graalunit/README.md
Normal file
36
test/hotspot/jtreg/compiler/graalunit/README.md
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
This directory contains jtreg tests which are wrapper tests to execute Graal unit tests similar way they are run in Graal project.
|
||||||
|
The tests use compiler.graalunit.common.GraalUnitTestLauncher helper class to run Graal unit tests where the set of tests to execute
|
||||||
|
is specified by '-prefix' argument. GraalUnitTestLauncher launches ported com.oracle.mxtool.junit.MxJUnitWrapper to run Graal unit
|
||||||
|
tests as it is done by "mx unittest" command from Graal project.
|
||||||
|
|
||||||
|
All compiler/graalunit/*.java tests were automatically generated by generateTests.sh script which reads
|
||||||
|
"testName -> testPrefix [requiresStatement]" mapping from TestPackages.txt file and generates corresponding <testName>Test.java
|
||||||
|
tests. The mapping takes into account tests execution time to avoid very long test runs.
|
||||||
|
|
||||||
|
Graal unit tests depends on following external jar files:
|
||||||
|
asm-5.0.4.jar:
|
||||||
|
https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/asm-5.0.4.jar
|
||||||
|
|
||||||
|
asm-tree-5.0.4.jar:
|
||||||
|
https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/asm-tree-5.0.4.jar
|
||||||
|
|
||||||
|
junit-4.12.jar:
|
||||||
|
https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/junit-4.12.jar
|
||||||
|
|
||||||
|
hamcrest-core-1.3.jar:
|
||||||
|
https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/hamcrest-core-1.3.jar
|
||||||
|
|
||||||
|
java-allocation-instrumenter.jar:
|
||||||
|
https://lafo.ssw.uni-linz.ac.at/pub/java-allocation-instrumenter/java-allocation-instrumenter-8f0db117e64e.jar
|
||||||
|
|
||||||
|
Before running the tests you need to download these jars from above locations in build/<platform>/images/test/hotspot/jtreg/graal/
|
||||||
|
directory. Then you can pass it to jtreg as java option by using "-vmoptions:-Dgraalunit.libs=" or as environment variable
|
||||||
|
by using "-e:TEST_IMAGE_GRAAL_DIR=..."
|
||||||
|
|
||||||
|
Example:
|
||||||
|
> jtreg -vt -jdk:<TESTED_JDK> -vmoptions:"-vmoptions:-Dgraalunit.libs=build/<platform>/images/test/hotspot/jtreg/graal"
|
||||||
|
compiler/graalunit/UtilTest.java
|
||||||
|
|
||||||
|
To run Graal unit tests in Graal as JIT mode pass additional -vmoptions to jtreg:
|
||||||
|
-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+TieredCompilation -XX:+UseJVMCICompiler -Djvmci.Compiler=graal
|
||||||
|
|
38
test/hotspot/jtreg/compiler/graalunit/ReplacementsTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/ReplacementsTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.compiler.replacements.test -exclude ExcludeList.txt
|
||||||
|
*/
|
38
test/hotspot/jtreg/compiler/graalunit/TestPackages.txt
Normal file
38
test/hotspot/jtreg/compiler/graalunit/TestPackages.txt
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
Collections jdk.internal.vm.compiler.collections.test
|
||||||
|
ApiDirectives org.graalvm.compiler.api.directives.test
|
||||||
|
Api org.graalvm.compiler.api.test
|
||||||
|
AsmAarch64 org.graalvm.compiler.asm.aarch64.test
|
||||||
|
AsmAmd64 org.graalvm.compiler.asm.amd64.test
|
||||||
|
AsmSparc org.graalvm.compiler.asm.sparc.test
|
||||||
|
CoreAmd64 org.graalvm.compiler.core.amd64.test
|
||||||
|
CoreSparc org.graalvm.compiler.core.sparc.test @requires vm.simpleArch == "sparcv9"
|
||||||
|
Core org.graalvm.compiler.core.test
|
||||||
|
Debug org.graalvm.compiler.debug.test
|
||||||
|
Graph org.graalvm.compiler.graph.test @requires vm.graal.enabled
|
||||||
|
HotspotAmd64 org.graalvm.compiler.hotspot.amd64.test
|
||||||
|
HotspotLir org.graalvm.compiler.hotspot.lir.test
|
||||||
|
Hotspot org.graalvm.compiler.hotspot.test
|
||||||
|
Loop org.graalvm.compiler.loop.test
|
||||||
|
Nodes org.graalvm.compiler.nodes.test @requires vm.graal.enabled
|
||||||
|
Options org.graalvm.compiler.options.test
|
||||||
|
PhasesCommon org.graalvm.compiler.phases.common.test
|
||||||
|
Replacements org.graalvm.compiler.replacements.test
|
||||||
|
Util org.graalvm.util.test
|
||||||
|
JttBackend org.graalvm.compiler.jtt.backend
|
||||||
|
JttBytecode org.graalvm.compiler.jtt.bytecode
|
||||||
|
JttExcept org.graalvm.compiler.jtt.except
|
||||||
|
JttHotpath org.graalvm.compiler.jtt.hotpath
|
||||||
|
JttHotspot org.graalvm.compiler.jtt.hotspot
|
||||||
|
JttJdk org.graalvm.compiler.jtt.jdk
|
||||||
|
JttLangAL org.graalvm.compiler.jtt.lang.[a-lA-L]
|
||||||
|
JttLangM org.graalvm.compiler.jtt.lang.[mM]
|
||||||
|
JttLangNZ org.graalvm.compiler.jtt.lang.[n-zN-Z]
|
||||||
|
JttLoop org.graalvm.compiler.jtt.loop
|
||||||
|
Jtt.Micro org.graalvm.compiler.jtt.micro
|
||||||
|
JttOptimize org.graalvm.compiler.jtt.optimize
|
||||||
|
JttReflectAE org.graalvm.compiler.jtt.reflect.[a-eA-E]
|
||||||
|
JttReflectF org.graalvm.compiler.jtt.reflect.[fF]
|
||||||
|
JttReflectGZ org.graalvm.compiler.jtt.reflect.[g-zG-Z]
|
||||||
|
JttThreads org.graalvm.compiler.jtt.threads
|
||||||
|
LirJtt org.graalvm.compiler.lir.jtt
|
||||||
|
Lir org.graalvm.compiler.lir.test
|
38
test/hotspot/jtreg/compiler/graalunit/UtilTest.java
Normal file
38
test/hotspot/jtreg/compiler/graalunit/UtilTest.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 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
|
||||||
|
* 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
|
||||||
|
* @summary
|
||||||
|
* @requires vm.opt.final.EnableJVMCI == true
|
||||||
|
*
|
||||||
|
* @modules jdk.internal.vm.compiler
|
||||||
|
*
|
||||||
|
* @library /test/lib /compiler/graalunit /
|
||||||
|
*
|
||||||
|
* @build compiler.graalunit.common.GraalUnitTestLauncher
|
||||||
|
*
|
||||||
|
* @run driver jdk.test.lib.FileInstaller ../../ProblemList-graal.txt ExcludeList.txt
|
||||||
|
*
|
||||||
|
* @run main/othervm compiler.graalunit.common.GraalUnitTestLauncher -prefix org.graalvm.util.test -exclude ExcludeList.txt
|
||||||
|
*/
|
|
@ -0,0 +1,120 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 2014, 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 com.oracle.mxtool.junit;
|
||||||
|
|
||||||
|
import org.junit.runner.*;
|
||||||
|
import org.junit.runner.notification.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Color support for JUnit test output using ANSI escapes codes.
|
||||||
|
*/
|
||||||
|
class AnsiTerminalDecorator extends MxRunListenerDecorator {
|
||||||
|
|
||||||
|
/** Foreground black. */
|
||||||
|
public static final String BLACK = "\u001b[30m";
|
||||||
|
/** Foreground red. */
|
||||||
|
public static final String RED = "\u001b[31m";
|
||||||
|
/** Foreground green. */
|
||||||
|
public static final String GREEN = "\u001b[32m";
|
||||||
|
/** Foreground yellow. */
|
||||||
|
public static final String YELLOW = "\u001b[33m";
|
||||||
|
/** Foreground blue. */
|
||||||
|
public static final String BLUE = "\u001b[34m";
|
||||||
|
/** Foreground magenta. */
|
||||||
|
public static final String MAGENTA = "\u001b[35m";
|
||||||
|
/** Foreground cyan. */
|
||||||
|
public static final String CYAN = "\u001b[36m";
|
||||||
|
/** Foreground white. */
|
||||||
|
public static final String WHITE = "\u001b[37m";
|
||||||
|
|
||||||
|
/** Foreground bold black. */
|
||||||
|
public static final String BOLD_BLACK = "\u001b[30;1m";
|
||||||
|
/** Foreground bold red. */
|
||||||
|
public static final String BOLD_RED = "\u001b[31;1m";
|
||||||
|
/** Foreground bold green. */
|
||||||
|
public static final String BOLD_GREEN = "\u001b[32;1m";
|
||||||
|
/** Foreground bold yellow. */
|
||||||
|
public static final String BOLD_YELLOW = "\u001b[33;1m";
|
||||||
|
/** Foreground bold blue. */
|
||||||
|
public static final String BOLD_BLUE = "\u001b[34;1m";
|
||||||
|
/** Foreground bold magenta. */
|
||||||
|
public static final String BOLD_MAGENTA = "\u001b[35;1m";
|
||||||
|
/** Foreground bold cyan. */
|
||||||
|
public static final String BOLD_CYAN = "\u001b[36;1m";
|
||||||
|
/** Foreground bold white. */
|
||||||
|
public static final String BOLD_WHITE = "\u001b[37;1m";
|
||||||
|
|
||||||
|
/** Background black. */
|
||||||
|
public static final String BG_BLACK = "\u001b[40m";
|
||||||
|
/** Background red. */
|
||||||
|
public static final String BG_RED = "\u001b[41m";
|
||||||
|
/** Background green. */
|
||||||
|
public static final String BG_GREEN = "\u001b[42m";
|
||||||
|
/** Background yellow. */
|
||||||
|
public static final String BG_YELLOW = "\u001b[43m";
|
||||||
|
/** Background blue. */
|
||||||
|
public static final String BG_BLUE = "\u001b[44m";
|
||||||
|
/** Background magenta. */
|
||||||
|
public static final String BG_MAGENTA = "\u001b[45m";
|
||||||
|
/** Background cyan. */
|
||||||
|
public static final String BG_CYAN = "\u001b[46m";
|
||||||
|
/** Background white. */
|
||||||
|
public static final String BG_WHITE = "\u001b[47m";
|
||||||
|
|
||||||
|
/** Reset. */
|
||||||
|
public static final String RESET = "\u001b[0m";
|
||||||
|
/** Underline. */
|
||||||
|
public static final String UNDERLINED = "\u001b[4m";
|
||||||
|
|
||||||
|
AnsiTerminalDecorator(MxRunListener l) {
|
||||||
|
super(l);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testSucceeded(Description description) {
|
||||||
|
getWriter().print(GREEN);
|
||||||
|
super.testSucceeded(description);
|
||||||
|
getWriter().print(RESET);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testAssumptionFailure(Failure failure) {
|
||||||
|
getWriter().print(BLUE);
|
||||||
|
super.testAssumptionFailure(failure);
|
||||||
|
getWriter().print(RESET);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testFailed(Failure failure) {
|
||||||
|
getWriter().print(RED);
|
||||||
|
super.testFailed(failure);
|
||||||
|
getWriter().print(RESET);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testIgnored(Description description) {
|
||||||
|
getWriter().print(MAGENTA);
|
||||||
|
super.testIgnored(description);
|
||||||
|
getWriter().print(RESET);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -20,22 +20,22 @@
|
||||||
* or visit www.oracle.com if you need additional information or have any
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
* questions.
|
* questions.
|
||||||
*/
|
*/
|
||||||
package java.util;
|
package com.oracle.mxtool.junit;
|
||||||
|
|
||||||
import nsk.jvmti.AttachOnDemand.attach024.*;
|
import org.junit.runner.notification.*;
|
||||||
|
|
||||||
public class ServiceConfigurationError extends Error {
|
class EagerStackTraceDecorator extends MxRunListenerDecorator {
|
||||||
private static final long serialVersionUID = 74132770414881L;
|
|
||||||
|
|
||||||
public ServiceConfigurationError(String msg) {
|
EagerStackTraceDecorator(MxRunListener l) {
|
||||||
super(msg);
|
super(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ServiceConfigurationError(String msg, Throwable cause) {
|
@Override
|
||||||
super(msg, cause);
|
public void testFailed(Failure failure) {
|
||||||
|
super.testFailed(failure);
|
||||||
|
getWriter().println();
|
||||||
|
getWriter().println(failure.getTestHeader());
|
||||||
|
getWriter().print(failure.getTrace());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString() {
|
|
||||||
return attach024Agent00.MODIFIED_TO_STRING;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -0,0 +1,341 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 2014, 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 com.oracle.mxtool.junit;
|
||||||
|
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.DataInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.jar.JarEntry;
|
||||||
|
import java.util.jar.JarFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds classes in given jar files that contain methods annotated by a given set of annotations.
|
||||||
|
*/
|
||||||
|
public class FindClassesByAnnotatedMethods {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds classes in a given set of jar files that contain at least one method with an annotation
|
||||||
|
* from a given set of annotations. The qualified name and containing jar file (separated by a
|
||||||
|
* space) is written to {@link System#out} for each matching class.
|
||||||
|
*
|
||||||
|
* @param args jar file names, annotations and snippets patterns. Annotations are those starting
|
||||||
|
* with "@" and can be either qualified or unqualified annotation class names,
|
||||||
|
* snippets patterns are those starting with {@code "snippetsPattern:"} and the rest
|
||||||
|
* are jar file names
|
||||||
|
*/
|
||||||
|
public static void main(String... args) throws Throwable {
|
||||||
|
Set<String> qualifiedAnnotations = new HashSet<>();
|
||||||
|
Set<String> unqualifiedAnnotations = new HashSet<>();
|
||||||
|
for (String arg : args) {
|
||||||
|
if (isAnnotationArg(arg)) {
|
||||||
|
String annotation = arg.substring(1);
|
||||||
|
int lastDot = annotation.lastIndexOf('.');
|
||||||
|
if (lastDot != -1) {
|
||||||
|
qualifiedAnnotations.add(annotation);
|
||||||
|
} else {
|
||||||
|
String unqualifed = annotation.substring(lastDot + 1);
|
||||||
|
unqualifiedAnnotations.add(unqualifed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String jarFilePath : args) {
|
||||||
|
if (isSnippetArg(jarFilePath) || isAnnotationArg(jarFilePath)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
JarFile jarFile = new JarFile(jarFilePath);
|
||||||
|
Enumeration<JarEntry> e = jarFile.entries();
|
||||||
|
int unsupportedClasses = 0;
|
||||||
|
System.out.print(jarFilePath);
|
||||||
|
while (e.hasMoreElements()) {
|
||||||
|
JarEntry je = e.nextElement();
|
||||||
|
if (je.isDirectory() || !je.getName().endsWith(".class")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Set<String> methodAnnotationTypes = new HashSet<>();
|
||||||
|
DataInputStream stream = new DataInputStream(new BufferedInputStream(jarFile.getInputStream(je), (int) je.getSize()));
|
||||||
|
boolean isSupported = true;
|
||||||
|
try {
|
||||||
|
readClassfile(stream, methodAnnotationTypes);
|
||||||
|
} catch (UnsupportedClassVersionError ucve) {
|
||||||
|
isSupported = false;
|
||||||
|
unsupportedClasses++;
|
||||||
|
}
|
||||||
|
String className = je.getName().substring(0, je.getName().length() - ".class".length()).replaceAll("/", ".");
|
||||||
|
if (!isSupported) {
|
||||||
|
System.out.print(" !" + className);
|
||||||
|
}
|
||||||
|
for (String annotationType : methodAnnotationTypes) {
|
||||||
|
if (!qualifiedAnnotations.isEmpty()) {
|
||||||
|
if (qualifiedAnnotations.contains(annotationType)) {
|
||||||
|
System.out.print(" " + className);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!unqualifiedAnnotations.isEmpty()) {
|
||||||
|
final int lastDot = annotationType.lastIndexOf('.');
|
||||||
|
if (lastDot != -1) {
|
||||||
|
String simpleName = annotationType.substring(lastDot + 1);
|
||||||
|
int lastDollar = simpleName.lastIndexOf('$');
|
||||||
|
if (lastDollar != -1) {
|
||||||
|
simpleName = simpleName.substring(lastDollar + 1);
|
||||||
|
}
|
||||||
|
if (unqualifiedAnnotations.contains(simpleName)) {
|
||||||
|
System.out.print(" " + className);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (unsupportedClasses != 0) {
|
||||||
|
System.err.printf("Warning: %d classes in %s skipped as their class file version is not supported by %s%n", unsupportedClasses, jarFilePath,
|
||||||
|
FindClassesByAnnotatedMethods.class.getSimpleName());
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isAnnotationArg(String arg) {
|
||||||
|
return arg.charAt(0) == '@';
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isSnippetArg(String arg) {
|
||||||
|
return arg.startsWith("snippetsPattern:");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Small bytecode parser that extract annotations.
|
||||||
|
*/
|
||||||
|
private static final int MAJOR_VERSION_JAVA7 = 51;
|
||||||
|
private static final int MAJOR_VERSION_OFFSET = 44;
|
||||||
|
private static final byte CONSTANT_Utf8 = 1;
|
||||||
|
private static final byte CONSTANT_Integer = 3;
|
||||||
|
private static final byte CONSTANT_Float = 4;
|
||||||
|
private static final byte CONSTANT_Long = 5;
|
||||||
|
private static final byte CONSTANT_Double = 6;
|
||||||
|
private static final byte CONSTANT_Class = 7;
|
||||||
|
private static final byte CONSTANT_Fieldref = 9;
|
||||||
|
private static final byte CONSTANT_String = 8;
|
||||||
|
private static final byte CONSTANT_Methodref = 10;
|
||||||
|
private static final byte CONSTANT_InterfaceMethodref = 11;
|
||||||
|
private static final byte CONSTANT_NameAndType = 12;
|
||||||
|
private static final byte CONSTANT_MethodHandle = 15;
|
||||||
|
private static final byte CONSTANT_MethodType = 16;
|
||||||
|
private static final byte CONSTANT_Dynamic = 17;
|
||||||
|
private static final byte CONSTANT_InvokeDynamic = 18;
|
||||||
|
|
||||||
|
private static void readClassfile(DataInputStream stream, Collection<String> methodAnnotationTypes) throws IOException {
|
||||||
|
// magic
|
||||||
|
int magic = stream.readInt();
|
||||||
|
assert magic == 0xCAFEBABE;
|
||||||
|
|
||||||
|
int minor = stream.readUnsignedShort();
|
||||||
|
int major = stream.readUnsignedShort();
|
||||||
|
if (major < MAJOR_VERSION_JAVA7) {
|
||||||
|
throw new UnsupportedClassVersionError("Unsupported class file version: " + major + "." + minor);
|
||||||
|
}
|
||||||
|
// Starting with JDK8, ignore a classfile that has a newer format than the current JDK.
|
||||||
|
String javaVersion = System.getProperties().get("java.specification.version").toString();
|
||||||
|
int majorJavaVersion;
|
||||||
|
if (javaVersion.startsWith("1.")) {
|
||||||
|
javaVersion = javaVersion.substring(2);
|
||||||
|
majorJavaVersion = Integer.parseInt(javaVersion);
|
||||||
|
} else {
|
||||||
|
majorJavaVersion = Integer.parseInt(javaVersion);
|
||||||
|
}
|
||||||
|
if (major > MAJOR_VERSION_OFFSET + majorJavaVersion) {
|
||||||
|
throw new UnsupportedClassVersionError("Unsupported class file version: " + major + "." + minor);
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] cp = readConstantPool(stream, major, minor);
|
||||||
|
|
||||||
|
// access_flags, this_class, super_class
|
||||||
|
stream.skipBytes(6);
|
||||||
|
|
||||||
|
// interfaces
|
||||||
|
stream.skipBytes(stream.readUnsignedShort() * 2);
|
||||||
|
|
||||||
|
// fields
|
||||||
|
skipFields(stream);
|
||||||
|
|
||||||
|
// methods
|
||||||
|
readMethods(stream, cp, methodAnnotationTypes);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void skipFully(DataInputStream stream, int n) throws IOException {
|
||||||
|
long skipped = 0;
|
||||||
|
do {
|
||||||
|
long s = stream.skip(n - skipped);
|
||||||
|
skipped += s;
|
||||||
|
if (s == 0 && skipped != n) {
|
||||||
|
// Check for EOF (i.e., truncated class file)
|
||||||
|
if (stream.read() == -1) {
|
||||||
|
throw new IOException("truncated stream");
|
||||||
|
}
|
||||||
|
skipped++;
|
||||||
|
}
|
||||||
|
} while (skipped != n);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String[] readConstantPool(DataInputStream stream, int major, int minor) throws IOException {
|
||||||
|
int count = stream.readUnsignedShort();
|
||||||
|
String[] cp = new String[count];
|
||||||
|
|
||||||
|
int i = 1;
|
||||||
|
while (i < count) {
|
||||||
|
byte tag = stream.readByte();
|
||||||
|
switch (tag) {
|
||||||
|
case CONSTANT_Class:
|
||||||
|
case CONSTANT_String:
|
||||||
|
case CONSTANT_MethodType: {
|
||||||
|
skipFully(stream, 2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CONSTANT_InterfaceMethodref:
|
||||||
|
case CONSTANT_Methodref:
|
||||||
|
case CONSTANT_Fieldref:
|
||||||
|
case CONSTANT_NameAndType:
|
||||||
|
case CONSTANT_Float:
|
||||||
|
case CONSTANT_Integer:
|
||||||
|
case CONSTANT_Dynamic:
|
||||||
|
case CONSTANT_InvokeDynamic: {
|
||||||
|
skipFully(stream, 4);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CONSTANT_Long:
|
||||||
|
case CONSTANT_Double: {
|
||||||
|
skipFully(stream, 8);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CONSTANT_Utf8: {
|
||||||
|
cp[i] = stream.readUTF();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CONSTANT_MethodHandle: {
|
||||||
|
skipFully(stream, 3);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
throw new InternalError(String.format("Invalid constant pool tag: " + tag + ". Maybe %s needs updating for changes introduced by class file version %d.%d?",
|
||||||
|
FindClassesByAnnotatedMethods.class, major, minor));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((tag == CONSTANT_Double) || (tag == CONSTANT_Long)) {
|
||||||
|
i += 2;
|
||||||
|
} else {
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return cp;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void skipAttributes(DataInputStream stream) throws IOException {
|
||||||
|
int attributesCount;
|
||||||
|
attributesCount = stream.readUnsignedShort();
|
||||||
|
for (int i = 0; i < attributesCount; i++) {
|
||||||
|
stream.skipBytes(2); // name_index
|
||||||
|
int attributeLength = stream.readInt();
|
||||||
|
skipFully(stream, attributeLength);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void readMethodAttributes(DataInputStream stream, String[] cp, Collection<String> methodAnnotationTypes) throws IOException {
|
||||||
|
int attributesCount;
|
||||||
|
attributesCount = stream.readUnsignedShort();
|
||||||
|
for (int i = 0; i < attributesCount; i++) {
|
||||||
|
String attributeName = cp[stream.readUnsignedShort()];
|
||||||
|
int attributeLength = stream.readInt();
|
||||||
|
|
||||||
|
if (attributeName.equals("RuntimeVisibleAnnotations")) {
|
||||||
|
int numAnnotations = stream.readUnsignedShort();
|
||||||
|
for (int a = 0; a != numAnnotations; a++) {
|
||||||
|
readAnnotation(stream, cp, methodAnnotationTypes);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
skipFully(stream, attributeLength);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void readAnnotation(DataInputStream stream, String[] cp, Collection<String> methodAnnotationTypes) throws IOException {
|
||||||
|
int typeIndex = stream.readUnsignedShort();
|
||||||
|
int pairs = stream.readUnsignedShort();
|
||||||
|
String type = cp[typeIndex];
|
||||||
|
String className = type.substring(1, type.length() - 1).replace('/', '.');
|
||||||
|
methodAnnotationTypes.add(className);
|
||||||
|
readAnnotationElements(stream, cp, pairs, true, methodAnnotationTypes);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void readAnnotationElements(DataInputStream stream, String[] cp, int pairs, boolean withElementName, Collection<String> methodAnnotationTypes) throws IOException {
|
||||||
|
for (int p = 0; p < pairs; p++) {
|
||||||
|
if (withElementName) {
|
||||||
|
skipFully(stream, 2);
|
||||||
|
}
|
||||||
|
int tag = stream.readByte();
|
||||||
|
switch (tag) {
|
||||||
|
case 'B':
|
||||||
|
case 'C':
|
||||||
|
case 'D':
|
||||||
|
case 'F':
|
||||||
|
case 'I':
|
||||||
|
case 'J':
|
||||||
|
case 'S':
|
||||||
|
case 'Z':
|
||||||
|
case 's':
|
||||||
|
case 'c':
|
||||||
|
skipFully(stream, 2);
|
||||||
|
break;
|
||||||
|
case 'e':
|
||||||
|
skipFully(stream, 4);
|
||||||
|
break;
|
||||||
|
case '@':
|
||||||
|
readAnnotation(stream, cp, methodAnnotationTypes);
|
||||||
|
break;
|
||||||
|
case '[': {
|
||||||
|
int numValues = stream.readUnsignedShort();
|
||||||
|
readAnnotationElements(stream, cp, numValues, false, methodAnnotationTypes);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void skipFields(DataInputStream stream) throws IOException {
|
||||||
|
int count = stream.readUnsignedShort();
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
stream.skipBytes(6); // access_flags, name_index, descriptor_index
|
||||||
|
skipAttributes(stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void readMethods(DataInputStream stream, String[] cp, Collection<String> methodAnnotationTypes) throws IOException {
|
||||||
|
int count = stream.readUnsignedShort();
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
skipFully(stream, 6); // access_flags, name_index, descriptor_index
|
||||||
|
readMethodAttributes(stream, cp, methodAnnotationTypes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 2014, 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 com.oracle.mxtool.junit;
|
||||||
|
|
||||||
|
import org.junit.runner.*;
|
||||||
|
|
||||||
|
class GCAfterTestDecorator extends MxRunListenerDecorator {
|
||||||
|
|
||||||
|
GCAfterTestDecorator(MxRunListener l) {
|
||||||
|
super(l);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testFinished(Description description) {
|
||||||
|
System.gc();
|
||||||
|
super.testFinished(description);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,211 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2016, 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 com.oracle.mxtool.junit;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Facade for the {@code java.lang.Module} class introduced in JDK9 that allows tests to be
|
||||||
|
* developed against JDK8 but use module logic if deployed on JDK9.
|
||||||
|
*/
|
||||||
|
class JLModule {
|
||||||
|
|
||||||
|
private final Object realModule;
|
||||||
|
|
||||||
|
JLModule(Object module) {
|
||||||
|
this.realModule = module;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final Class<?> moduleClass;
|
||||||
|
private static final Class<?> layerClass;
|
||||||
|
|
||||||
|
private static final Method bootMethod;
|
||||||
|
private static final Method modulesMethod;
|
||||||
|
private static final Method getModuleMethod;
|
||||||
|
private static final Method getUnnamedModuleMethod;
|
||||||
|
private static final Method getNameMethod;
|
||||||
|
private static final Method getPackagesMethod;
|
||||||
|
private static final Method isExportedMethod;
|
||||||
|
private static final Method isExported2Method;
|
||||||
|
private static final Method addExportsMethod;
|
||||||
|
private static final Method addOpensMethod;
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
moduleClass = findModuleClass();
|
||||||
|
Class<?> modulesClass = Class.forName("jdk.internal.module.Modules");
|
||||||
|
layerClass = findModuleLayerClass();
|
||||||
|
bootMethod = layerClass.getMethod("boot");
|
||||||
|
modulesMethod = layerClass.getMethod("modules");
|
||||||
|
getModuleMethod = Class.class.getMethod("getModule");
|
||||||
|
getUnnamedModuleMethod = ClassLoader.class.getMethod("getUnnamedModule");
|
||||||
|
getNameMethod = moduleClass.getMethod("getName");
|
||||||
|
getPackagesMethod = moduleClass.getMethod("getPackages");
|
||||||
|
isExportedMethod = moduleClass.getMethod("isExported", String.class);
|
||||||
|
isExported2Method = moduleClass.getMethod("isExported", String.class, moduleClass);
|
||||||
|
addExportsMethod = modulesClass.getDeclaredMethod("addExports", moduleClass, String.class, moduleClass);
|
||||||
|
addOpensMethod = getDeclaredMethodOptional(modulesClass, "addOpens", moduleClass, String.class, moduleClass);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AssertionError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// API change http://hg.openjdk.java.net/jdk9/dev/hotspot/rev/afedee84773e.
|
||||||
|
protected static Class<?> findModuleClass() throws ClassNotFoundException {
|
||||||
|
try {
|
||||||
|
return Class.forName("java.lang.Module");
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
return Class.forName("java.lang.reflect.Module");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// API change http://hg.openjdk.java.net/jdk9/dev/hotspot/rev/afedee84773e.
|
||||||
|
protected static Class<?> findModuleLayerClass() throws ClassNotFoundException {
|
||||||
|
try {
|
||||||
|
return Class.forName("java.lang.ModuleLayer");
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
return Class.forName("java.lang.reflect.Layer");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Method getDeclaredMethodOptional(Class<?> declaringClass, String name, Class<?>... parameterTypes) {
|
||||||
|
try {
|
||||||
|
return declaringClass.getDeclaredMethod(name, parameterTypes);
|
||||||
|
} catch (NoSuchMethodException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static JLModule fromClass(Class<?> cls) {
|
||||||
|
try {
|
||||||
|
return new JLModule(getModuleMethod.invoke(cls));
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AssertionError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static JLModule find(String name) {
|
||||||
|
try {
|
||||||
|
Object bootLayer = bootMethod.invoke(null);
|
||||||
|
Set<Object> modules = (Set<Object>) modulesMethod.invoke(bootLayer);
|
||||||
|
for (Object m : modules) {
|
||||||
|
JLModule module = new JLModule(m);
|
||||||
|
String mname = module.getName();
|
||||||
|
if (mname.equals(name)) {
|
||||||
|
return module;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new InternalError(e);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static JLModule getUnnamedModuleFor(ClassLoader cl) {
|
||||||
|
try {
|
||||||
|
return new JLModule(getUnnamedModuleMethod.invoke(cl));
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AssertionError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
try {
|
||||||
|
return (String) getNameMethod.invoke(realModule);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AssertionError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exports all packages in this module to a given module.
|
||||||
|
*/
|
||||||
|
public void exportAllPackagesTo(JLModule module) {
|
||||||
|
if (this != module) {
|
||||||
|
for (String pkg : getPackages()) {
|
||||||
|
// Export all JVMCI packages dynamically instead
|
||||||
|
// of requiring a long list of -XaddExports
|
||||||
|
// options on the JVM command line.
|
||||||
|
if (!isExported(pkg, module)) {
|
||||||
|
addExports(pkg, module);
|
||||||
|
addOpens(pkg, module);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public Iterable<String> getPackages() {
|
||||||
|
try {
|
||||||
|
// API change http://hg.openjdk.java.net/jdk9/dev/hotspot/rev/afedee84773e#l1.15
|
||||||
|
Object res = getPackagesMethod.invoke(realModule);
|
||||||
|
if (res instanceof String[]) {
|
||||||
|
return Arrays.asList((String[]) res);
|
||||||
|
}
|
||||||
|
return (Set<String>) res;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AssertionError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isExported(String pn) {
|
||||||
|
try {
|
||||||
|
return (Boolean) isExportedMethod.invoke(realModule, pn);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AssertionError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isExported(String pn, JLModule other) {
|
||||||
|
try {
|
||||||
|
return (Boolean) isExported2Method.invoke(realModule, pn, other.realModule);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AssertionError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addExports(String pn, JLModule other) {
|
||||||
|
try {
|
||||||
|
addExportsMethod.invoke(null, realModule, pn, other.realModule);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AssertionError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addOpens(String pn, JLModule other) {
|
||||||
|
if (addOpensMethod != null) {
|
||||||
|
try {
|
||||||
|
addOpensMethod.invoke(null, realModule, pn, other.realModule);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AssertionError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return realModule.toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,116 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 2017, 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 com.oracle.mxtool.junit;
|
||||||
|
|
||||||
|
import java.lang.reflect.Modifier;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import org.junit.runner.Description;
|
||||||
|
import org.junit.runner.Request;
|
||||||
|
import org.junit.runner.notification.Failure;
|
||||||
|
|
||||||
|
public final class MxJUnitRequest {
|
||||||
|
|
||||||
|
private final Request request;
|
||||||
|
|
||||||
|
final Set<Class<?>> classes;
|
||||||
|
final String methodName;
|
||||||
|
|
||||||
|
final List<Failure> missingClasses;
|
||||||
|
|
||||||
|
private MxJUnitRequest(Request request, Set<Class<?>> classes, String methodName, List<Failure> missingClasses) {
|
||||||
|
this.request = request;
|
||||||
|
this.classes = classes;
|
||||||
|
this.methodName = methodName;
|
||||||
|
this.missingClasses = missingClasses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Request getRequest() {
|
||||||
|
return request;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class BuilderException extends Exception {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private BuilderException(String msg) {
|
||||||
|
super(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder {
|
||||||
|
|
||||||
|
private final Set<Class<?>> classes = new LinkedHashSet<>();
|
||||||
|
private String methodName = null;
|
||||||
|
private final List<Failure> missingClasses = new ArrayList<>();
|
||||||
|
|
||||||
|
protected Class<?> resolveClass(String name) throws ClassNotFoundException {
|
||||||
|
return Class.forName(name, false, Builder.class.getClassLoader());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addTestSpec(String arg) throws BuilderException {
|
||||||
|
String className;
|
||||||
|
/*
|
||||||
|
* Entries of the form class#method are handled specially. Only one can be specified on
|
||||||
|
* the command line as there's no obvious way to build a runner for multiple ones.
|
||||||
|
*/
|
||||||
|
if (methodName != null) {
|
||||||
|
throw new BuilderException("Only a single class and method can be specified: " + arg);
|
||||||
|
} else if (arg.contains("#")) {
|
||||||
|
String[] pair = arg.split("#");
|
||||||
|
if (pair.length != 2) {
|
||||||
|
throw new BuilderException("Malformed class and method request: " + arg);
|
||||||
|
} else if (!classes.isEmpty()) {
|
||||||
|
throw new BuilderException("Only a single class and method can be specified: " + arg);
|
||||||
|
} else {
|
||||||
|
methodName = pair[1];
|
||||||
|
className = pair[0];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
className = arg;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Class<?> cls = resolveClass(className);
|
||||||
|
if ((cls.getModifiers() & Modifier.ABSTRACT) == 0) {
|
||||||
|
classes.add(cls);
|
||||||
|
}
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
Description description = Description.createSuiteDescription(className);
|
||||||
|
Failure failure = new Failure(description, e);
|
||||||
|
missingClasses.add(failure);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public MxJUnitRequest build() {
|
||||||
|
Request request;
|
||||||
|
if (methodName == null) {
|
||||||
|
request = Request.classes(classes.toArray(new Class<?>[0]));
|
||||||
|
} else {
|
||||||
|
request = Request.method(classes.iterator().next(), methodName);
|
||||||
|
}
|
||||||
|
return new MxJUnitRequest(request, classes, methodName, missingClasses);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,484 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 2017, 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 com.oracle.mxtool.junit;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
import java.lang.annotation.Annotation;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.ServiceLoader;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.junit.internal.JUnitSystem;
|
||||||
|
import org.junit.internal.RealSystem;
|
||||||
|
import org.junit.runner.Description;
|
||||||
|
import org.junit.runner.JUnitCore;
|
||||||
|
import org.junit.runner.Request;
|
||||||
|
import org.junit.runner.Result;
|
||||||
|
import org.junit.runner.Runner;
|
||||||
|
import org.junit.runner.notification.Failure;
|
||||||
|
import org.junit.runner.notification.RunListener;
|
||||||
|
import org.junit.runner.notification.RunNotifier;
|
||||||
|
import org.junit.runners.ParentRunner;
|
||||||
|
import org.junit.runners.model.RunnerScheduler;
|
||||||
|
|
||||||
|
import junit.runner.Version;
|
||||||
|
|
||||||
|
public class MxJUnitWrapper {
|
||||||
|
|
||||||
|
public static class MxJUnitConfig {
|
||||||
|
|
||||||
|
public boolean verbose = false;
|
||||||
|
public boolean veryVerbose = false;
|
||||||
|
public boolean enableTiming = false;
|
||||||
|
public boolean failFast = false;
|
||||||
|
public boolean color = false;
|
||||||
|
public boolean eagerStackTrace = false;
|
||||||
|
public boolean gcAfterTest = false;
|
||||||
|
public boolean recordResults = false;
|
||||||
|
public int repeatCount = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class RepeatingRunner extends Runner {
|
||||||
|
|
||||||
|
private final Runner parent;
|
||||||
|
private int repeat;
|
||||||
|
|
||||||
|
RepeatingRunner(Runner parent, int repeat) {
|
||||||
|
this.parent = parent;
|
||||||
|
this.repeat = repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Description getDescription() {
|
||||||
|
return parent.getDescription();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(RunNotifier notifier) {
|
||||||
|
for (int i = 0; i < repeat; i++) {
|
||||||
|
parent.run(notifier);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int testCount() {
|
||||||
|
return super.testCount() * repeat;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class RepeatingRequest extends Request {
|
||||||
|
|
||||||
|
private final Request request;
|
||||||
|
private final int repeat;
|
||||||
|
|
||||||
|
RepeatingRequest(Request request, int repeat) {
|
||||||
|
this.request = request;
|
||||||
|
this.repeat = repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Runner getRunner() {
|
||||||
|
return new RepeatingRunner(request.getRunner(), repeat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the tests contained in the classes named in the <code>args</code>. A single test method
|
||||||
|
* can be specified by adding #method after the class name. Only a single test can be run in
|
||||||
|
* this way. If all tests run successfully, exit with a status of 0. Otherwise exit with a
|
||||||
|
* status of 1. Write feedback while tests are running and write stack traces for all failed
|
||||||
|
* tests after the tests all complete.
|
||||||
|
*
|
||||||
|
* @param args names of classes in which to find tests to run
|
||||||
|
*/
|
||||||
|
public static void main(String... args) {
|
||||||
|
JUnitSystem system = new RealSystem();
|
||||||
|
JUnitCore junitCore = new JUnitCore();
|
||||||
|
system.out().println("MxJUnitCore");
|
||||||
|
system.out().println("JUnit version " + Version.id());
|
||||||
|
|
||||||
|
MxJUnitRequest.Builder builder = new MxJUnitRequest.Builder();
|
||||||
|
MxJUnitConfig config = new MxJUnitConfig();
|
||||||
|
|
||||||
|
String[] expandedArgs = expandArgs(args);
|
||||||
|
int i = 0;
|
||||||
|
while (i < expandedArgs.length) {
|
||||||
|
String each = expandedArgs[i];
|
||||||
|
if (each.charAt(0) == '-') {
|
||||||
|
// command line arguments
|
||||||
|
if (each.contentEquals("-JUnitVerbose")) {
|
||||||
|
config.verbose = true;
|
||||||
|
} else if (each.contentEquals("-JUnitVeryVerbose")) {
|
||||||
|
config.veryVerbose = true;
|
||||||
|
} else if (each.contentEquals("-JUnitFailFast")) {
|
||||||
|
config.failFast = true;
|
||||||
|
} else if (each.contentEquals("-JUnitEnableTiming")) {
|
||||||
|
config.enableTiming = true;
|
||||||
|
} else if (each.contentEquals("-JUnitColor")) {
|
||||||
|
config.color = true;
|
||||||
|
} else if (each.contentEquals("-JUnitEagerStackTrace")) {
|
||||||
|
config.eagerStackTrace = true;
|
||||||
|
} else if (each.contentEquals("-JUnitGCAfterTest")) {
|
||||||
|
config.gcAfterTest = true;
|
||||||
|
} else if (each.contentEquals("-JUnitRecordResults")) {
|
||||||
|
config.recordResults = true;
|
||||||
|
} else if (each.contentEquals("-JUnitRepeat")) {
|
||||||
|
if (i + 1 >= expandedArgs.length) {
|
||||||
|
system.out().println("Must include argument for -JUnitRepeat");
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
config.repeatCount = Integer.parseInt(expandedArgs[++i]);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
system.out().println("Expected integer argument for -JUnitRepeat. Found: " + expandedArgs[i]);
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
system.out().println("Unknown command line argument: " + each);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
try {
|
||||||
|
builder.addTestSpec(each);
|
||||||
|
} catch (MxJUnitRequest.BuilderException ex) {
|
||||||
|
system.out().println(ex.getMessage());
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
MxJUnitRequest request = builder.build();
|
||||||
|
|
||||||
|
if (System.getProperty("java.specification.version").compareTo("1.9") >= 0) {
|
||||||
|
addExports(request.classes, system.out());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (RunListener p : ServiceLoader.load(RunListener.class)) {
|
||||||
|
junitCore.addListener(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
Result result = runRequest(junitCore, system, config, request);
|
||||||
|
System.exit(result.wasSuccessful() ? 0 : 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static PrintStream openFile(JUnitSystem system, String name) {
|
||||||
|
File file = new File(name).getAbsoluteFile();
|
||||||
|
try {
|
||||||
|
FileOutputStream fos = new FileOutputStream(file);
|
||||||
|
return new PrintStream(fos, true);
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
system.out().println("Could not open " + file + " for writing: " + e);
|
||||||
|
System.exit(1);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Result runRequest(JUnitCore junitCore, JUnitSystem system, MxJUnitConfig config, MxJUnitRequest mxRequest) {
|
||||||
|
final TextRunListener textListener;
|
||||||
|
if (config.veryVerbose) {
|
||||||
|
textListener = new VerboseTextListener(system, mxRequest.classes.size(), VerboseTextListener.SHOW_ALL_TESTS);
|
||||||
|
} else if (config.verbose) {
|
||||||
|
textListener = new VerboseTextListener(system, mxRequest.classes.size());
|
||||||
|
} else {
|
||||||
|
textListener = new TextRunListener(system);
|
||||||
|
}
|
||||||
|
TimingDecorator timings = config.enableTiming ? new TimingDecorator(textListener) : null;
|
||||||
|
MxRunListener mxListener = config.enableTiming ? timings : textListener;
|
||||||
|
|
||||||
|
if (config.color) {
|
||||||
|
mxListener = new AnsiTerminalDecorator(mxListener);
|
||||||
|
}
|
||||||
|
if (config.eagerStackTrace) {
|
||||||
|
mxListener = new EagerStackTraceDecorator(mxListener);
|
||||||
|
}
|
||||||
|
if (config.gcAfterTest) {
|
||||||
|
mxListener = new GCAfterTestDecorator(mxListener);
|
||||||
|
}
|
||||||
|
if (config.recordResults) {
|
||||||
|
PrintStream passed = openFile(system, "passed.txt");
|
||||||
|
PrintStream failed = openFile(system, "failed.txt");
|
||||||
|
mxListener = new TestResultLoggerDecorator(passed, failed, mxListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
junitCore.addListener(TextRunListener.createRunListener(mxListener));
|
||||||
|
|
||||||
|
Request request = mxRequest.getRequest();
|
||||||
|
if (mxRequest.methodName == null) {
|
||||||
|
if (config.failFast) {
|
||||||
|
Runner runner = request.getRunner();
|
||||||
|
if (runner instanceof ParentRunner) {
|
||||||
|
ParentRunner<?> parentRunner = (ParentRunner<?>) runner;
|
||||||
|
parentRunner.setScheduler(new RunnerScheduler() {
|
||||||
|
public void schedule(Runnable childStatement) {
|
||||||
|
if (textListener.getLastFailure() == null) {
|
||||||
|
childStatement.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void finished() {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
system.out().println("Unexpected Runner subclass " + runner.getClass().getName() + " - fail fast not supported");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (config.failFast) {
|
||||||
|
system.out().println("Single method selected - fail fast not supported");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.repeatCount != 1) {
|
||||||
|
request = new RepeatingRequest(request, config.repeatCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.enableTiming) {
|
||||||
|
Runtime.getRuntime().addShutdownHook(new Thread() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
printTimings(timings);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Result result = junitCore.run(request);
|
||||||
|
for (Failure each : mxRequest.missingClasses) {
|
||||||
|
result.getFailures().add(each);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final Pattern MODULE_PACKAGE_RE = Pattern.compile("([^/]+)/(.+)");
|
||||||
|
|
||||||
|
private static class Timing<T> implements Comparable<Timing<T>> {
|
||||||
|
final T subject;
|
||||||
|
final long value;
|
||||||
|
|
||||||
|
Timing(T subject, long value) {
|
||||||
|
this.subject = subject;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int compareTo(Timing<T> o) {
|
||||||
|
if (this.value < o.value) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (this.value > o.value) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Should never need to customize so using a system property instead
|
||||||
|
// of a command line option for customization is fine.
|
||||||
|
private static final int TIMINGS_TO_PRINT = Integer.getInteger("mx.junit.timings_to_print", 10);
|
||||||
|
|
||||||
|
private static void printTimings(TimingDecorator timings) {
|
||||||
|
if (TIMINGS_TO_PRINT != 0) {
|
||||||
|
List<Timing<Class<?>>> classTimes = new ArrayList<>(timings.classTimes.size());
|
||||||
|
List<Timing<Description>> testTimes = new ArrayList<>(timings.testTimes.size());
|
||||||
|
for (Map.Entry<Class<?>, Long> e : timings.classTimes.entrySet()) {
|
||||||
|
classTimes.add(new Timing<>(e.getKey(), e.getValue()));
|
||||||
|
}
|
||||||
|
for (Map.Entry<Description, Long> e : timings.testTimes.entrySet()) {
|
||||||
|
testTimes.add(new Timing<>(e.getKey(), e.getValue()));
|
||||||
|
}
|
||||||
|
classTimes.sort(Collections.reverseOrder());
|
||||||
|
testTimes.sort(Collections.reverseOrder());
|
||||||
|
|
||||||
|
System.out.println();
|
||||||
|
System.out.printf("%d longest running test classes:%n", TIMINGS_TO_PRINT);
|
||||||
|
for (int i = 0; i < TIMINGS_TO_PRINT && i < classTimes.size(); i++) {
|
||||||
|
Timing<Class<?>> timing = classTimes.get(i);
|
||||||
|
System.out.printf(" %,10d ms %s%n", timing.value, timing.subject.getName());
|
||||||
|
}
|
||||||
|
System.out.printf("%d longest running tests:%n", TIMINGS_TO_PRINT);
|
||||||
|
for (int i = 0; i < TIMINGS_TO_PRINT && i < testTimes.size(); i++) {
|
||||||
|
Timing<Description> timing = testTimes.get(i);
|
||||||
|
System.out.printf(" %,10d ms %s%n", timing.value, timing.subject);
|
||||||
|
}
|
||||||
|
Object[] current = timings.getCurrentTestDuration();
|
||||||
|
if (current != null) {
|
||||||
|
System.out.printf("Test %s not finished after %d ms%n", current[0], current[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the super types of {@code cls} to {@code supertypes}.
|
||||||
|
*/
|
||||||
|
private static void gatherSupertypes(Class<?> cls, Set<Class<?>> supertypes) {
|
||||||
|
if (!supertypes.contains(cls)) {
|
||||||
|
supertypes.add(cls);
|
||||||
|
Class<?> superclass = cls.getSuperclass();
|
||||||
|
if (superclass != null) {
|
||||||
|
gatherSupertypes(superclass, supertypes);
|
||||||
|
}
|
||||||
|
for (Class<?> iface : cls.getInterfaces()) {
|
||||||
|
gatherSupertypes(iface, supertypes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates modules specified in {@code AddExport} annotations on {@code classes} to export
|
||||||
|
* concealed packages to the annotation classes' declaring modules.
|
||||||
|
*/
|
||||||
|
private static void addExports(Set<Class<?>> classes, PrintStream out) {
|
||||||
|
Set<Class<?>> types = new HashSet<>();
|
||||||
|
for (Class<?> cls : classes) {
|
||||||
|
gatherSupertypes(cls, types);
|
||||||
|
}
|
||||||
|
for (Class<?> cls : types) {
|
||||||
|
Annotation[] annos = cls.getAnnotations();
|
||||||
|
for (Annotation a : annos) {
|
||||||
|
Class<? extends Annotation> annotationType = a.annotationType();
|
||||||
|
if (annotationType.getSimpleName().equals("AddExports")) {
|
||||||
|
Optional<String[]> value = getElement("value", String[].class, a);
|
||||||
|
if (value.isPresent()) {
|
||||||
|
for (String export : value.get()) {
|
||||||
|
Matcher m = MODULE_PACKAGE_RE.matcher(export);
|
||||||
|
if (m.matches()) {
|
||||||
|
String moduleName = m.group(1);
|
||||||
|
String packageName = m.group(2);
|
||||||
|
JLModule module = JLModule.find(moduleName);
|
||||||
|
if (module == null) {
|
||||||
|
out.printf("%s: Cannot find module named %s specified in \"AddExports\" annotation: %s%n", cls.getName(), moduleName, a);
|
||||||
|
} else {
|
||||||
|
if (packageName.equals("*")) {
|
||||||
|
module.exportAllPackagesTo(JLModule.fromClass(cls));
|
||||||
|
} else {
|
||||||
|
module.addExports(packageName, JLModule.fromClass(cls));
|
||||||
|
module.addOpens(packageName, JLModule.fromClass(cls));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.printf("%s: Ignoring \"AddExports\" annotation with value not matching <module>/<package> pattern: %s%n", cls.getName(), a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.printf("%s: Ignoring \"AddExports\" annotation without `String value` element: %s%n", cls.getName(), a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of the element named {@code name} of type {@code type} from {@code annotation}
|
||||||
|
* if present.
|
||||||
|
*
|
||||||
|
* @return the requested element value wrapped in an {@link Optional} or
|
||||||
|
* {@link Optional#empty()} if {@code annotation} has no element named {@code name}
|
||||||
|
* @throws AssertionError if {@code annotation} has an element of the given name but whose type
|
||||||
|
* is not {@code type} or if there's some problem reading the value via reflection
|
||||||
|
*/
|
||||||
|
private static <T> Optional<T> getElement(String name, Class<T> type, Annotation annotation) {
|
||||||
|
Class<? extends Annotation> annotationType = annotation.annotationType();
|
||||||
|
Method valueAccessor;
|
||||||
|
try {
|
||||||
|
valueAccessor = annotationType.getMethod(name);
|
||||||
|
if (!valueAccessor.getReturnType().equals(type)) {
|
||||||
|
throw new AssertionError(String.format("Element %s of %s is of type %s, not %s ", name, annotationType.getName(), valueAccessor.getReturnType().getName(), type.getName()));
|
||||||
|
}
|
||||||
|
} catch (NoSuchMethodException e) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return Optional.of(type.cast(valueAccessor.invoke(annotation)));
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new AssertionError(String.format("Could not read %s element from %s", name, annotation), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Expand any arguments starting with @ and return the resulting argument array.
|
||||||
|
*
|
||||||
|
* @return the expanded argument array
|
||||||
|
*/
|
||||||
|
private static String[] expandArgs(String[] args) {
|
||||||
|
List<String> result = null;
|
||||||
|
for (int i = 0; i < args.length; i++) {
|
||||||
|
String arg = args[i];
|
||||||
|
if (arg.length() > 0 && arg.charAt(0) == '@') {
|
||||||
|
if (result == null) {
|
||||||
|
result = new ArrayList<>();
|
||||||
|
for (int j = 0; j < i; j++) {
|
||||||
|
result.add(args[j]);
|
||||||
|
}
|
||||||
|
expandArg(arg.substring(1), result);
|
||||||
|
}
|
||||||
|
} else if (result != null) {
|
||||||
|
result.add(arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result != null ? result.toArray(new String[0]) : args;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add each line from {@code filename} to the list {@code args}.
|
||||||
|
*/
|
||||||
|
private static void expandArg(String filename, List<String> args) {
|
||||||
|
BufferedReader br = null;
|
||||||
|
try {
|
||||||
|
br = new BufferedReader(new FileReader(filename));
|
||||||
|
|
||||||
|
String buf;
|
||||||
|
while ((buf = br.readLine()) != null) {
|
||||||
|
args.add(buf);
|
||||||
|
}
|
||||||
|
br.close();
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
ioe.printStackTrace();
|
||||||
|
System.exit(2);
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (br != null) {
|
||||||
|
br.close();
|
||||||
|
}
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
ioe.printStackTrace();
|
||||||
|
System.exit(3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,147 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 2014, 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 com.oracle.mxtool.junit;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
|
||||||
|
import org.junit.internal.*;
|
||||||
|
import org.junit.runner.*;
|
||||||
|
import org.junit.runner.notification.*;
|
||||||
|
|
||||||
|
interface MxRunListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called before any tests have been run.
|
||||||
|
*
|
||||||
|
* @param description describes the tests to be run
|
||||||
|
*/
|
||||||
|
default void testRunStarted(Description description) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when all tests have finished.
|
||||||
|
*
|
||||||
|
* @param result the summary of the test run, including all the tests that failed
|
||||||
|
*/
|
||||||
|
default void testRunFinished(Result result) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a test class is about to be started.
|
||||||
|
*
|
||||||
|
* @param clazz the test class
|
||||||
|
*/
|
||||||
|
default void testClassStarted(Class<?> clazz) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when all tests of a test class have finished.
|
||||||
|
*
|
||||||
|
* @param clazz the test class
|
||||||
|
* @param numPassed number of tests in {@code clazz} that passed
|
||||||
|
* @param numFailed number of tests in {@code clazz} that failed
|
||||||
|
*/
|
||||||
|
default void testClassFinished(Class<?> clazz, int numPassed, int numFailed) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when an atomic test is about to be started. This is also called for ignored tests.
|
||||||
|
*
|
||||||
|
* @param description the description of the test that is about to be run (generally a class and
|
||||||
|
* method name)
|
||||||
|
*/
|
||||||
|
default void testStarted(Description description) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when an atomic test has finished, whether the test succeeds, fails or is ignored.
|
||||||
|
*
|
||||||
|
* @param description the description of the test that just ran
|
||||||
|
*/
|
||||||
|
default void testFinished(Description description) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when an atomic test fails.
|
||||||
|
*
|
||||||
|
* @param failure describes the test that failed and the exception that was thrown
|
||||||
|
*/
|
||||||
|
default void testFailed(Failure failure) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a test will not be run, generally because a test method is annotated with
|
||||||
|
* {@link org.junit.Ignore}.
|
||||||
|
*
|
||||||
|
* @param description describes the test that will not be run
|
||||||
|
*/
|
||||||
|
default void testIgnored(Description description) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when an atomic test succeeds.
|
||||||
|
*
|
||||||
|
* @param description describes the test that will not be run
|
||||||
|
*/
|
||||||
|
default void testSucceeded(Description description) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when an atomic test flags that it assumes a condition that is false.
|
||||||
|
*
|
||||||
|
* @param failure describes the test that failed and the {@link AssumptionViolatedException}
|
||||||
|
* that was thrown
|
||||||
|
*/
|
||||||
|
default void testAssumptionFailure(Failure failure) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called after {@link #testClassFinished(Class, int, int)}.
|
||||||
|
*/
|
||||||
|
default void testClassFinishedDelimiter() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called after {@link #testClassStarted(Class)}.
|
||||||
|
*/
|
||||||
|
default void testClassStartedDelimiter() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called after {@link #testStarted(Description)}.
|
||||||
|
*/
|
||||||
|
default void testStartedDelimiter() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called after {@link #testFailed(Failure)}.
|
||||||
|
*/
|
||||||
|
default void testFinishedDelimiter() {
|
||||||
|
}
|
||||||
|
|
||||||
|
default boolean beVerbose() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
PrintStream getWriter();
|
||||||
|
}
|
|
@ -0,0 +1,113 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 2014, 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 com.oracle.mxtool.junit;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
|
||||||
|
import org.junit.runner.*;
|
||||||
|
import org.junit.runner.notification.*;
|
||||||
|
|
||||||
|
abstract class MxRunListenerDecorator implements MxRunListener {
|
||||||
|
|
||||||
|
private final MxRunListener l;
|
||||||
|
|
||||||
|
MxRunListenerDecorator(MxRunListener l) {
|
||||||
|
this.l = l;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testRunStarted(Description description) {
|
||||||
|
l.testRunStarted(description);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testRunFinished(Result result) {
|
||||||
|
l.testRunFinished(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testAssumptionFailure(Failure failure) {
|
||||||
|
l.testAssumptionFailure(failure);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testIgnored(Description description) {
|
||||||
|
l.testIgnored(description);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testClassStarted(Class<?> clazz) {
|
||||||
|
l.testClassStarted(clazz);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testClassFinished(Class<?> clazz, int numPassed, int numFailed) {
|
||||||
|
l.testClassFinished(clazz, numPassed, numFailed);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testStarted(Description description) {
|
||||||
|
l.testStarted(description);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testFinished(Description description) {
|
||||||
|
l.testFinished(description);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testFailed(Failure failure) {
|
||||||
|
l.testFailed(failure);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testSucceeded(Description description) {
|
||||||
|
l.testSucceeded(description);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PrintStream getWriter() {
|
||||||
|
return l.getWriter();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testClassFinishedDelimiter() {
|
||||||
|
l.testClassFinishedDelimiter();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testClassStartedDelimiter() {
|
||||||
|
l.testClassStartedDelimiter();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testStartedDelimiter() {
|
||||||
|
l.testStartedDelimiter();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testFinishedDelimiter() {
|
||||||
|
l.testFinishedDelimiter();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean beVerbose() {
|
||||||
|
return l.beVerbose();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 2016, 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 com.oracle.mxtool.junit;
|
||||||
|
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
import org.junit.runner.Result;
|
||||||
|
|
||||||
|
class TestResultLoggerDecorator extends MxRunListenerDecorator {
|
||||||
|
|
||||||
|
private final PrintStream passed;
|
||||||
|
private final PrintStream failed;
|
||||||
|
|
||||||
|
TestResultLoggerDecorator(PrintStream passed, PrintStream failed, MxRunListener l) {
|
||||||
|
super(l);
|
||||||
|
this.passed = passed;
|
||||||
|
this.failed = failed;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testClassFinished(Class<?> clazz, int numPassed, int numFailed) {
|
||||||
|
super.testClassFinished(clazz, numPassed, numFailed);
|
||||||
|
if (numFailed != 0) {
|
||||||
|
failed.println(clazz.getName());
|
||||||
|
} else {
|
||||||
|
passed.println(clazz.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testRunFinished(Result result) {
|
||||||
|
super.testRunFinished(result);
|
||||||
|
passed.close();
|
||||||
|
failed.close();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,148 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2014, 2014, 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 com.oracle.mxtool.junit;
|
||||||
|
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
import org.junit.internal.JUnitSystem;
|
||||||
|
import org.junit.internal.TextListener;
|
||||||
|
import org.junit.runner.Description;
|
||||||
|
import org.junit.runner.Result;
|
||||||
|
import org.junit.runner.notification.Failure;
|
||||||
|
import org.junit.runner.notification.RunListener;
|
||||||
|
|
||||||
|
class TextRunListener implements MxRunListener {
|
||||||
|
|
||||||
|
private final PrintStream fWriter;
|
||||||
|
protected Failure lastFailure;
|
||||||
|
|
||||||
|
TextRunListener(JUnitSystem system) {
|
||||||
|
this(system.out());
|
||||||
|
}
|
||||||
|
|
||||||
|
TextRunListener(PrintStream writer) {
|
||||||
|
fWriter = writer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean beVerbose() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PrintStream getWriter() {
|
||||||
|
return fWriter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Failure getLastFailure() {
|
||||||
|
return lastFailure;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testStarted(Description description) {
|
||||||
|
getWriter().print('.');
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testFailed(Failure failure) {
|
||||||
|
getWriter().print('E');
|
||||||
|
lastFailure = failure;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testIgnored(Description description) {
|
||||||
|
getWriter().print('I');
|
||||||
|
}
|
||||||
|
|
||||||
|
public static RunListener createRunListener(MxRunListener l) {
|
||||||
|
return new TextListener(l.getWriter()) {
|
||||||
|
private Class<?> lastClass;
|
||||||
|
private int passedInLastClass;
|
||||||
|
private int failedInLastClass;
|
||||||
|
private boolean failed;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testStarted(Description description) {
|
||||||
|
Class<?> currentClass = description.getTestClass();
|
||||||
|
if (currentClass != lastClass) {
|
||||||
|
if (lastClass != null) {
|
||||||
|
l.testClassFinished(lastClass, passedInLastClass, failedInLastClass);
|
||||||
|
l.testClassFinishedDelimiter();
|
||||||
|
}
|
||||||
|
lastClass = currentClass;
|
||||||
|
passedInLastClass = 0;
|
||||||
|
failedInLastClass = 0;
|
||||||
|
l.testClassStarted(currentClass);
|
||||||
|
l.testClassStartedDelimiter();
|
||||||
|
}
|
||||||
|
failed = false;
|
||||||
|
l.testStarted(description);
|
||||||
|
l.testStartedDelimiter();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testFailure(Failure failure) {
|
||||||
|
failed = true;
|
||||||
|
failedInLastClass++;
|
||||||
|
l.testFailed(failure);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testFinished(Description description) {
|
||||||
|
// we have to do this because there is no callback for successful tests
|
||||||
|
if (!failed) {
|
||||||
|
l.testSucceeded(description);
|
||||||
|
passedInLastClass++;
|
||||||
|
}
|
||||||
|
l.testFinished(description);
|
||||||
|
l.testFinishedDelimiter();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testIgnored(Description description) {
|
||||||
|
testStarted(description);
|
||||||
|
l.testIgnored(description);
|
||||||
|
l.testFinished(description);
|
||||||
|
l.testFinishedDelimiter();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testRunStarted(Description description) {
|
||||||
|
l.testRunStarted(description);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testRunFinished(Result result) {
|
||||||
|
if (lastClass != null) {
|
||||||
|
l.testClassFinished(lastClass, passedInLastClass, failedInLastClass);
|
||||||
|
}
|
||||||
|
l.testRunFinished(result);
|
||||||
|
super.testRunFinished(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void testAssumptionFailure(Failure failure) {
|
||||||
|
l.testAssumptionFailure(failure);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue