[WebAssembly] Extract longjmp handling in EmSjLj to a function (NFC)
authorHeejin Ahn <aheejin@gmail.com>
Wed, 25 Aug 2021 03:40:21 +0000 (20:40 -0700)
committerHeejin Ahn <aheejin@gmail.com>
Wed, 25 Aug 2021 22:45:38 +0000 (15:45 -0700)
commit2f88a30ca660ca60b460a08d33eef3ab9517ee28
tree24bbca276a8a5814528578dec44c0d2abaf23f6f
parent18da6db838c5ba32c326e9d3cd8e8bd35408e809
[WebAssembly] Extract longjmp handling in EmSjLj to a function (NFC)

Emscripten SjLj and (soon-to-be-added) Wasm SjLj transformation share
many steps:
1. Initialize `setjmpTable` and `setjmpTableSize` in the entry BB
2. Handle `setjmp` callsites
3. Handle `longjmp` callsites
4. Cleanup and update SSA

1, 3, and 4 are identical for Emscripten SjLj and Wasm SjLj. Only the
step 2 is different. This CL extracts the current Emscripten SjLj's
longjmp callsites handling into a function. The reason to make this a
separate CL is, without this, the diff tool cannot compare things well
in the presence of moved code and added code in the followup Wasm SjLj
CL, and it ends up mixing them together, making the diff unreadable.

Also fixes some typos and variable names. So far we've been calling the
buffer argument to `setjmp` and `longjmp` `jmpbuf`, but the name used in
the man page for those functions is `env`, so updated them to be
consistent.

Reviewed By: tlively

Differential Revision: https://reviews.llvm.org/D108728
llvm/lib/CodeGen/WasmEHPrepare.cpp
llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp