Skip to content

Commit 151c746

Browse files
committed
[GR-18211] Do not allocate InetSocketAddress instances at SVM build time.
PullRequest: graalpython/655
2 parents 6a52195 + 165b268 commit 151c746

File tree

1 file changed

+12
-2
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/socket

1 file changed

+12
-2
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/socket/PSocket.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050
import com.oracle.graal.python.builtins.objects.PNone;
5151
import com.oracle.graal.python.builtins.objects.object.PythonBuiltinObject;
5252
import com.oracle.graal.python.builtins.objects.type.LazyPythonClass;
53+
import com.oracle.truffle.api.CompilerDirectives;
54+
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
5355
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
5456

5557
public class PSocket extends PythonBuiltinObject implements Channel {
@@ -81,7 +83,15 @@ public class PSocket extends PythonBuiltinObject implements Channel {
8183

8284
public static final int IPPROTO_TCP = 6;
8385

84-
private static final InetSocketAddress EPHEMERAL_ADDRESS = new InetSocketAddress(0);
86+
@CompilationFinal private static InetSocketAddress EPHEMERAL_ADDRESS;
87+
88+
private static InetSocketAddress getEphemeralAddress() {
89+
if (EPHEMERAL_ADDRESS == null) {
90+
CompilerDirectives.transferToInterpreterAndInvalidate();
91+
EPHEMERAL_ADDRESS = new InetSocketAddress(0);
92+
}
93+
return EPHEMERAL_ADDRESS;
94+
}
8595

8696
private final int family;
8797
private final int type;
@@ -94,7 +104,7 @@ public class PSocket extends PythonBuiltinObject implements Channel {
94104

95105
private double timeout;
96106

97-
private InetSocketAddress address = EPHEMERAL_ADDRESS;
107+
private InetSocketAddress address = getEphemeralAddress();
98108

99109
private SocketChannel socket;
100110

0 commit comments

Comments
 (0)