@@ -166,65 +166,80 @@ private static TruffleString getMessage(Exception exception) {
166166 return toTruffleStringUncached (exception .getMessage ());
167167 }
168168
169- private final PException raise (Frame frame , PythonBuiltinClassType err , TruffleString message , Object ... formatArgs ) {
169+ private PException raise (Frame frame , PythonBuiltinClassType err , TruffleString message , Object ... formatArgs ) {
170170 return executeWithFmtMessageAndArgs (frame , err , message , formatArgs , PythonUtils .EMPTY_OBJECT_ARRAY );
171171 }
172172
173+ private static Object [] createOsErrorArgs (int errno , TruffleString message ) {
174+ return new Object []{errno , message };
175+ }
176+
177+ private static Object [] createOsErrorArgs (int errno , TruffleString message , Object filename1 ) {
178+ return createOsErrorArgs (errno , message , filename1 , null );
179+ }
180+
181+ private static Object [] createOsErrorArgs (OSErrorEnum osErrorEnum , TruffleString filename1 ) {
182+ return createOsErrorArgs (osErrorEnum .getNumber (), osErrorEnum .getMessage (), filename1 , null );
183+ }
184+
173185 private static Object [] createOsErrorArgs (int errno , TruffleString message , Object filename1 , Object filename2 ) {
174- return new Object []{errno , message , filename1 , null , filename2 };
186+ if (filename1 != null ) {
187+ if (filename2 != null ) {
188+ return new Object []{errno , message , filename1 , 0 , filename2 };
189+ }
190+ return new Object []{errno , message , filename1 };
191+ }
192+ assert filename2 == null ;
193+ return new Object []{errno , message };
175194 }
176195
177- private static Object [] createOsErrorArgs (OSErrorEnum osErrorEnum , TruffleString filename1 , TruffleString filename2 ) {
178- return new Object []{osErrorEnum .getNumber (), osErrorEnum .getMessage (), filename1 , null , filename2 };
196+ private static Object [] createOsErrorArgs (OSErrorEnum osErrorEnum ) {
197+ return new Object []{osErrorEnum .getNumber (), osErrorEnum .getMessage ()};
179198 }
180199
181- private static Object [] createOsErrorArgs (Exception exception , TruffleString filename1 , TruffleString filename2 , TruffleString .EqualNode eqNode ) {
200+ private static Object [] createOsErrorArgs (Exception exception , TruffleString .EqualNode eqNode ) {
182201 OSErrorEnum .ErrorAndMessagePair errorAndMessage = OSErrorEnum .fromException (exception , eqNode );
183- return new Object []{errorAndMessage .oserror .getNumber (), errorAndMessage .message , filename1 , null , filename2 };
202+ return new Object []{errorAndMessage .oserror .getNumber (), errorAndMessage .message };
184203 }
185204
186205 private PException raiseOSErrorInternal (Frame frame , Object [] arguments ) {
187206 return executeWithArgsOnly (frame , PythonBuiltinClassType .OSError , arguments );
188207 }
189208
190209 public final PException raiseOSError (Frame frame , OSErrorEnum osErrorEnum ) {
191- return raiseOSErrorInternal (frame , createOsErrorArgs (osErrorEnum , null , null ));
210+ return raiseOSErrorInternal (frame , createOsErrorArgs (osErrorEnum ));
192211 }
193212
194213 public final PException raiseOSError (Frame frame , OSErrorEnum osErrorEnum , TruffleString filename ) {
195- return raiseOSErrorInternal (frame , createOsErrorArgs (osErrorEnum , filename , null ));
214+ return raiseOSErrorInternal (frame , createOsErrorArgs (osErrorEnum , filename ));
196215 }
197216
198217 public final PException raiseOSError (Frame frame , Exception exception , TruffleString .EqualNode eqNode ) {
199- return raiseOSErrorInternal (frame , createOsErrorArgs (exception , null , null , eqNode ));
218+ return raiseOSErrorInternal (frame , createOsErrorArgs (exception , eqNode ));
200219 }
201220
202221 public final PException raiseOSError (Frame frame , OSErrorEnum osErrorEnum , Exception exception ) {
203222 return raiseOSError (frame , osErrorEnum , getMessage (exception ));
204223 }
205224
206225 public final PException raiseOSError (Frame frame , int errno , TruffleString message , Object filename ) {
207- return raiseOSErrorInternal (frame , createOsErrorArgs (errno , message , filename , null ));
208- }
209-
210- public final PException raiseOSError (Frame frame , int errno , TruffleString message , Object filename , Object filename2 ) {
211- return raiseOSErrorInternal (frame , createOsErrorArgs (errno , message , filename , filename2 ));
226+ return raiseOSErrorInternal (frame , createOsErrorArgs (errno , message , filename ));
212227 }
213228
214- public final PException raiseOSError (VirtualFrame frame , int code , TruffleString message ) {
215- return raiseOSError (frame , code , message , null , null );
229+ public final PException raiseOSError (VirtualFrame frame , int errno , TruffleString message ) {
230+ return raiseOSErrorInternal (frame , createOsErrorArgs ( errno , message ) );
216231 }
217232
218233 public final PException raiseOSErrorFromPosixException (VirtualFrame frame , PosixException e ) {
219- return raiseOSError (frame , e .getErrorCode (), e .getMessageAsTruffleString (), null , null );
234+ return raiseOSErrorInternal (frame , createOsErrorArgs ( e .getErrorCode (), e .getMessageAsTruffleString ()) );
220235 }
221236
222237 public final PException raiseOSErrorFromPosixException (VirtualFrame frame , PosixException e , Object filename1 ) {
223- return raiseOSError (frame , e .getErrorCode (), e .getMessageAsTruffleString (), filename1 , null );
238+ return raiseOSErrorInternal (frame , createOsErrorArgs ( e .getErrorCode (), e .getMessageAsTruffleString (), filename1 ) );
224239 }
225240
226241 public final PException raiseOSErrorFromPosixException (VirtualFrame frame , PosixException e , Object filename1 , Object filename2 ) {
227- return raiseOSError (frame , e .getErrorCode (), e .getMessageAsTruffleString (), filename1 , filename2 );
242+ return raiseOSErrorInternal (frame , createOsErrorArgs ( e .getErrorCode (), e .getMessageAsTruffleString (), filename1 , filename2 ) );
228243 }
229244
230245 public final PException raiseOSErrorUnsupported (VirtualFrame frame , UnsupportedPosixFeatureException e ) {
@@ -240,7 +255,7 @@ public final PException raiseSSLError(Frame frame, TruffleString message) {
240255 return raiseSSLError (frame , message , PythonUtils .EMPTY_OBJECT_ARRAY );
241256 }
242257
243- private final PException raiseSSLError (Frame frame , TruffleString message , Object ... formatArgs ) {
258+ private PException raiseSSLError (Frame frame , TruffleString message , Object ... formatArgs ) {
244259 return raise (frame , PythonBuiltinClassType .SSLError , message , formatArgs );
245260 }
246261
@@ -274,7 +289,7 @@ public static PException raiseUncachedSSLError(SSLErrorCode errorCode, TruffleSt
274289 return getUncached ().raiseSSLError (null , errorCode , format , formatArgs );
275290 }
276291
277- private final PException raiseOSErrorSubType (Frame frame , PythonBuiltinClassType osErrorSubtype , TruffleString format , Object ... fmtArgs ) {
292+ private PException raiseOSErrorSubType (Frame frame , PythonBuiltinClassType osErrorSubtype , TruffleString format , Object ... fmtArgs ) {
278293 TruffleString message = getFormattedMessage (format , fmtArgs );
279294 final OSErrorEnum osErrorEnum = errorType2errno (osErrorSubtype );
280295 assert osErrorEnum != null : "could not determine an errno for this error, either not an OSError subtype or multiple errno codes are available" ;
@@ -293,14 +308,6 @@ public final PException raiseUnicodeEncodeError(Frame frame, String encoding, Tr
293308 return executeWithArgsOnly (frame , PythonBuiltinClassType .UnicodeEncodeError , new Object []{encoding , object , start , end , reason });
294309 }
295310
296- private final PException raiseUnicodeDecodeError (Frame frame , String encoding , Object object , int start , int end , String reason ) {
297- return executeWithArgsOnly (frame , PythonBuiltinClassType .UnicodeDecodeError , new Object []{encoding , object , start , end , reason });
298- }
299-
300- public static PException raiseUncachedUnicodeDecodeError (String encoding , Object object , int start , int end , String reason ) {
301- return getUncached ().raiseUnicodeDecodeError (null , encoding , object , start , end , reason );
302- }
303-
304311 @ NeverDefault
305312 public static PConstructAndRaiseNode create () {
306313 return PConstructAndRaiseNodeGen .create ();
0 commit comments