Skip to content

Commit 3a0a771

Browse files
committed
py: Add mp_raise_OSError(errno) helper function.
This is an often used code pattern, and its use reduces code size of the core by about 100 bytes.
1 parent 0363e1d commit 3a0a771

File tree

5 files changed

+16
-11
lines changed

5 files changed

+16
-11
lines changed

py/modio.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ STATIC mp_obj_t bufwriter_flush(mp_obj_t self_in) {
102102
assert(out_sz == self->len);
103103
self->len = 0;
104104
if (err != 0) {
105-
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(err)));
105+
mp_raise_OSError(err);
106106
}
107107
}
108108

py/modthread.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ STATIC mp_obj_t thread_lock_acquire(size_t n_args, const mp_obj_t *args) {
9393
self->locked = true;
9494
return mp_const_true;
9595
} else {
96-
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(-ret)));
96+
mp_raise_OSError(-ret);
9797
}
9898
#endif
9999
}

py/runtime.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1405,6 +1405,10 @@ NORETURN void mp_raise_TypeError(const char *msg) {
14051405
mp_raise_msg(&mp_type_TypeError, msg);
14061406
}
14071407

1408+
NORETURN void mp_raise_OSError(int errno_) {
1409+
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(errno_)));
1410+
}
1411+
14081412
NORETURN void mp_not_implemented(const char *msg) {
14091413
mp_raise_msg(&mp_type_NotImplementedError, msg);
14101414
}

py/runtime.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ NORETURN void mp_raise_msg(const mp_obj_type_t *exc_type, const char *msg);
137137
//NORETURN void nlr_raise_msg_varg(const mp_obj_type_t *exc_type, const char *fmt, ...);
138138
NORETURN void mp_raise_ValueError(const char *msg);
139139
NORETURN void mp_raise_TypeError(const char *msg);
140+
NORETURN void mp_raise_OSError(int errno_);
140141
NORETURN void mp_not_implemented(const char *msg); // Raise NotImplementedError with given message
141142
NORETURN void mp_exc_recursion_depth(void);
142143

py/stream.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ STATIC mp_obj_t stream_read_generic(size_t n_args, const mp_obj_t *args, byte fl
159159
}
160160
break;
161161
}
162-
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(error)));
162+
mp_raise_OSError(error);
163163
}
164164

165165
if (out_sz < more_bytes) {
@@ -227,7 +227,7 @@ STATIC mp_obj_t stream_read_generic(size_t n_args, const mp_obj_t *args, byte fl
227227
// this as EOF.
228228
return mp_const_none;
229229
}
230-
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(error)));
230+
mp_raise_OSError(error);
231231
} else {
232232
vstr.len = out_sz;
233233
return mp_obj_new_str_from_vstr(STREAM_CONTENT_TYPE(stream_p), &vstr);
@@ -256,7 +256,7 @@ mp_obj_t mp_stream_write(mp_obj_t self_in, const void *buf, size_t len, byte fla
256256
// no single byte could be readily written to it."
257257
return mp_const_none;
258258
}
259-
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(error)));
259+
mp_raise_OSError(error);
260260
} else {
261261
return MP_OBJ_NEW_SMALL_INT(out_sz);
262262
}
@@ -315,7 +315,7 @@ STATIC mp_obj_t stream_readinto(size_t n_args, const mp_obj_t *args) {
315315
if (mp_is_nonblocking_error(error)) {
316316
return mp_const_none;
317317
}
318-
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(error)));
318+
mp_raise_OSError(error);
319319
} else {
320320
return MP_OBJ_NEW_SMALL_INT(out_sz);
321321
}
@@ -343,7 +343,7 @@ STATIC mp_obj_t stream_readall(mp_obj_t self_in) {
343343
}
344344
break;
345345
}
346-
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(error)));
346+
mp_raise_OSError(error);
347347
}
348348
if (out_sz == 0) {
349349
break;
@@ -402,7 +402,7 @@ STATIC mp_obj_t stream_unbuffered_readline(size_t n_args, const mp_obj_t *args)
402402
goto done;
403403
}
404404
}
405-
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(error)));
405+
mp_raise_OSError(error);
406406
}
407407
if (out_sz == 0) {
408408
done:
@@ -457,7 +457,7 @@ STATIC mp_obj_t stream_seek(size_t n_args, const mp_obj_t *args) {
457457
int error;
458458
mp_uint_t res = stream_p->ioctl(args[0], MP_STREAM_SEEK, (mp_uint_t)(uintptr_t)&seek_s, &error);
459459
if (res == MP_STREAM_ERROR) {
460-
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(error)));
460+
mp_raise_OSError(error);
461461
}
462462

463463
// TODO: Could be uint64
@@ -478,7 +478,7 @@ STATIC mp_obj_t stream_flush(mp_obj_t self) {
478478
int error;
479479
mp_uint_t res = stream_p->ioctl(self, MP_STREAM_FLUSH, 0, &error);
480480
if (res == MP_STREAM_ERROR) {
481-
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(error)));
481+
mp_raise_OSError(error);
482482
}
483483
return mp_const_none;
484484
}
@@ -500,7 +500,7 @@ STATIC mp_obj_t stream_ioctl(size_t n_args, const mp_obj_t *args) {
500500
int error;
501501
mp_uint_t res = stream_p->ioctl(args[0], mp_obj_get_int(args[1]), val, &error);
502502
if (res == MP_STREAM_ERROR) {
503-
nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(error)));
503+
mp_raise_OSError(error);
504504
}
505505

506506
return mp_obj_new_int(res);

0 commit comments

Comments
 (0)