aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorMike Pall <mike>2016-05-07 12:32:15 +0200
committerMike Pall <mike>2016-05-07 12:32:15 +0200
commit35b09e692ead67181755795352f1df12547fd4fa (patch)
treed120dd561f649f955ddbbe844fe00a97f7b9e625 /doc
parent6a9973203c55daa4c1fcd611718bc5df09e4e5b5 (diff)
downloadluajit-35b09e692ead67181755795352f1df12547fd4fa.tar.gz
luajit-35b09e692ead67181755795352f1df12547fd4fa.tar.bz2
luajit-35b09e692ead67181755795352f1df12547fd4fa.zip
Windows/x86: Add full exception interoperability.
Contributed by Peter Cawley.
Diffstat (limited to 'doc')
-rw-r--r--doc/extensions.html25
1 files changed, 11 insertions, 14 deletions
diff --git a/doc/extensions.html b/doc/extensions.html
index 7f712a62..368b527c 100644
--- a/doc/extensions.html
+++ b/doc/extensions.html
@@ -365,25 +365,30 @@ the toolchain used to compile LuaJIT:
365</tr> 365</tr>
366<tr class="odd separate"> 366<tr class="odd separate">
367<td class="excplatform">POSIX/x64, DWARF2 unwinding</td> 367<td class="excplatform">POSIX/x64, DWARF2 unwinding</td>
368<td class="exccompiler">GCC 4.3+</td> 368<td class="exccompiler">GCC 4.3+, Clang</td>
369<td class="excinterop"><b style="color: #00a000;">Full</b></td> 369<td class="excinterop"><b style="color: #00a000;">Full</b></td>
370</tr> 370</tr>
371<tr class="even"> 371<tr class="even">
372<td class="excplatform">ARM <tt>-DLUAJIT_UNWIND_EXTERNAL</tt></td>
373<td class="exccompiler">GCC, Clang</td>
374<td class="excinterop"><b style="color: #00a000;">Full</b></td>
375</tr>
376<tr class="odd">
372<td class="excplatform">Other platforms, DWARF2 unwinding</td> 377<td class="excplatform">Other platforms, DWARF2 unwinding</td>
373<td class="exccompiler">GCC</td> 378<td class="exccompiler">GCC, Clang</td>
374<td class="excinterop"><b style="color: #c06000;">Limited</b></td> 379<td class="excinterop"><b style="color: #c06000;">Limited</b></td>
375</tr> 380</tr>
376<tr class="odd"> 381<tr class="even">
377<td class="excplatform">Windows/x64</td> 382<td class="excplatform">Windows/x64</td>
378<td class="exccompiler">MSVC or WinSDK</td> 383<td class="exccompiler">MSVC or WinSDK</td>
379<td class="excinterop"><b style="color: #00a000;">Full</b></td> 384<td class="excinterop"><b style="color: #00a000;">Full</b></td>
380</tr> 385</tr>
381<tr class="even"> 386<tr class="odd">
382<td class="excplatform">Windows/x86</td> 387<td class="excplatform">Windows/x86</td>
383<td class="exccompiler">Any</td> 388<td class="exccompiler">Any</td>
384<td class="excinterop"><b style="color: #a00000;">No</b></td> 389<td class="excinterop"><b style="color: #00a000;">Full</b></td>
385</tr> 390</tr>
386<tr class="odd"> 391<tr class="even">
387<td class="excplatform">Other platforms</td> 392<td class="excplatform">Other platforms</td>
388<td class="exccompiler">Other compilers</td> 393<td class="exccompiler">Other compilers</td>
389<td class="excinterop"><b style="color: #a00000;">No</b></td> 394<td class="excinterop"><b style="color: #a00000;">No</b></td>
@@ -432,14 +437,6 @@ C++ destructors.</li>
432<li>Lua errors <b>cannot</b> be caught on the C++ side.</li> 437<li>Lua errors <b>cannot</b> be caught on the C++ side.</li>
433<li>Throwing Lua errors across C++ frames will <b>not</b> call 438<li>Throwing Lua errors across C++ frames will <b>not</b> call
434C++ destructors.</li> 439C++ destructors.</li>
435<li>Additionally, on Windows/x86 with SEH-based C++&nbsp;exceptions:
436it's <b>not</b> safe to throw a Lua error across any frames containing
437a C++ function with any try/catch construct or using variables with
438(implicit) destructors. This also applies to any functions which may be
439inlined in such a function. It doesn't matter whether <tt>lua_error()</tt>
440is called inside or outside of a try/catch or whether any object actually
441needs to be destroyed: the SEH chain is corrupted and this will eventually
442lead to the termination of the process.</li>
443</ul> 440</ul>
444<br class="flush"> 441<br class="flush">
445</div> 442</div>