mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 12:09:14 +00:00
Merge
This commit is contained in:
commit
67abf1eef9
1
.hgtags
1
.hgtags
@ -531,3 +531,4 @@ cc4098b3bc10d1c390384289025fea7b0d4b9e93 jdk-13+0
|
||||
11033c4ada542f9c9a873314b6ecf60af19e8256 jdk-13+1
|
||||
7496df94b3b79f3da53925d2d137317715f11d97 jdk-12+25
|
||||
50677f43ac3df9a8684222b8893543c60f3aa0bd jdk-13+2
|
||||
de9fd809bb475401aad188eab2264226788aad81 jdk-12+26
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2017, 2019, 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
|
||||
@ -237,7 +237,8 @@ else ifeq ($(OPENJDK_TARGET_OS), solaris)
|
||||
else ifeq ($(OPENJDK_TARGET_OS), windows)
|
||||
NUM_CORES := $(NUMBER_OF_PROCESSORS)
|
||||
MEMORY_SIZE := $(shell \
|
||||
$(EXPR) `wmic computersystem get totalphysicalmemory -value | $(GREP) = \
|
||||
$(EXPR) `wmic computersystem get totalphysicalmemory -value \
|
||||
| $(GREP) = | $(SED) 's/\\r//g' \
|
||||
| $(CUT) -d "=" -f 2-` / 1024 / 1024 \
|
||||
)
|
||||
endif
|
||||
|
||||
@ -183,7 +183,8 @@ AC_DEFUN([FLAGS_SETUP_WARNINGS],
|
||||
|
||||
# Additional warnings that are not activated by -Wall and -Wextra
|
||||
WARNINGS_ENABLE_ADDITIONAL="-Wpointer-arith -Wsign-compare \
|
||||
-Wunused-function -Wundef -Wunused-value -Wreturn-type"
|
||||
-Wunused-function -Wundef -Wunused-value -Wreturn-type \
|
||||
-Wtrampolines"
|
||||
WARNINGS_ENABLE_ADDITIONAL_CXX="-Woverloaded-virtual -Wreorder"
|
||||
WARNINGS_ENABLE_ALL_CFLAGS="-Wall -Wextra -Wformat=2 $WARNINGS_ENABLE_ADDITIONAL"
|
||||
WARNINGS_ENABLE_ALL_CXXFLAGS="$WARNINGS_ENABLE_ALL_CFLAGS $WARNINGS_ENABLE_ADDITIONAL_CXX"
|
||||
|
||||
@ -649,7 +649,7 @@ void LIR_Assembler::const2reg(LIR_Opr src, LIR_Opr dest, LIR_PatchCode patch_cod
|
||||
|
||||
case T_FLOAT: {
|
||||
if (dest->is_single_xmm()) {
|
||||
if (LP64_ONLY(UseAVX < 2 &&) c->is_zero_float()) {
|
||||
if (LP64_ONLY(UseAVX <= 2 &&) c->is_zero_float()) {
|
||||
__ xorps(dest->as_xmm_float_reg(), dest->as_xmm_float_reg());
|
||||
} else {
|
||||
__ movflt(dest->as_xmm_float_reg(),
|
||||
@ -671,7 +671,7 @@ void LIR_Assembler::const2reg(LIR_Opr src, LIR_Opr dest, LIR_PatchCode patch_cod
|
||||
|
||||
case T_DOUBLE: {
|
||||
if (dest->is_double_xmm()) {
|
||||
if (LP64_ONLY(UseAVX < 2 &&) c->is_zero_double()) {
|
||||
if (LP64_ONLY(UseAVX <= 2 &&) c->is_zero_double()) {
|
||||
__ xorpd(dest->as_xmm_double_reg(), dest->as_xmm_double_reg());
|
||||
} else {
|
||||
__ movdbl(dest->as_xmm_double_reg(),
|
||||
|
||||
@ -2924,11 +2924,11 @@ instruct MoveVecX2Leg(legVecX dst, vecX src) %{
|
||||
match(Set dst src);
|
||||
format %{ "movdqu $dst,$src\t! load vector (16 bytes)" %}
|
||||
ins_encode %{
|
||||
if (UseAVX < 2 || VM_Version::supports_avx512vl()) {
|
||||
__ movdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
} else {
|
||||
if (UseAVX > 2 && !VM_Version::supports_avx512vl()) {
|
||||
int vector_len = 2;
|
||||
__ evmovdquq($dst$$XMMRegister, $src$$XMMRegister, vector_len);
|
||||
} else {
|
||||
__ movdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
}
|
||||
%}
|
||||
ins_pipe( fpu_reg_reg );
|
||||
@ -2939,11 +2939,11 @@ instruct MoveLeg2VecX(vecX dst, legVecX src) %{
|
||||
match(Set dst src);
|
||||
format %{ "movdqu $dst,$src\t! load vector (16 bytes)" %}
|
||||
ins_encode %{
|
||||
if (UseAVX < 2 || VM_Version::supports_avx512vl()) {
|
||||
__ movdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
} else {
|
||||
if (UseAVX > 2 && !VM_Version::supports_avx512vl()) {
|
||||
int vector_len = 2;
|
||||
__ evmovdquq($dst$$XMMRegister, $src$$XMMRegister, vector_len);
|
||||
} else {
|
||||
__ movdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
}
|
||||
%}
|
||||
ins_pipe( fpu_reg_reg );
|
||||
@ -2966,11 +2966,11 @@ instruct MoveVecY2Leg(legVecY dst, vecY src) %{
|
||||
match(Set dst src);
|
||||
format %{ "vmovdqu $dst,$src\t! load vector (32 bytes)" %}
|
||||
ins_encode %{
|
||||
if (UseAVX < 2 || VM_Version::supports_avx512vl()) {
|
||||
__ vmovdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
} else {
|
||||
if (UseAVX > 2 && !VM_Version::supports_avx512vl()) {
|
||||
int vector_len = 2;
|
||||
__ evmovdquq($dst$$XMMRegister, $src$$XMMRegister, vector_len);
|
||||
} else {
|
||||
__ vmovdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
}
|
||||
%}
|
||||
ins_pipe( fpu_reg_reg );
|
||||
@ -2981,11 +2981,11 @@ instruct MoveLeg2VecY(vecY dst, legVecY src) %{
|
||||
match(Set dst src);
|
||||
format %{ "vmovdqu $dst,$src\t! load vector (32 bytes)" %}
|
||||
ins_encode %{
|
||||
if (UseAVX < 2 || VM_Version::supports_avx512vl()) {
|
||||
__ vmovdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
} else {
|
||||
if (UseAVX > 2 && !VM_Version::supports_avx512vl()) {
|
||||
int vector_len = 2;
|
||||
__ evmovdquq($dst$$XMMRegister, $src$$XMMRegister, vector_len);
|
||||
} else {
|
||||
__ vmovdqu($dst$$XMMRegister, $src$$XMMRegister);
|
||||
}
|
||||
%}
|
||||
ins_pipe( fpu_reg_reg );
|
||||
|
||||
@ -164,7 +164,7 @@ bool JfrSymbolId::is_unsafe_anonymous_klass(const Klass* k) {
|
||||
uintptr_t JfrSymbolId::unsafe_anonymous_klass_name_hash_code(const InstanceKlass* ik) {
|
||||
assert(ik != NULL, "invariant");
|
||||
assert(ik->is_unsafe_anonymous(), "invariant");
|
||||
const oop mirror = ik->java_mirror();
|
||||
const oop mirror = ik->java_mirror_no_keepalive();
|
||||
assert(mirror != NULL, "invariant");
|
||||
return (uintptr_t)mirror->identity_hash();
|
||||
}
|
||||
@ -174,7 +174,7 @@ const char* JfrSymbolId::create_unsafe_anonymous_klass_symbol(const InstanceKlas
|
||||
assert(ik->is_unsafe_anonymous(), "invariant");
|
||||
assert(0 == hashcode, "invariant");
|
||||
char* anonymous_symbol = NULL;
|
||||
const oop mirror = ik->java_mirror();
|
||||
const oop mirror = ik->java_mirror_no_keepalive();
|
||||
assert(mirror != NULL, "invariant");
|
||||
char hash_buf[40];
|
||||
hashcode = unsafe_anonymous_klass_name_hash_code(ik);
|
||||
|
||||
@ -354,6 +354,10 @@ bool IdealLoopTree::policy_peeling( PhaseIdealLoop *phase ) const {
|
||||
// check for vectorized loops, any peeling done was already applied
|
||||
if (_head->is_CountedLoop() && _head->as_CountedLoop()->do_unroll_only()) return false;
|
||||
|
||||
if (_head->is_CountedLoop() && _head->as_CountedLoop()->trip_count() == 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
while( test != _head ) { // Scan till run off top of loop
|
||||
if( test->is_If() ) { // Test?
|
||||
Node *ctrl = phase->get_ctrl(test->in(1));
|
||||
@ -2035,13 +2039,20 @@ void PhaseIdealLoop::mark_reductions(IdealLoopTree *loop) {
|
||||
|
||||
//------------------------------adjust_limit-----------------------------------
|
||||
// Helper function for add_constraint().
|
||||
Node* PhaseIdealLoop::adjust_limit(int stride_con, Node * scale, Node *offset, Node *rc_limit, Node *loop_limit, Node *pre_ctrl) {
|
||||
Node* PhaseIdealLoop::adjust_limit(int stride_con, Node * scale, Node *offset, Node *rc_limit, Node *loop_limit, Node *pre_ctrl, bool round_up) {
|
||||
// Compute "I :: (limit-offset)/scale"
|
||||
Node *con = new SubINode(rc_limit, offset);
|
||||
register_new_node(con, pre_ctrl);
|
||||
Node *X = new DivINode(0, con, scale);
|
||||
register_new_node(X, pre_ctrl);
|
||||
|
||||
// When the absolute value of scale is greater than one, the integer
|
||||
// division may round limit down so add one to the limit.
|
||||
if (round_up) {
|
||||
X = new AddINode(X, _igvn.intcon(1));
|
||||
register_new_node(X, pre_ctrl);
|
||||
}
|
||||
|
||||
// Adjust loop limit
|
||||
loop_limit = (stride_con > 0)
|
||||
? (Node*)(new MinINode(loop_limit, X))
|
||||
@ -2082,7 +2093,7 @@ void PhaseIdealLoop::add_constraint( int stride_con, int scale_con, Node *offset
|
||||
// (upper_limit-offset) may overflow or underflow.
|
||||
// But it is fine since main loop will either have
|
||||
// less iterations or will be skipped in such case.
|
||||
*main_limit = adjust_limit(stride_con, scale, offset, upper_limit, *main_limit, pre_ctrl);
|
||||
*main_limit = adjust_limit(stride_con, scale, offset, upper_limit, *main_limit, pre_ctrl, false);
|
||||
|
||||
// The underflow limit: low_limit <= scale*I+offset.
|
||||
// For pre-loop compute
|
||||
@ -2117,7 +2128,8 @@ void PhaseIdealLoop::add_constraint( int stride_con, int scale_con, Node *offset
|
||||
// max(pre_limit, original_limit) is used in do_range_check().
|
||||
}
|
||||
// Pass (-stride) to indicate pre_loop_cond = NOT(main_loop_cond);
|
||||
*pre_limit = adjust_limit((-stride_con), scale, offset, low_limit, *pre_limit, pre_ctrl);
|
||||
*pre_limit = adjust_limit((-stride_con), scale, offset, low_limit, *pre_limit, pre_ctrl,
|
||||
scale_con > 1 && stride_con > 0);
|
||||
|
||||
} else { // stride_con*scale_con < 0
|
||||
// For negative stride*scale pre-loop checks for overflow and
|
||||
@ -2143,7 +2155,8 @@ void PhaseIdealLoop::add_constraint( int stride_con, int scale_con, Node *offset
|
||||
Node *plus_one = new AddINode(offset, one);
|
||||
register_new_node( plus_one, pre_ctrl );
|
||||
// Pass (-stride) to indicate pre_loop_cond = NOT(main_loop_cond);
|
||||
*pre_limit = adjust_limit((-stride_con), scale, plus_one, upper_limit, *pre_limit, pre_ctrl);
|
||||
*pre_limit = adjust_limit((-stride_con), scale, plus_one, upper_limit, *pre_limit, pre_ctrl,
|
||||
scale_con < -1 && stride_con > 0);
|
||||
|
||||
if (low_limit->get_int() == -max_jint) {
|
||||
// We need this guard when scale*main_limit+offset >= limit
|
||||
@ -2177,7 +2190,8 @@ void PhaseIdealLoop::add_constraint( int stride_con, int scale_con, Node *offset
|
||||
// I > (low_limit-(offset+1))/scale
|
||||
// )
|
||||
|
||||
*main_limit = adjust_limit(stride_con, scale, plus_one, low_limit, *main_limit, pre_ctrl);
|
||||
*main_limit = adjust_limit(stride_con, scale, plus_one, low_limit, *main_limit, pre_ctrl,
|
||||
false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1190,7 +1190,7 @@ public:
|
||||
// loop. Scale_con, offset and limit are all loop invariant.
|
||||
void add_constraint( int stride_con, int scale_con, Node *offset, Node *low_limit, Node *upper_limit, Node *pre_ctrl, Node **pre_limit, Node **main_limit );
|
||||
// Helper function for add_constraint().
|
||||
Node* adjust_limit( int stride_con, Node * scale, Node *offset, Node *rc_limit, Node *loop_limit, Node *pre_ctrl );
|
||||
Node* adjust_limit(int stride_con, Node * scale, Node *offset, Node *rc_limit, Node *loop_limit, Node *pre_ctrl, bool round_up);
|
||||
|
||||
// Partially peel loop up through last_peel node.
|
||||
bool partial_peel( IdealLoopTree *loop, Node_List &old_new );
|
||||
|
||||
@ -3088,6 +3088,10 @@ jint Arguments::finalize_vm_init_args(bool patch_mod_javabase) {
|
||||
BytecodeVerificationRemote = true;
|
||||
log_info(cds)("All non-system classes will be verified (-Xverify:remote) during CDS dump time.");
|
||||
}
|
||||
|
||||
// Compilation is already disabled if the user specifies -Xshare:dump.
|
||||
// Disable compilation in case user specifies -XX:+DumpSharedSpaces instead of -Xshare:dump.
|
||||
set_mode_flags(_int);
|
||||
}
|
||||
if (UseSharedSpaces && patch_mod_javabase) {
|
||||
no_shared_spaces("CDS is disabled when " JAVA_BASE_NAME " module is patched.");
|
||||
|
||||
@ -61,6 +61,8 @@ compiler/cpuflags/TestAESIntrinsicsOnSupportedConfig.java 8190680 generic-all
|
||||
|
||||
compiler/runtime/Test8168712.java 8211769,8211771 generic-ppc64,generic-ppc64le,linux-s390x
|
||||
|
||||
compiler/loopopts/PeelingZeroTripCount.java 8216135 generic-all
|
||||
|
||||
#############################################################################
|
||||
|
||||
# :hotspot_gc
|
||||
@ -85,6 +87,7 @@ runtime/appcds/javaldr/GCSharedStringsDuringDump.java 8208778 macosx-x64
|
||||
runtime/appcds/javaldr/GCDuringDump.java 8208778 macosx-x64
|
||||
runtime/appcds/jigsaw/classpathtests/EmptyClassInBootClassPath.java 8213299 generic-all
|
||||
runtime/CompressedOops/UseCompressedOops.java 8079353 generic-all
|
||||
runtime/handshake/HandshakeWalkSuspendExitTest.java 8214174 generic-all
|
||||
runtime/RedefineTests/RedefineRunningMethods.java 8208778 macosx-x64
|
||||
runtime/SharedArchiveFile/SASymbolTableTest.java 8193639 solaris-all
|
||||
|
||||
|
||||
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Red Hat, Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8215044
|
||||
* @summary C2 crash in loopTransform.cpp with assert(cl->trip_count() > 0) failed: peeling a fully unrolled loop
|
||||
*
|
||||
* @run main/othervm -XX:CompileOnly=PeelingZeroTripCount.test PeelingZeroTripCount
|
||||
*
|
||||
*/
|
||||
|
||||
public class PeelingZeroTripCount {
|
||||
|
||||
public static void main(String[] args) {
|
||||
PeelingZeroTripCount issue = new PeelingZeroTripCount();
|
||||
for (int i = 0; i < 10000; i++) {
|
||||
issue.test(new int[999]);
|
||||
}
|
||||
}
|
||||
|
||||
public void test(int[] iaarg) {
|
||||
int[] iarr = new int[777];
|
||||
for (int i = 4; i > 0; i--) {
|
||||
for (int j = 0; j <= i - 1; j++) {
|
||||
int istep = 2 * j - i + 1;
|
||||
int iadj = 0;
|
||||
if (istep < 0) {
|
||||
iadj = iarr[0-istep] + iaarg[i-1];
|
||||
} else {
|
||||
iadj = iarr[istep] + iaarg[i-1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Red Hat, Inc. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8215265
|
||||
* @summary C2: range check elimination may allow illegal out of bound access
|
||||
*
|
||||
* @run main/othervm -XX:-TieredCompilation -XX:-BackgroundCompilation -XX:-UseOnStackReplacement -XX:-UseLoopPredicate RangeCheckEliminationScaleNotOne
|
||||
*
|
||||
*/
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class RangeCheckEliminationScaleNotOne {
|
||||
public static void main(String[] args) {
|
||||
{
|
||||
int[] array = new int[199];
|
||||
boolean[] flags = new boolean[100];
|
||||
Arrays.fill(flags, true);
|
||||
flags[0] = false;
|
||||
flags[1] = false;
|
||||
for (int i = 0; i < 20_000; i++) {
|
||||
test1(100, array, 0, flags);
|
||||
}
|
||||
boolean ex = false;
|
||||
try {
|
||||
test1(100, array, -5, flags);
|
||||
} catch (ArrayIndexOutOfBoundsException aie) {
|
||||
ex = true;
|
||||
}
|
||||
if (!ex) {
|
||||
throw new RuntimeException("no AIOOB exception");
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
int[] array = new int[199];
|
||||
boolean[] flags = new boolean[100];
|
||||
Arrays.fill(flags, true);
|
||||
flags[0] = false;
|
||||
flags[1] = false;
|
||||
for (int i = 0; i < 20_000; i++) {
|
||||
test2(100, array, 198, flags);
|
||||
}
|
||||
boolean ex = false;
|
||||
try {
|
||||
test2(100, array, 203, flags);
|
||||
} catch (ArrayIndexOutOfBoundsException aie) {
|
||||
ex = true;
|
||||
}
|
||||
if (!ex) {
|
||||
throw new RuntimeException("no AIOOB exception");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static int test1(int stop, int[] array, int offset, boolean[] flags) {
|
||||
if (array == null) {}
|
||||
int res = 0;
|
||||
for (int i = 0; i < stop; i++) {
|
||||
if (flags[i]) {
|
||||
res += array[2 * i + offset];
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
private static int test2(int stop, int[] array, int offset, boolean[] flags) {
|
||||
if (array == null) {}
|
||||
int res = 0;
|
||||
for (int i = 0; i < stop; i++) {
|
||||
if (flags[i]) {
|
||||
res += array[-2 * i + offset];
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@ -47,6 +47,13 @@ public class SharedArchiveFile {
|
||||
OutputAnalyzer out = CDSTestUtils.executeAndLog(pb, "SharedArchiveFile");
|
||||
CDSTestUtils.checkDump(out);
|
||||
|
||||
// -XX:+DumpSharedSpaces should behave the same as -Xshare:dump
|
||||
pb = ProcessTools.createJavaProcessBuilder(true,
|
||||
"-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
|
||||
"-XX:+DumpSharedSpaces");
|
||||
out = CDSTestUtils.executeAndLog(pb, "SharedArchiveFile");
|
||||
CDSTestUtils.checkDump(out);
|
||||
|
||||
pb = ProcessTools.createJavaProcessBuilder(true,
|
||||
"-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
|
||||
"-Xshare:on", "-version");
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2019, 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
|
||||
@ -203,6 +203,6 @@ public class attach002 extends Log {
|
||||
return connector;
|
||||
}
|
||||
}
|
||||
throw new Error("No appropriate connector");
|
||||
throw new Error("No appropriate connector: " + connectorName);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2018, 2019, 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
|
||||
@ -21,6 +21,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
// Not run on AIX as it does not support ulimit -v.
|
||||
|
||||
/*
|
||||
* @test
|
||||
@ -40,6 +41,7 @@
|
||||
*
|
||||
* @library /vmTestbase
|
||||
* /test/lib
|
||||
* @requires os.family != "aix"
|
||||
* @run driver jdk.test.lib.FileInstaller . .
|
||||
* @build nsk.jvmti.Allocate.alloc001
|
||||
* @run shell alloc001.sh
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2008, 2019, 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
|
||||
@ -41,7 +41,8 @@ aix | bsd | linux | solaris)
|
||||
max_ulimit=1048576
|
||||
max_heap=256m
|
||||
else
|
||||
max_ulimit=4194304
|
||||
# AIX requires a 32-bit value here.
|
||||
max_ulimit=4194303
|
||||
max_heap=512m
|
||||
fi
|
||||
|
||||
@ -74,6 +75,7 @@ esac
|
||||
|
||||
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$TESTNATIVEPATH
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TESTNATIVEPATH
|
||||
export LIBPATH=$LIBPATH:$TESTNATIVEPATH
|
||||
export PATH=$PATH:$TESTNATIVEPATH
|
||||
|
||||
echo $JAVA ${JAVA_OPTS} nsk.jvmti.Allocate.alloc001
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2018, 2019, 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
|
||||
@ -76,8 +76,18 @@ public class TestDriver {
|
||||
"-agentlib:retransform003-03=id=3 can_retransform_classes=1",
|
||||
nsk.jvmti.RetransformClasses.retransform003.class.getName()
|
||||
);
|
||||
String envName = Platform.isWindows() ? "PATH" :
|
||||
(Platform.isOSX() ? "DYLD_LIBRARY_PATH" : "LD_LIBRARY_PATH");
|
||||
|
||||
String envName;
|
||||
if (Platform.isWindows()) {
|
||||
envName = "PATH";
|
||||
} else if (Platform.isOSX()) {
|
||||
envName = "DYLD_LIBRARY_PATH";
|
||||
} else if (Platform.isAix()) {
|
||||
envName = "LIBPATH";
|
||||
} else {
|
||||
envName = "LD_LIBRARY_PATH";
|
||||
}
|
||||
|
||||
pb.environment()
|
||||
.merge(envName, ".", (x, y) -> y + File.pathSeparator + x);
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2018, 2019, 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
|
||||
@ -66,8 +66,18 @@ public class TestDriver {
|
||||
"-agentlib:SetNativeMethodPrefix002-03=trace=all prefix=wc_",
|
||||
nsk.jvmti.SetNativeMethodPrefix.SetNativeMethodPrefix002.class.getName()
|
||||
);
|
||||
String envName = Platform.isWindows() ? "PATH" :
|
||||
(Platform.isOSX() ? "DYLD_LIBRARY_PATH" : "LD_LIBRARY_PATH");
|
||||
|
||||
String envName;
|
||||
if (Platform.isWindows()) {
|
||||
envName = "PATH";
|
||||
} else if (Platform.isOSX()) {
|
||||
envName = "DYLD_LIBRARY_PATH";
|
||||
} else if (Platform.isAix()) {
|
||||
envName = "LIBPATH";
|
||||
} else {
|
||||
envName = "LD_LIBRARY_PATH";
|
||||
}
|
||||
|
||||
pb.environment()
|
||||
.merge(envName, ".", (x, y) -> y + File.pathSeparator + x);
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2019, 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
|
||||
@ -533,8 +533,12 @@ class CheckedFeatures {
|
||||
{"linux-sparcv9", "com.sun.jdi.SharedMemoryAttach"},
|
||||
{"linux-aarch64", "com.sun.jdi.SharedMemoryAttach"},
|
||||
{"linux-arm", "com.sun.jdi.SharedMemoryAttach"},
|
||||
{"linux-ppc64", "com.sun.jdi.SharedMemoryAttach"},
|
||||
{"linux-ppc64le", "com.sun.jdi.SharedMemoryAttach"},
|
||||
{"linux-s390x", "com.sun.jdi.SharedMemoryAttach"},
|
||||
{"macosx-amd64", "com.sun.jdi.SharedMemoryAttach"},
|
||||
{"mac-x64", "com.sun.jdi.SharedMemoryAttach"},
|
||||
{"aix-ppc64", "com.sun.jdi.SharedMemoryAttach"},
|
||||
|
||||
// listening connectors
|
||||
/*
|
||||
@ -559,8 +563,12 @@ class CheckedFeatures {
|
||||
{"linux-sparcv9", "com.sun.jdi.SharedMemoryListen"},
|
||||
{"linux-aarch64", "com.sun.jdi.SharedMemoryListen"},
|
||||
{"linux-arm", "com.sun.jdi.SharedMemoryListen"},
|
||||
{"linux-ppc64", "com.sun.jdi.SharedMemoryListen"},
|
||||
{"linux-ppc64le", "com.sun.jdi.SharedMemoryListen"},
|
||||
{"linux-s390x", "com.sun.jdi.SharedMemoryListen"},
|
||||
{"macosx-amd64", "com.sun.jdi.SharedMemoryListen"},
|
||||
{"mac-x64", "com.sun.jdi.SharedMemoryListen"},
|
||||
{"aix-ppc64", "com.sun.jdi.SharedMemoryListen"},
|
||||
|
||||
// launching connectors
|
||||
/*
|
||||
@ -615,6 +623,15 @@ class CheckedFeatures {
|
||||
{"linux-arm", "com.sun.jdi.CommandLineLaunch", "dt_shmem"},
|
||||
{"linux-arm", "com.sun.jdi.RawCommandLineLaunch", "dt_shmem"},
|
||||
|
||||
{"linux-ppc64", "com.sun.jdi.CommandLineLaunch", "dt_shmem"},
|
||||
{"linux-ppc64", "com.sun.jdi.RawCommandLineLaunch", "dt_shmem"},
|
||||
|
||||
{"linux-ppc64le", "com.sun.jdi.CommandLineLaunch", "dt_shmem"},
|
||||
{"linux-ppc64le", "com.sun.jdi.RawCommandLineLaunch", "dt_shmem"},
|
||||
|
||||
{"linux-s390x", "com.sun.jdi.CommandLineLaunch", "dt_shmem"},
|
||||
{"linux-s390x", "com.sun.jdi.RawCommandLineLaunch", "dt_shmem"},
|
||||
|
||||
{"windows-i586", "com.sun.jdi.CommandLineLaunch", "dt_socket"},
|
||||
{"windows-i586", "com.sun.jdi.RawCommandLineLaunch", "dt_socket"},
|
||||
|
||||
@ -633,6 +650,9 @@ class CheckedFeatures {
|
||||
{"mac-x64", "com.sun.jdi.CommandLineLaunch", "dt_shmem"},
|
||||
{"mac-x64", "com.sun.jdi.RawCommandLineLaunch", "dt_shmem"},
|
||||
|
||||
{"aix-ppc64", "com.sun.jdi.CommandLineLaunch", "dt_shmem"},
|
||||
{"aix-ppc64", "com.sun.jdi.RawCommandLineLaunch", "dt_shmem"},
|
||||
|
||||
// shared memory transport is implemented only on windows platform
|
||||
{"solaris-sparc", "dt_shmem"},
|
||||
{"solaris-sparcv9", "dt_shmem"},
|
||||
@ -647,7 +667,11 @@ class CheckedFeatures {
|
||||
{"linux-sparcv9", "dt_shmem"},
|
||||
{"linux-aarch64", "dt_shmem"},
|
||||
{"linux-arm", "dt_shmem"},
|
||||
{"linux-ppc64", "dt_shmem"},
|
||||
{"linux-ppc64le", "dt_shmem"},
|
||||
{"linux-s390x", "dt_shmem"},
|
||||
{"macosx-amd64", "dt_shmem"},
|
||||
{"mac-x64", "dt_shmem"},
|
||||
{"aix-ppc64", "dt_shmem"},
|
||||
};
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user