================ @@ -129,27 +129,21 @@ /// /// If there are calls to setjmp() /// -/// 2) In the function entry that calls setjmp, initialize setjmpTable and -/// sejmpTableSize as follows: -/// setjmpTableSize = 4; -/// setjmpTable = (int *) malloc(40); -/// setjmpTable[0] = 0; -/// setjmpTable and setjmpTableSize are used to call saveSetjmp() function in -/// Emscripten compiler-rt. +/// 2) In the function entry that calls setjmp, initialize +/// functionInvocationId as follows: +/// +/// functionInvocationId = alloca(4) +/// +/// Note: the alloca size is not important as this pointer is +/// merely used for pointer comparisions. /// /// 3) Lower /// setjmp(env) /// into -/// setjmpTable = saveSetjmp(env, label, setjmpTable, setjmpTableSize); -/// setjmpTableSize = getTempRet0(); -/// For each dynamic setjmp call, setjmpTable stores its ID (a number which -/// is incrementally assigned from 0) and its label (a unique number that -/// represents each callsite of setjmp). When we need more entries in -/// setjmpTable, it is reallocated in saveSetjmp() in Emscripten's -/// compiler-rt and it will return the new table address, and assign the new -/// table size in setTempRet0(). saveSetjmp also stores the setjmp's ID into -/// the buffer 'env'. A BB with setjmp is split into two after setjmp call in -/// order to make the post-setjmp BB the possible destination of longjmp BB. +/// __wasm_setjmp(env, label, functionInvocationId) +/// +/// A BB with setjmp is split into two after setjmp call in order to +/// make the post-setjmp BB the possible destination of longjmp BB. ---------------- aheejin wrote:
I think it's helpful to mention what `__wasm_setjmp` does: It saves `functionInvocationId` and `label` into `env`. https://github.com/llvm/llvm-project/pull/84137 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits