Skip to content

Commit b64f051

Browse files
committed
Resolve DSL warnings the hashlib modules
1 parent 064655a commit b64f051

File tree

9 files changed

+62
-60
lines changed

9 files changed

+62
-60
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/hashlib/Blake2ModuleBuiltins.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,14 @@
5858
import com.oracle.graal.python.runtime.exception.PException;
5959
import com.oracle.graal.python.util.PythonUtils;
6060
import com.oracle.truffle.api.CompilerDirectives;
61+
import com.oracle.truffle.api.dsl.Bind;
6162
import com.oracle.truffle.api.dsl.Cached;
6263
import com.oracle.truffle.api.dsl.Fallback;
6364
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
6465
import com.oracle.truffle.api.dsl.NodeFactory;
6566
import com.oracle.truffle.api.dsl.Specialization;
6667
import com.oracle.truffle.api.frame.VirtualFrame;
68+
import com.oracle.truffle.api.nodes.Node;
6769

6870
@CoreFunctions(defineModule = "_blake2")
6971
public class Blake2ModuleBuiltins extends PythonBuiltins {
@@ -124,6 +126,7 @@ protected ArgumentClinicProvider getArgumentClinic() {
124126
@Specialization
125127
Object newDigest(VirtualFrame frame, Object type, Object data, int digestSize,
126128
PNone key, PNone salt, PNone person, int fanout, int depth, int leafSize, int nodeOffset, int nodeDepth, int innerSize, boolean lastNode, boolean usedforsecurity,
129+
@Bind("this") Node inliningTarget,
127130
@Cached HashlibModuleBuiltins.CreateDigestNode createNode) {
128131
if (fanout != 1 || depth != 1 || leafSize != 0 || nodeOffset != 0 || nodeDepth != 0 || innerSize != 0 || lastNode) {
129132
throw fail(frame, type, data, digestSize, key, salt, person, fanout, depth, leafSize, nodeOffset, nodeDepth, innerSize, lastNode, usedforsecurity);
@@ -151,7 +154,7 @@ Object newDigest(VirtualFrame frame, Object type, Object data, int digestSize,
151154
throw CompilerDirectives.shouldNotReachHere();
152155
}
153156
javaName = PythonUtils.formatJString(javaName, javaDigestSize);
154-
return createNode.execute(frame, resultType, pythonName, javaName, data, this);
157+
return createNode.execute(frame, inliningTarget, resultType, pythonName, javaName, data, this);
155158
}
156159

157160
@SuppressWarnings("unused")

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/hashlib/HashlibModuleBuiltins.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,13 @@
8383
import com.oracle.graal.python.nodes.util.CastToTruffleStringNode;
8484
import com.oracle.graal.python.runtime.object.PythonObjectFactory;
8585
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
86+
import com.oracle.truffle.api.dsl.Bind;
8687
import com.oracle.truffle.api.dsl.Cached;
8788
import com.oracle.truffle.api.dsl.Cached.Shared;
89+
import com.oracle.truffle.api.dsl.GenerateCached;
90+
import com.oracle.truffle.api.dsl.GenerateInline;
8891
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
92+
import com.oracle.truffle.api.dsl.GenerateUncached;
8993
import com.oracle.truffle.api.dsl.NodeFactory;
9094
import com.oracle.truffle.api.dsl.Specialization;
9195
import com.oracle.truffle.api.frame.VirtualFrame;
@@ -343,22 +347,25 @@ static Mac createMac(TruffleString digest, byte[] key, int keyLen, byte[] msg, i
343347
return mac;
344348
}
345349

350+
@GenerateUncached(false)
351+
@GenerateCached(false)
352+
@GenerateInline
346353
abstract static class CreateDigestNode extends Node {
347-
abstract Object execute(VirtualFrame frame, PythonBuiltinClassType type, String pythonName, String javaName, Object buffer, PythonBuiltinBaseNode indirectCallNode);
354+
abstract Object execute(VirtualFrame frame, Node inliningTarget, PythonBuiltinClassType type, String pythonName, String javaName, Object buffer, PythonBuiltinBaseNode indirectCallNode);
348355

349356
@Specialization
350-
Object create(VirtualFrame frame, PythonBuiltinClassType type, String pythonName, String javaName, Object value, PythonBuiltinBaseNode indirectCallNode,
351-
@Cached PythonObjectFactory factory,
357+
static Object doIt(VirtualFrame frame, Node inliningTarget, PythonBuiltinClassType type, String pythonName, String javaName, Object value, PythonBuiltinBaseNode indirectCallNode,
358+
@Cached(inline = false) PythonObjectFactory factory,
352359
@CachedLibrary(limit = "2") PythonBufferAcquireLibrary acquireLib,
353360
@CachedLibrary(limit = "2") PythonBufferAccessLibrary bufferLib,
354-
@Cached PRaiseNode raise) {
361+
@Cached PRaiseNode.Lazy raise) {
355362
Object buffer;
356363
if (value instanceof PNone) {
357364
buffer = null;
358365
} else if (acquireLib.hasBuffer(value)) {
359366
buffer = acquireLib.acquireReadonly(value, frame, indirectCallNode);
360367
} else {
361-
throw raise.raise(PythonBuiltinClassType.TypeError, ErrorMessages.A_BYTES_LIKE_OBJECT_IS_REQUIRED_NOT_P, value);
368+
throw raise.get(inliningTarget).raise(PythonBuiltinClassType.TypeError, ErrorMessages.A_BYTES_LIKE_OBJECT_IS_REQUIRED_NOT_P, value);
362369
}
363370
try {
364371
byte[] bytes = buffer == null ? null : bufferLib.getInternalOrCopiedByteArray(buffer);
@@ -367,7 +374,7 @@ Object create(VirtualFrame frame, PythonBuiltinClassType type, String pythonName
367374
try {
368375
digest = createDigest(javaName, bytes, bytesLen);
369376
} catch (NoSuchAlgorithmException e) {
370-
throw raise.raise(PythonBuiltinClassType.UnsupportedDigestmodError, e);
377+
throw raise.get(inliningTarget).raise(PythonBuiltinClassType.UnsupportedDigestmodError, e);
371378
}
372379
return factory.createDigestObject(type, pythonName, digest);
373380
} finally {
@@ -399,12 +406,13 @@ protected ArgumentClinicProvider getArgumentClinic() {
399406

400407
@Specialization
401408
Object newDigest(VirtualFrame frame, TruffleString name, Object buffer, @SuppressWarnings("unused") boolean usedForSecurity,
409+
@Bind("this") Node inliningTarget,
402410
@Cached CreateDigestNode createNode,
403411
@Cached CastToJavaStringNode castStr) {
404412
String pythonDigestName = getPythonName(castStr.execute(name));
405413
String javaDigestName = getJavaName(pythonDigestName);
406414
PythonBuiltinClassType digestType = getTypeFor(javaDigestName);
407-
return createNode.execute(frame, digestType, pythonDigestName, javaDigestName, buffer, this);
415+
return createNode.execute(frame, inliningTarget, digestType, pythonDigestName, javaDigestName, buffer, this);
408416
}
409417

410418
private static PythonBuiltinClassType getTypeFor(String digestName) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/hashlib/Md5ModuleBuiltins.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,13 @@
4949
import com.oracle.graal.python.nodes.ErrorMessages;
5050
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
5151
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
52+
import com.oracle.truffle.api.dsl.Bind;
5253
import com.oracle.truffle.api.dsl.Cached;
5354
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
5455
import com.oracle.truffle.api.dsl.NodeFactory;
5556
import com.oracle.truffle.api.dsl.Specialization;
5657
import com.oracle.truffle.api.frame.VirtualFrame;
58+
import com.oracle.truffle.api.nodes.Node;
5759

5860
@CoreFunctions(defineModule = "_md5")
5961
public class Md5ModuleBuiltins extends PythonBuiltins {
@@ -67,8 +69,9 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
6769
abstract static class Md5FunctionNode extends PythonBuiltinNode {
6870
@Specialization
6971
Object newDigest(VirtualFrame frame, Object buffer, @SuppressWarnings("unused") Object usedForSecurity,
72+
@Bind("this") Node inliningTarget,
7073
@Cached HashlibModuleBuiltins.CreateDigestNode createNode) {
71-
return createNode.execute(frame, PythonBuiltinClassType.MD5Type, "md5", "md5", buffer, this);
74+
return createNode.execute(frame, inliningTarget, PythonBuiltinClassType.MD5Type, "md5", "md5", buffer, this);
7275
}
7376
}
7477

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/hashlib/Sha1ModuleBuiltins.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,13 @@
4949
import com.oracle.graal.python.nodes.ErrorMessages;
5050
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
5151
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
52+
import com.oracle.truffle.api.dsl.Bind;
5253
import com.oracle.truffle.api.dsl.Cached;
5354
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
5455
import com.oracle.truffle.api.dsl.NodeFactory;
5556
import com.oracle.truffle.api.dsl.Specialization;
5657
import com.oracle.truffle.api.frame.VirtualFrame;
58+
import com.oracle.truffle.api.nodes.Node;
5759

5860
@CoreFunctions(defineModule = "_sha1")
5961
public class Sha1ModuleBuiltins extends PythonBuiltins {
@@ -67,8 +69,9 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
6769
abstract static class Sha1FunctionNode extends PythonBuiltinNode {
6870
@Specialization
6971
Object newDigest(VirtualFrame frame, Object buffer, @SuppressWarnings("unused") Object usedForSecurity,
72+
@Bind("this") Node inliningTarget,
7073
@Cached HashlibModuleBuiltins.CreateDigestNode createNode) {
71-
return createNode.execute(frame, PythonBuiltinClassType.SHA1Type, "sha1", "sha1", buffer, this);
74+
return createNode.execute(frame, inliningTarget, PythonBuiltinClassType.SHA1Type, "sha1", "sha1", buffer, this);
7275
}
7376
}
7477

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/hashlib/Sha256ModuleBuiltins.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,13 @@
4949
import com.oracle.graal.python.nodes.ErrorMessages;
5050
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
5151
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
52+
import com.oracle.truffle.api.dsl.Bind;
5253
import com.oracle.truffle.api.dsl.Cached;
5354
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
5455
import com.oracle.truffle.api.dsl.NodeFactory;
5556
import com.oracle.truffle.api.dsl.Specialization;
5657
import com.oracle.truffle.api.frame.VirtualFrame;
58+
import com.oracle.truffle.api.nodes.Node;
5759

5860
@CoreFunctions(defineModule = "_sha256")
5961
public class Sha256ModuleBuiltins extends PythonBuiltins {
@@ -67,8 +69,9 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
6769
abstract static class Sha224FunctionNode extends PythonBuiltinNode {
6870
@Specialization
6971
Object newDigest(VirtualFrame frame, Object buffer, @SuppressWarnings("unused") Object usedForSecurity,
72+
@Bind("this") Node inliningTarget,
7073
@Cached HashlibModuleBuiltins.CreateDigestNode createNode) {
71-
return createNode.execute(frame, PythonBuiltinClassType.SHA224Type, "sha224", "sha224", buffer, this);
74+
return createNode.execute(frame, inliningTarget, PythonBuiltinClassType.SHA224Type, "sha224", "sha224", buffer, this);
7275
}
7376
}
7477

@@ -77,8 +80,9 @@ Object newDigest(VirtualFrame frame, Object buffer, @SuppressWarnings("unused")
7780
abstract static class Sha256FunctionNode extends PythonBuiltinNode {
7881
@Specialization
7982
Object newDigest(VirtualFrame frame, Object buffer, @SuppressWarnings("unused") Object usedForSecurity,
83+
@Bind("this") Node inliningTarget,
8084
@Cached HashlibModuleBuiltins.CreateDigestNode createNode) {
81-
return createNode.execute(frame, PythonBuiltinClassType.SHA256Type, "sha256", "sha256", buffer, this);
85+
return createNode.execute(frame, inliningTarget, PythonBuiltinClassType.SHA256Type, "sha256", "sha256", buffer, this);
8286
}
8387
}
8488

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/hashlib/Sha3ModuleBuiltins.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,13 @@
5151
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
5252
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
5353
import com.oracle.truffle.api.CompilerDirectives;
54+
import com.oracle.truffle.api.dsl.Bind;
5455
import com.oracle.truffle.api.dsl.Cached;
5556
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
5657
import com.oracle.truffle.api.dsl.NodeFactory;
5758
import com.oracle.truffle.api.dsl.Specialization;
5859
import com.oracle.truffle.api.frame.VirtualFrame;
60+
import com.oracle.truffle.api.nodes.Node;
5961

6062
@CoreFunctions(defineModule = "_sha3")
6163
public class Sha3ModuleBuiltins extends PythonBuiltins {
@@ -80,6 +82,7 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
8082
abstract static class ShaNode extends PythonBuiltinNode {
8183
@Specialization
8284
Object newDigest(VirtualFrame frame, Object type, Object buffer, @SuppressWarnings("unused") Object usedForSecurity,
85+
@Bind("this") Node inliningTarget,
8386
@Cached HashlibModuleBuiltins.CreateDigestNode createNode) {
8487
PythonBuiltinClassType resultType = null;
8588
if (type instanceof PythonBuiltinClass builtinType) {
@@ -89,7 +92,7 @@ Object newDigest(VirtualFrame frame, Object type, Object buffer, @SuppressWarnin
8992
} else {
9093
throw raise(PythonBuiltinClassType.TypeError, ErrorMessages.WRONG_TYPE);
9194
}
92-
return createNode.execute(frame, resultType, pythonNameFromType(resultType), javaNameFromType(resultType), buffer, this);
95+
return createNode.execute(frame, inliningTarget, resultType, pythonNameFromType(resultType), javaNameFromType(resultType), buffer, this);
9396
}
9497

9598
private static String javaNameFromType(PythonBuiltinClassType type) {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/hashlib/Sha512ModuleBuiltins.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,13 @@
4949
import com.oracle.graal.python.nodes.ErrorMessages;
5050
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
5151
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
52+
import com.oracle.truffle.api.dsl.Bind;
5253
import com.oracle.truffle.api.dsl.Cached;
5354
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
5455
import com.oracle.truffle.api.dsl.NodeFactory;
5556
import com.oracle.truffle.api.dsl.Specialization;
5657
import com.oracle.truffle.api.frame.VirtualFrame;
58+
import com.oracle.truffle.api.nodes.Node;
5759

5860
@CoreFunctions(defineModule = "_sha512")
5961
public class Sha512ModuleBuiltins extends PythonBuiltins {
@@ -67,8 +69,9 @@ protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFa
6769
abstract static class Sha384FunctionNode extends PythonBuiltinNode {
6870
@Specialization
6971
Object newDigest(VirtualFrame frame, Object buffer, @SuppressWarnings("unused") Object usedForSecurity,
72+
@Bind("this") Node inliningTarget,
7073
@Cached HashlibModuleBuiltins.CreateDigestNode createNode) {
71-
return createNode.execute(frame, PythonBuiltinClassType.SHA384Type, "sha384", "sha384", buffer, this);
74+
return createNode.execute(frame, inliningTarget, PythonBuiltinClassType.SHA384Type, "sha384", "sha384", buffer, this);
7275
}
7376
}
7477

@@ -77,8 +80,9 @@ Object newDigest(VirtualFrame frame, Object buffer, @SuppressWarnings("unused")
7780
abstract static class Sha512FunctionNode extends PythonBuiltinNode {
7881
@Specialization
7982
Object newDigest(VirtualFrame frame, Object buffer, @SuppressWarnings("unused") Object usedForSecurity,
83+
@Bind("this") Node inliningTarget,
8084
@Cached HashlibModuleBuiltins.CreateDigestNode createNode) {
81-
return createNode.execute(frame, PythonBuiltinClassType.SHA512Type, "sha512", "sha512", buffer, this);
85+
return createNode.execute(frame, inliningTarget, PythonBuiltinClassType.SHA512Type, "sha512", "sha512", buffer, this);
8286
}
8387
}
8488

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/hashlib/package-info.java

Lines changed: 0 additions & 44 deletions
This file was deleted.

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/PRaiseNode.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2019, 2023, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -56,6 +56,8 @@
5656
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
5757
import com.oracle.truffle.api.dsl.Cached;
5858
import com.oracle.truffle.api.dsl.Cached.Shared;
59+
import com.oracle.truffle.api.dsl.GenerateCached;
60+
import com.oracle.truffle.api.dsl.GenerateInline;
5961
import com.oracle.truffle.api.dsl.GenerateUncached;
6062
import com.oracle.truffle.api.dsl.ImportStatic;
6163
import com.oracle.truffle.api.dsl.NeverDefault;
@@ -242,4 +244,20 @@ private static void ensureNoJavaStrings(Object[] arguments, TruffleString.FromJa
242244
}
243245
}
244246
}
247+
248+
@GenerateInline
249+
@GenerateUncached(false)
250+
@GenerateCached(false)
251+
public abstract static class Lazy extends Node {
252+
public final PRaiseNode get(Node inliningTarget) {
253+
return execute(inliningTarget);
254+
}
255+
256+
abstract PRaiseNode execute(Node inliningTarget);
257+
258+
@Specialization
259+
static PRaiseNode doIt(@Cached(inline = false) PRaiseNode node) {
260+
return node;
261+
}
262+
}
245263
}

0 commit comments

Comments
 (0)