|
57 | 57 | import com.oracle.graal.python.nodes.ErrorMessages;
|
58 | 58 | import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
|
59 | 59 | 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; |
61 | 61 | import com.oracle.graal.python.nodes.function.builtins.PythonTernaryBuiltinNode;
|
62 | 62 | import com.oracle.graal.python.nodes.function.builtins.PythonTernaryClinicBuiltinNode;
|
63 | 63 | import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
|
64 | 64 | 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; |
67 | 65 | import com.oracle.graal.python.runtime.PythonContext.SharedMultiprocessingData;
|
68 | 66 | import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
|
69 | 67 | import com.oracle.truffle.api.dsl.Cached;
|
@@ -201,19 +199,17 @@ Object doEnter(VirtualFrame frame, AbstractPythonLock self, Object blocking, Obj
|
201 | 199 | }
|
202 | 200 |
|
203 | 201 | @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) |
204 | 204 | @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 | + } |
216 | 210 |
|
| 211 | + @Specialization |
| 212 | + Object doEnter(@SuppressWarnings("unused") Object handle, int kind, @SuppressWarnings("unused") Object maxvalue, String name) { |
217 | 213 | SharedMultiprocessingData multiprocessing = getContext().getSharedMultiprocessingData();
|
218 | 214 | Semaphore semaphore = multiprocessing.getNamedSemaphore(name);
|
219 | 215 | if (semaphore == null) {
|
|
0 commit comments