|
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