Skip to content

Commit 66803df

Browse files
committed
fix unexpected argument exception in semlock._rebuild
1 parent 6b4f869 commit 66803df

File tree

1 file changed

+10
-14
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/thread

1 file changed

+10
-14
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/thread/SemLockBuiltins.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,11 @@
5757
import com.oracle.graal.python.nodes.ErrorMessages;
5858
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
5959
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
60-
import com.oracle.graal.python.nodes.function.builtins.PythonQuaternaryBuiltinNode;
60+
import com.oracle.graal.python.nodes.function.builtins.PythonClinicBuiltinNode;
6161
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryBuiltinNode;
6262
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryClinicBuiltinNode;
6363
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
6464
import com.oracle.graal.python.nodes.function.builtins.clinic.ArgumentClinicProvider;
65-
import com.oracle.graal.python.nodes.util.CannotCastException;
66-
import com.oracle.graal.python.nodes.util.CastToJavaStringNode;
6765
import com.oracle.graal.python.runtime.PythonContext.SharedMultiprocessingData;
6866
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
6967
import com.oracle.truffle.api.dsl.Cached;
@@ -201,19 +199,17 @@ Object doEnter(VirtualFrame frame, AbstractPythonLock self, Object blocking, Obj
201199
}
202200

203201
@Builtin(name = "_rebuild", minNumOfPositionalArgs = 4, parameterNames = {"handle", "kind", "maxvalue", "name"})
202+
@ArgumentClinic(name = "kind", conversion = ArgumentClinic.ClinicConversion.Int)
203+
@ArgumentClinic(name = "name", conversion = ArgumentClinic.ClinicConversion.String)
204204
@GenerateNodeFactory
205-
abstract static class RebuildNode extends PythonQuaternaryBuiltinNode {
206-
@Specialization
207-
Object doEnter(@SuppressWarnings("unused") Object handle, int kind, @SuppressWarnings("unused") Object maxvalue, Object nameObj,
208-
@Cached CastToJavaStringNode castNameNode) {
209-
210-
String name;
211-
try {
212-
name = castNameNode.execute(nameObj);
213-
} catch (CannotCastException e) {
214-
throw raise(PythonBuiltinClassType.TypeError, ErrorMessages.ARG_D_MUST_BE_S_NOT_P, "_rebuild", 4, "str", nameObj);
215-
}
205+
abstract static class RebuildNode extends PythonClinicBuiltinNode {
206+
@Override
207+
protected ArgumentClinicProvider getArgumentClinic() {
208+
return SemLockBuiltinsClinicProviders.RebuildNodeClinicProviderGen.INSTANCE;
209+
}
216210

211+
@Specialization
212+
Object doEnter(@SuppressWarnings("unused") Object handle, int kind, @SuppressWarnings("unused") Object maxvalue, String name) {
217213
SharedMultiprocessingData multiprocessing = getContext().getSharedMultiprocessingData();
218214
Semaphore semaphore = multiprocessing.getNamedSemaphore(name);
219215
if (semaphore == null) {

0 commit comments

Comments
 (0)