diff --git a/system/lib/compiler-rt/emscripten_setjmp.c b/system/lib/compiler-rt/emscripten_setjmp.c index b43df61b9154e..7c600d64b065f 100644 --- a/system/lib/compiler-rt/emscripten_setjmp.c +++ b/system/lib/compiler-rt/emscripten_setjmp.c @@ -11,58 +11,8 @@ #include #include -// 0 - Nothing thrown -// 1 - Exception thrown -// Other values - jmpbuf pointer in the case that longjmp was thrown -static uintptr_t setjmpId = 0; - -typedef struct TableEntry { - uintptr_t id; - uint32_t label; -} TableEntry; - -extern void setTempRet0(uint32_t value); extern void setThrew(uintptr_t threw, int value); -TableEntry* saveSetjmp(uintptr_t* env, uint32_t label, TableEntry* table, uint32_t size) { - // Not particularly fast: slow table lookup of setjmpId to label. But setjmp - // prevents relooping anyhow, so slowness is to be expected. And typical case - // is 1 setjmp per invocation, or less. - uint32_t i = 0; - setjmpId++; - *env = setjmpId; - while (i < size) { - if (table[i].id == 0) { - table[i].id = setjmpId; - table[i].label = label; - // prepare next slot - table[i + 1].id = 0; - setTempRet0(size); - return table; - } - i++; - } - // grow the table - size *= 2; - table = (TableEntry*)realloc(table, sizeof(TableEntry) * (size +1)); - table = saveSetjmp(env, label, table, size); - setTempRet0(size); // FIXME: unneeded? - return table; -} - -uint32_t testSetjmp(uintptr_t id, TableEntry* table, uint32_t size) { - uint32_t i = 0; - while (i < size) { - uintptr_t curr = table[i].id; - if (curr == 0) break; - if (curr == id) { - return table[i].label; - } - i++; - } - return 0; -} - #if !defined(__USING_WASM_SJLJ__) #include "emscripten_internal.h"