nlr: Add implementation using setjmp/longjmp.
Having an optimized asm implementation is good, but if we want portability, that's it.
This commit is contained in:
16
py/nlrsetjmp.c
Normal file
16
py/nlrsetjmp.c
Normal file
@@ -0,0 +1,16 @@
|
||||
#include <setjmp.h>
|
||||
#include <stdio.h>
|
||||
#include "nlr.h"
|
||||
|
||||
#if MICROPY_NLR_SETJMP
|
||||
|
||||
nlr_buf_t *nlr_setjmp_top;
|
||||
|
||||
void nlr_setjmp_jump(void *val) {
|
||||
nlr_buf_t *buf = nlr_setjmp_top;
|
||||
nlr_setjmp_top = buf->prev;
|
||||
buf->ret_val = val;
|
||||
longjmp(buf->jmpbuf, 1);
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user