666 lines
29 KiB
Diff
666 lines
29 KiB
Diff
diff --git a/src/hotspot/share/c1/c1_GraphBuilder.cpp b/src/hotspot/share/c1/c1_GraphBuilder.cpp
|
|
index 211c2acda..86cc0108b 100644
|
|
--- a/src/hotspot/share/c1/c1_GraphBuilder.cpp
|
|
+++ b/src/hotspot/share/c1/c1_GraphBuilder.cpp
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1999, 2019, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1999, 2020, 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
|
|
@@ -3783,6 +3783,23 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known, bool ign
|
|
INLINE_BAILOUT("mdo allocation failed");
|
|
}
|
|
|
|
+ const bool is_invokedynamic = (bc == Bytecodes::_invokedynamic);
|
|
+ const bool has_receiver = (bc != Bytecodes::_invokestatic && !is_invokedynamic);
|
|
+
|
|
+ const int args_base = state()->stack_size() - callee->arg_size();
|
|
+ assert(args_base >= 0, "stack underflow during inlining");
|
|
+
|
|
+ Value recv = NULL;
|
|
+ if (has_receiver) {
|
|
+ assert(!callee->is_static(), "callee must not be static");
|
|
+ assert(callee->arg_size() > 0, "must have at least a receiver");
|
|
+
|
|
+ recv = state()->stack_at(args_base);
|
|
+ if (recv->is_null_obj()) {
|
|
+ INLINE_BAILOUT("receiver is always null");
|
|
+ }
|
|
+ }
|
|
+
|
|
// now perform tests that are based on flag settings
|
|
bool inlinee_by_directive = compilation()->directive()->should_inline(callee);
|
|
if (callee->force_inline() || inlinee_by_directive) {
|
|
@@ -3825,21 +3842,11 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known, bool ign
|
|
|
|
BlockBegin* orig_block = block();
|
|
|
|
- const bool is_invokedynamic = bc == Bytecodes::_invokedynamic;
|
|
- const bool has_receiver = (bc != Bytecodes::_invokestatic && !is_invokedynamic);
|
|
-
|
|
- const int args_base = state()->stack_size() - callee->arg_size();
|
|
- assert(args_base >= 0, "stack underflow during inlining");
|
|
-
|
|
// Insert null check if necessary
|
|
- Value recv = NULL;
|
|
if (has_receiver) {
|
|
// note: null check must happen even if first instruction of callee does
|
|
// an implicit null check since the callee is in a different scope
|
|
// and we must make sure exception handling does the right thing
|
|
- assert(!callee->is_static(), "callee must not be static");
|
|
- assert(callee->arg_size() > 0, "must have at least a receiver");
|
|
- recv = state()->stack_at(args_base);
|
|
null_check(recv);
|
|
}
|
|
|
|
diff --git a/src/hotspot/share/c1/c1_Instruction.hpp b/src/hotspot/share/c1/c1_Instruction.hpp
|
|
index a94a21e42..61d3cc8cc 100644
|
|
--- a/src/hotspot/share/c1/c1_Instruction.hpp
|
|
+++ b/src/hotspot/share/c1/c1_Instruction.hpp
|
|
@@ -1,5 +1,5 @@
|
|
/*
|
|
- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
|
|
+ * Copyright (c) 1999, 2020, 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
|
|
@@ -268,7 +268,7 @@ class InstructionVisitor: public StackObj {
|
|
|
|
|
|
#define HASHING3(class_name, enabled, f1, f2, f3) \
|
|
- virtual intx hash() const { \
|
|
+ virtual intx hash() const { \
|
|
return (enabled) ? HASH4(name(), f1, f2, f3) : 0; \
|
|
} \
|
|
virtual bool is_equal(Value v) const { \
|
|
@@ -452,6 +452,8 @@ class Instruction: public CompilationResourceObj {
|
|
bool is_linked() const { return check_flag(IsLinkedInBlockFlag); }
|
|
bool can_be_linked() { return as_Local() == NULL && as_Phi() == NULL; }
|
|
|
|
+ bool is_null_obj() { return as_Constant() != NULL && type()->as_ObjectType()->constant_value()->is_null_object(); }
|
|
+
|
|
bool has_uses() const { return use_count() > 0; }
|
|
ValueStack* state_before() const { return _state_before; }
|
|
ValueStack* exception_state() const { return _exception_state; }
|
|
@@ -832,8 +834,8 @@ LEAF(LoadField, AccessField)
|
|
|
|
ciType* declared_type() const;
|
|
|
|
- // generic
|
|
- HASHING2(LoadField, !needs_patching() && !field()->is_volatile(), obj()->subst(), offset()) // cannot be eliminated if needs patching or if volatile
|
|
+ // generic; cannot be eliminated if needs patching or if volatile.
|
|
+ HASHING3(LoadField, !needs_patching() && !field()->is_volatile(), obj()->subst(), offset(), declared_type())
|
|
};
|
|
|
|
|
|
@@ -962,8 +964,8 @@ LEAF(LoadIndexed, AccessIndexed)
|
|
ciType* exact_type() const;
|
|
ciType* declared_type() const;
|
|
|
|
- // generic
|
|
- HASHING2(LoadIndexed, true, array()->subst(), index()->subst())
|
|
+ // generic;
|
|
+ HASHING3(LoadIndexed, true, type()->tag(), array()->subst(), index()->subst())
|
|
};
|
|
|
|
|
|
diff --git a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
|
|
index 8b4be7d11..1b9dd5ada 100644
|
|
--- a/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
|
|
+++ b/src/hotspot/share/gc/shared/c2/barrierSetC2.hpp
|
|
@@ -217,7 +217,7 @@ public:
|
|
// Allow barrier sets to have shared state that is preserved across a compilation unit.
|
|
// This could for example comprise macro nodes to be expanded during macro expansion.
|
|
virtual void* create_barrier_state(Arena* comp_arena) const { return NULL; }
|
|
- virtual void optimize_loops(PhaseIdealLoop* phase, VectorSet& visited, Node_Stack& nstack, Node_List& worklist) const { }
|
|
+ virtual bool optimize_loops(PhaseIdealLoop* phase, LoopOptsMode mode, VectorSet& visited, Node_Stack& nstack, Node_List& worklist) const { return false; }
|
|
// If the BarrierSetC2 state has kept macro nodes in its compilation unit state to be
|
|
// expanded later, then now is the time to do so.
|
|
virtual bool expand_macro_nodes(PhaseMacroExpand* macro) const { return false; }
|
|
diff --git a/src/hotspot/share/gc/shared/taskqueue.hpp b/src/hotspot/share/gc/shared/taskqueue.hpp
|
|
index 246e82be6..110757684 100644
|
|
--- a/src/hotspot/share/gc/shared/taskqueue.hpp
|
|
+++ b/src/hotspot/share/gc/shared/taskqueue.hpp
|
|
@@ -515,7 +515,7 @@ public:
|
|
// As above, but it also terminates if the should_exit_termination()
|
|
// method of the terminator parameter returns true. If terminator is
|
|
// NULL, then it is ignored.
|
|
- SHENANDOAHGC_ONLY(virtual) virtual bool offer_termination(TerminatorTerminator* terminator);
|
|
+ virtual bool offer_termination(TerminatorTerminator* terminator);
|
|
|
|
// Reset the terminator, so that it may be reused again.
|
|
// The caller is responsible for ensuring that this is done
|
|
diff --git a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp
|
|
index 0f3c429ed..82fde2c94 100644
|
|
--- a/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp
|
|
+++ b/src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp
|
|
@@ -889,7 +889,6 @@ void ShenandoahConcurrentMark::mark_loop_prework(uint w, ShenandoahTaskTerminato
|
|
|
|
template <class T, bool CANCELLABLE>
|
|
void ShenandoahConcurrentMark::mark_loop_work(T* cl, ShenandoahLiveData* live_data, uint worker_id, ShenandoahTaskTerminator *terminator) {
|
|
- int seed = 17;
|
|
uintx stride = ShenandoahMarkLoopStride;
|
|
|
|
ShenandoahHeap* heap = ShenandoahHeap::heap();
|
|
@@ -943,7 +942,7 @@ void ShenandoahConcurrentMark::mark_loop_work(T* cl, ShenandoahLiveData* live_da
|
|
uint work = 0;
|
|
for (uint i = 0; i < stride; i++) {
|
|
if (q->pop(t) ||
|
|
- queues->steal(worker_id, &seed, t)) {
|
|
+ queues->steal(worker_id, t)) {
|
|
do_task<T>(q, cl, live_data, &t);
|
|
work++;
|
|
} else {
|
|
diff --git a/src/hotspot/share/opto/graphKit.cpp b/src/hotspot/share/opto/graphKit.cpp
|
|
index 22222efbc..5849e8f86 100644
|
|
--- a/src/hotspot/share/opto/graphKit.cpp
|
|
+++ b/src/hotspot/share/opto/graphKit.cpp
|
|
@@ -44,6 +44,7 @@
|
|
#include "runtime/sharedRuntime.hpp"
|
|
#include "utilities/bitMap.inline.hpp"
|
|
#include "utilities/macros.hpp"
|
|
+#include "utilities/bitMap.inline.hpp"
|
|
#if INCLUDE_SHENANDOAHGC
|
|
#include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
|
|
#endif
|
|
diff --git a/src/java.base/share/classes/javax/net/ssl/SSLServerSocketFactory.java b/src/java.base/share/classes/javax/net/ssl/SSLServerSocketFactory.java
|
|
index 1cbbf9cfc..ef384e609 100644
|
|
--- a/src/java.base/share/classes/javax/net/ssl/SSLServerSocketFactory.java
|
|
+++ b/src/java.base/share/classes/javax/net/ssl/SSLServerSocketFactory.java
|
|
@@ -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.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -112,7 +112,7 @@ public abstract class SSLServerSocketFactory extends ServerSocketFactory
|
|
|
|
try {
|
|
return SSLContext.getDefault().getServerSocketFactory();
|
|
- } catch (NoSuchAlgorithmException e) {
|
|
+ } catch (NoSuchAlgorithmException | UnsupportedOperationException e) {
|
|
return new DefaultSSLServerSocketFactory(e);
|
|
}
|
|
}
|
|
diff --git a/src/java.base/share/classes/javax/net/ssl/SSLSocketFactory.java b/src/java.base/share/classes/javax/net/ssl/SSLSocketFactory.java
|
|
index 39a9918d4..1115c48d8 100644
|
|
--- a/src/java.base/share/classes/javax/net/ssl/SSLSocketFactory.java
|
|
+++ b/src/java.base/share/classes/javax/net/ssl/SSLSocketFactory.java
|
|
@@ -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.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
@@ -121,7 +121,7 @@ public abstract class SSLSocketFactory extends SocketFactory
|
|
|
|
try {
|
|
return SSLContext.getDefault().getSocketFactory();
|
|
- } catch (NoSuchAlgorithmException e) {
|
|
+ } catch (NoSuchAlgorithmException | UnsupportedOperationException e) {
|
|
return new DefaultSSLSocketFactory(e);
|
|
}
|
|
}
|
|
diff --git a/src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java b/src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java
|
|
index de7da5c33..e8852f6bd 100644
|
|
--- a/src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java
|
|
+++ b/src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java
|
|
@@ -207,6 +207,10 @@ public abstract class SSLContextImpl extends SSLContextSpi {
|
|
if (!isInitialized) {
|
|
throw new IllegalStateException("SSLContext is not initialized");
|
|
}
|
|
+ if (isDTLS()) {
|
|
+ throw new UnsupportedOperationException(
|
|
+ "DTLS not supported with SSLSocket");
|
|
+ }
|
|
return new SSLSocketFactoryImpl(this);
|
|
}
|
|
|
|
@@ -215,6 +219,10 @@ public abstract class SSLContextImpl extends SSLContextSpi {
|
|
if (!isInitialized) {
|
|
throw new IllegalStateException("SSLContext is not initialized");
|
|
}
|
|
+ if (isDTLS()) {
|
|
+ throw new UnsupportedOperationException(
|
|
+ "DTLS not supported with SSLServerSocket");
|
|
+ }
|
|
return new SSLServerSocketFactoryImpl(this);
|
|
}
|
|
|
|
@@ -1262,6 +1270,25 @@ public abstract class SSLContextImpl extends SSLContextSpi {
|
|
serverDefaultProtocols, false);
|
|
}
|
|
|
|
+ @Override
|
|
+ protected SSLParameters engineGetDefaultSSLParameters() {
|
|
+ SSLEngine engine = createSSLEngineImpl();
|
|
+ // Note: The TLSContext defaults to client side SSLParameters.
|
|
+ // We can do the same here. Please don't change the behavior
|
|
+ // for compatibility.
|
|
+ engine.setUseClientMode(true);
|
|
+ return engine.getSSLParameters();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ protected SSLParameters engineGetSupportedSSLParameters() {
|
|
+ SSLEngine engine = createSSLEngineImpl();
|
|
+ SSLParameters params = new SSLParameters();
|
|
+ params.setCipherSuites(engine.getSupportedCipherSuites());
|
|
+ params.setProtocols(engine.getSupportedProtocols());
|
|
+ return params;
|
|
+ }
|
|
+
|
|
@Override
|
|
List<ProtocolVersion> getSupportedProtocolVersions() {
|
|
return supportedProtocols;
|
|
diff --git a/test/hotspot/jtreg/compiler/c1/TestValueNumberingNullObject.java b/test/hotspot/jtreg/compiler/c1/TestValueNumberingNullObject.java
|
|
new file mode 100644
|
|
index 000000000..66d5581f5
|
|
--- /dev/null
|
|
+++ b/test/hotspot/jtreg/compiler/c1/TestValueNumberingNullObject.java
|
|
@@ -0,0 +1,131 @@
|
|
+/*
|
|
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
|
|
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
+ *
|
|
+ * This code is free software; you can redistribute it and/or modify it
|
|
+ * under the terms of the GNU General Public License version 2 only, as
|
|
+ * published by the Free Software Foundation.
|
|
+ *
|
|
+ * This code is distributed in the hope that it will be useful, but WITHOUT
|
|
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
+ * version 2 for more details (a copy is included in the LICENSE file that
|
|
+ * accompanied this code).
|
|
+ *
|
|
+ * You should have received a copy of the GNU General Public License version
|
|
+ * 2 along with this work; if not, write to the Free Software Foundation,
|
|
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
+ *
|
|
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
+ * or visit www.oracle.com if you need additional information or have any
|
|
+ * questions.
|
|
+ */
|
|
+
|
|
+/*
|
|
+ * @test
|
|
+ * @bug 8237894
|
|
+ * @summary CTW: C1 compilation fails with assert(x->type()->tag() == f->type()->tag()) failed: should have same type
|
|
+ *
|
|
+ * @run main/othervm
|
|
+ * -Xcomp -Xbatch -XX:CompileCommand=compileonly,compiler.c1.T*::*
|
|
+ * -XX:CompileCommand=exclude,compiler.c1.TestValueNumberingNullObject::main
|
|
+ * -XX:CompileCommand=inline,*.*
|
|
+ * -XX:TieredStopAtLevel=3
|
|
+ * compiler.c1.TestValueNumberingNullObject
|
|
+ */
|
|
+
|
|
+package compiler.c1;
|
|
+
|
|
+class T1 {
|
|
+
|
|
+ public T2 f1;
|
|
+
|
|
+ public int za() {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ public int zb() {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ public int zc() {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ public int zd() {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ public int ze() {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ public int zf() {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ public int zg() {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ public int zh() {
|
|
+ return 0;
|
|
+ }
|
|
+}
|
|
+
|
|
+class T2 {
|
|
+
|
|
+ public T1 f1;
|
|
+
|
|
+ public int zh() {
|
|
+ return 0;
|
|
+ }
|
|
+}
|
|
+
|
|
+public class TestValueNumberingNullObject {
|
|
+
|
|
+ public static void main(String args[]) {
|
|
+ new T1(); // Load
|
|
+ new T2(); // Load
|
|
+ try {
|
|
+ // case 1
|
|
+ // Null based field access.
|
|
+ // Value Numbering null based field access causes instructions to be eliminated across type/subtypes.
|
|
+ // declared type of these instructions are field type, so it being receiver causes problems to Type System.
|
|
+ // to mitigate this issue, we hash declared type in addition to existing hashing.
|
|
+ testFieldAccess();
|
|
+ } catch (Exception e) {
|
|
+ }
|
|
+ try {
|
|
+ // case 2
|
|
+ // Null based indexed access.
|
|
+ // Value Numbering null based indexed access causes instructions to be eliminated across type/subtypes.
|
|
+ // element basic type in encoded in the access instruction, this causes problems to Type system.
|
|
+ // declared type of these instructions are null, so it being receiver doesn't cause any problem to Type System.
|
|
+ // to mitigate this issue, we hash basic type in addition to existing hashing
|
|
+ basicTypeAccess();
|
|
+ } catch (Exception e) {
|
|
+ }
|
|
+ }
|
|
+
|
|
+ static long testFieldAccess() {
|
|
+ T1 t1 = null;
|
|
+ T2 t2 = null;
|
|
+ T1[] t3 = null;
|
|
+ T2[] t4 = null;
|
|
+
|
|
+ long value = t1.f1.zh() + t2.f1.zh();
|
|
+ // null array object based field access.
|
|
+ value += t3[2].f1.zh() + t4[2].f1.zh();
|
|
+ return value;
|
|
+ }
|
|
+
|
|
+ static long basicTypeAccess() {
|
|
+ long[] f1 = null;
|
|
+ int[] f2 = null;
|
|
+ T2[] t2 = null;
|
|
+ T1[] t1 = null;
|
|
+ return f1[5] + f2[5] + t2[5].zh() + t1[5].zh();
|
|
+ }
|
|
+}
|
|
+
|
|
diff --git a/test/jdk/sun/security/ssl/SSLContextImpl/CustomizedDTLSDefaultProtocols.java b/test/jdk/sun/security/ssl/SSLContextImpl/CustomizedDTLSDefaultProtocols.java
|
|
index 0dc0ffac2..e4e9434f9 100644
|
|
--- a/test/jdk/sun/security/ssl/SSLContextImpl/CustomizedDTLSDefaultProtocols.java
|
|
+++ b/test/jdk/sun/security/ssl/SSLContextImpl/CustomizedDTLSDefaultProtocols.java
|
|
@@ -192,33 +192,13 @@ public class CustomizedDTLSDefaultProtocols {
|
|
// Check SSLParameters of SSLSocket
|
|
System.out.println();
|
|
System.out.println("\tChecking SSLSocket of this SSLContext");
|
|
- System.out.println("\tChecking SSLSocket.getSSLParameters()");
|
|
- SocketFactory fac = context.getSocketFactory();
|
|
- SSLSocket socket = (SSLSocket)fac.createSocket();
|
|
- parameters = socket.getSSLParameters();
|
|
-
|
|
- protocols = parameters.getProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.enabledProtocols);
|
|
-
|
|
- ciphers = parameters.getCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getEnabledProtocols()");
|
|
- protocols = socket.getEnabledProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.enabledProtocols);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()");
|
|
- ciphers = socket.getEnabledCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getSupportedProtocols()");
|
|
- protocols = socket.getSupportedProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.supportedProtocols);
|
|
-
|
|
- System.out.println(
|
|
- "\tChecking SSLEngine.getSupportedCipherSuites()");
|
|
- ciphers = socket.getSupportedCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
+ try {
|
|
+ context.getSocketFactory();
|
|
+ failed = true;
|
|
+ System.out.println("SSLSocket returned a socket for DTLS");
|
|
+ } catch (UnsupportedOperationException e) {
|
|
+ System.out.println("\t " + e.getMessage());
|
|
+ }
|
|
|
|
//
|
|
// Check SSLServerSocket
|
|
@@ -226,33 +206,13 @@ public class CustomizedDTLSDefaultProtocols {
|
|
// Check SSLParameters of SSLServerSocket
|
|
System.out.println();
|
|
System.out.println("\tChecking SSLServerSocket of this SSLContext");
|
|
- System.out.println("\tChecking SSLServerSocket.getSSLParameters()");
|
|
- SSLServerSocketFactory sf = context.getServerSocketFactory();
|
|
- SSLServerSocket ssocket = (SSLServerSocket)sf.createServerSocket();
|
|
- parameters = ssocket.getSSLParameters();
|
|
-
|
|
- protocols = parameters.getProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.supportedProtocols);
|
|
-
|
|
- ciphers = parameters.getCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getEnabledProtocols()");
|
|
- protocols = ssocket.getEnabledProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.supportedProtocols);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()");
|
|
- ciphers = ssocket.getEnabledCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getSupportedProtocols()");
|
|
- protocols = ssocket.getSupportedProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.supportedProtocols);
|
|
-
|
|
- System.out.println(
|
|
- "\tChecking SSLEngine.getSupportedCipherSuites()");
|
|
- ciphers = ssocket.getSupportedCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
+ try {
|
|
+ context.getServerSocketFactory();
|
|
+ failed = true;
|
|
+ System.out.println("SSLServerSocket returned a socket for DTLS");
|
|
+ } catch (UnsupportedOperationException e) {
|
|
+ System.out.println("\t " + e.getMessage());
|
|
+ }
|
|
}
|
|
|
|
if (failed) {
|
|
diff --git a/test/jdk/sun/security/ssl/SSLContextImpl/CustomizedDTLSServerDefaultProtocols.java b/test/jdk/sun/security/ssl/SSLContextImpl/CustomizedDTLSServerDefaultProtocols.java
|
|
index b0e805c06..ea0bd8ccf 100644
|
|
--- a/test/jdk/sun/security/ssl/SSLContextImpl/CustomizedDTLSServerDefaultProtocols.java
|
|
+++ b/test/jdk/sun/security/ssl/SSLContextImpl/CustomizedDTLSServerDefaultProtocols.java
|
|
@@ -32,6 +32,7 @@
|
|
* CustomizedDTLSServerDefaultProtocols
|
|
*/
|
|
|
|
+import java.lang.UnsupportedOperationException;
|
|
import java.security.NoSuchAlgorithmException;
|
|
import java.security.Security;
|
|
import java.util.Arrays;
|
|
@@ -212,33 +213,13 @@ public class CustomizedDTLSServerDefaultProtocols {
|
|
// Check SSLParameters of SSLSocket
|
|
System.out.println();
|
|
System.out.println("\tChecking SSLSocket of this SSLContext");
|
|
- System.out.println("\tChecking SSLSocket.getSSLParameters()");
|
|
- SocketFactory fac = context.getSocketFactory();
|
|
- SSLSocket socket = (SSLSocket) fac.createSocket();
|
|
- parameters = socket.getSSLParameters();
|
|
-
|
|
- protocols = parameters.getProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.clientEnabledProtocols);
|
|
-
|
|
- ciphers = parameters.getCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLSocket.getEnabledProtocols()");
|
|
- protocols = socket.getEnabledProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.clientEnabledProtocols);
|
|
-
|
|
- System.out.println("\tChecking SSLSocket.getEnabledCipherSuites()");
|
|
- ciphers = socket.getEnabledCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLSocket.getSupportedProtocols()");
|
|
- protocols = socket.getSupportedProtocols();
|
|
- failed |= !checkProtocols(protocols, supportedProtocols);
|
|
-
|
|
- System.out.println(
|
|
- "\tChecking SSLSocket.getSupportedCipherSuites()");
|
|
- ciphers = socket.getSupportedCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
+ try {
|
|
+ context.getSocketFactory();
|
|
+ failed = true;
|
|
+ System.out.println("SSLSocket returned a socket for DTLS");
|
|
+ } catch (UnsupportedOperationException e) {
|
|
+ System.out.println("\t " + e.getMessage());
|
|
+ }
|
|
|
|
//
|
|
// Check SSLServerSocket
|
|
@@ -246,33 +227,13 @@ public class CustomizedDTLSServerDefaultProtocols {
|
|
// Check SSLParameters of SSLServerSocket
|
|
System.out.println();
|
|
System.out.println("\tChecking SSLServerSocket of this SSLContext");
|
|
- System.out.println("\tChecking SSLServerSocket.getSSLParameters()");
|
|
- SSLServerSocketFactory sf = context.getServerSocketFactory();
|
|
- SSLServerSocket ssocket = (SSLServerSocket) sf.createServerSocket();
|
|
- parameters = ssocket.getSSLParameters();
|
|
-
|
|
- protocols = parameters.getProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.serverEnabledProtocols);
|
|
-
|
|
- ciphers = parameters.getCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getEnabledProtocols()");
|
|
- protocols = ssocket.getEnabledProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.serverEnabledProtocols);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()");
|
|
- ciphers = ssocket.getEnabledCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getSupportedProtocols()");
|
|
- protocols = ssocket.getSupportedProtocols();
|
|
- failed |= !checkProtocols(protocols, supportedProtocols);
|
|
-
|
|
- System.out.println(
|
|
- "\tChecking SSLEngine.getSupportedCipherSuites()");
|
|
- ciphers = ssocket.getSupportedCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
+ try {
|
|
+ context.getServerSocketFactory();
|
|
+ failed = true;
|
|
+ System.out.println("SSLServerSocket returned a socket for DTLS");
|
|
+ } catch (UnsupportedOperationException e) {
|
|
+ System.out.println("\t " + e.getMessage());
|
|
+ }
|
|
|
|
if (failed) {
|
|
throw new Exception("Run into problems, see log for more details");
|
|
diff --git a/test/jdk/sun/security/ssl/SSLContextImpl/DefaultDTLSEnabledProtocols.java b/test/jdk/sun/security/ssl/SSLContextImpl/DefaultDTLSEnabledProtocols.java
|
|
index ccfff01b6..029771541 100644
|
|
--- a/test/jdk/sun/security/ssl/SSLContextImpl/DefaultDTLSEnabledProtocols.java
|
|
+++ b/test/jdk/sun/security/ssl/SSLContextImpl/DefaultDTLSEnabledProtocols.java
|
|
@@ -189,33 +189,13 @@ public class DefaultDTLSEnabledProtocols {
|
|
// Check SSLParameters of SSLSocket
|
|
System.out.println();
|
|
System.out.println("\tChecking SSLSocket of this SSLContext");
|
|
- System.out.println("\tChecking SSLSocket.getSSLParameters()");
|
|
- SocketFactory fac = context.getSocketFactory();
|
|
- SSLSocket socket = (SSLSocket)fac.createSocket();
|
|
- parameters = socket.getSSLParameters();
|
|
-
|
|
- protocols = parameters.getProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.enabledProtocols);
|
|
-
|
|
- ciphers = parameters.getCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getEnabledProtocols()");
|
|
- protocols = socket.getEnabledProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.enabledProtocols);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()");
|
|
- ciphers = socket.getEnabledCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getSupportedProtocols()");
|
|
- protocols = socket.getSupportedProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.supportedProtocols);
|
|
-
|
|
- System.out.println(
|
|
- "\tChecking SSLEngine.getSupportedCipherSuites()");
|
|
- ciphers = socket.getSupportedCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
+ try {
|
|
+ context.getSocketFactory();
|
|
+ failed = true;
|
|
+ System.out.println("SSLSocket returned a socket for DTLS");
|
|
+ } catch (UnsupportedOperationException e) {
|
|
+ System.out.println("\t " + e.getMessage());
|
|
+ }
|
|
|
|
//
|
|
// Check SSLServerSocket
|
|
@@ -223,33 +203,13 @@ public class DefaultDTLSEnabledProtocols {
|
|
// Check SSLParameters of SSLServerSocket
|
|
System.out.println();
|
|
System.out.println("\tChecking SSLServerSocket of this SSLContext");
|
|
- System.out.println("\tChecking SSLServerSocket.getSSLParameters()");
|
|
- SSLServerSocketFactory sf = context.getServerSocketFactory();
|
|
- SSLServerSocket ssocket = (SSLServerSocket)sf.createServerSocket();
|
|
- parameters = ssocket.getSSLParameters();
|
|
-
|
|
- protocols = parameters.getProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.supportedProtocols);
|
|
-
|
|
- ciphers = parameters.getCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getEnabledProtocols()");
|
|
- protocols = ssocket.getEnabledProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.supportedProtocols);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getEnabledCipherSuites()");
|
|
- ciphers = ssocket.getEnabledCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
-
|
|
- System.out.println("\tChecking SSLEngine.getSupportedProtocols()");
|
|
- protocols = ssocket.getSupportedProtocols();
|
|
- failed |= !checkProtocols(protocols, cv.supportedProtocols);
|
|
-
|
|
- System.out.println(
|
|
- "\tChecking SSLEngine.getSupportedCipherSuites()");
|
|
- ciphers = ssocket.getSupportedCipherSuites();
|
|
- failed |= !checkCipherSuites(ciphers);
|
|
+ try {
|
|
+ context.getServerSocketFactory();
|
|
+ failed = true;
|
|
+ System.out.println("SSLServerSocket returned a socket for DTLS");
|
|
+ } catch (UnsupportedOperationException e) {
|
|
+ System.out.println("\t " + e.getMessage());
|
|
+ }
|
|
}
|
|
|
|
if (failed) {
|
|
--
|
|
2.19.0
|
|
|