--- old/src/java.base/share/classes/java/net/SocketImpl.java 2018-10-05 14:14:33.673756917 -0700 +++ new/src/java.base/share/classes/java/net/SocketImpl.java 2018-10-05 14:14:33.397756913 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2016, 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. * * This code is free software; you can redistribute it and/or modify it @@ -30,6 +30,8 @@ import java.io.OutputStream; import java.io.FileDescriptor; import java.util.Set; +import jdk.internal.misc.JdkRdmaSocketImplAccess; +import jdk.internal.misc.SharedSecrets; /** * The abstract class {@code SocketImpl} is a common superclass @@ -69,6 +71,9 @@ */ protected int localport; + private static final JdkRdmaSocketImplAccess rsiAccess = + SharedSecrets.getJdkRdmaSocketImplAccess(); + /** * Creates either a stream or a datagram socket. * @@ -281,7 +286,11 @@ } void setSocket(Socket soc) { - this.socket = soc; + String implName = this.getClass().getName(); + if (!implName.equals("jdk.internal.net.rdma.RdmaSocketImpl")) + this.socket = soc; + else + rsiAccess.setSocket(this, soc); } Socket getSocket() { @@ -289,7 +298,11 @@ } void setServerSocket(ServerSocket soc) { - this.serverSocket = soc; + String implName = this.getClass().getName(); + if (!implName.equals("jdk.internal.net.rdma.RdmaSocketImpl")) + this.serverSocket = soc; + else + rsiAccess.setServerSocket(this, soc); } ServerSocket getServerSocket() {