| OLD | NEW |
| 1 ============================ | 1 ============================ |
| 2 PNaCl C/C++ Language Support | 2 PNaCl C/C++ Language Support |
| 3 ============================ | 3 ============================ |
| 4 | 4 |
| 5 .. contents:: | 5 .. contents:: |
| 6 :local: | 6 :local: |
| 7 :backlinks: none | 7 :backlinks: none |
| 8 :depth: 3 | 8 :depth: 3 |
| 9 | 9 |
| 10 Source language support | 10 Source language support |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 ====================== | 176 ====================== |
| 177 | 177 |
| 178 PNaCl currently supports C++ exception handling through ``setjmp()`` and | 178 PNaCl currently supports C++ exception handling through ``setjmp()`` and |
| 179 ``longjmp()``, which can be enabled with the ``--pnacl-exceptions=sjlj`` linker | 179 ``longjmp()``, which can be enabled with the ``--pnacl-exceptions=sjlj`` linker |
| 180 flag (set with ``LDFLAGS`` when using Make). Exceptions are disabled by default | 180 flag (set with ``LDFLAGS`` when using Make). Exceptions are disabled by default |
| 181 so that faster and smaller code is generated, and ``throw`` statements are | 181 so that faster and smaller code is generated, and ``throw`` statements are |
| 182 replaced with calls to ``abort()``. The usual ``-fno-exceptions`` flag is also | 182 replaced with calls to ``abort()``. The usual ``-fno-exceptions`` flag is also |
| 183 supported, though the default is ``-fexceptions``. PNaCl will support full | 183 supported, though the default is ``-fexceptions``. PNaCl will support full |
| 184 zero-cost exception handling in the future. | 184 zero-cost exception handling in the future. |
| 185 | 185 |
| 186 .. note:: When using naclports_ or other prebuilt static libraries, you don't | 186 .. note:: When using webports_ or other prebuilt static libraries, you don't |
| 187 need to recompile because the exception handling support is | 187 need to recompile because the exception handling support is |
| 188 implemented at link time (when all the static libraries are put | 188 implemented at link time (when all the static libraries are put |
| 189 together with your application). | 189 together with your application). |
| 190 | 190 |
| 191 .. _naclports: https://code.google.com/p/naclports | 191 .. _webports: https://chromium.googlesource.com/webports |
| 192 | 192 |
| 193 NaCl supports full zero-cost C++ exception handling. | 193 NaCl supports full zero-cost C++ exception handling. |
| 194 | 194 |
| 195 Inline Assembly | 195 Inline Assembly |
| 196 =============== | 196 =============== |
| 197 | 197 |
| 198 Inline assembly isn't supported by PNaCl because it isn't portable. The | 198 Inline assembly isn't supported by PNaCl because it isn't portable. The |
| 199 one current exception is the common compiler barrier idiom | 199 one current exception is the common compiler barrier idiom |
| 200 ``asm("":::"memory")``, which gets transformed to a sequentially | 200 ``asm("":::"memory")``, which gets transformed to a sequentially |
| 201 consistent memory barrier (equivalent to ``__sync_synchronize()``). In | 201 consistent memory barrier (equivalent to ``__sync_synchronize()``). In |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 A similar feature is **thread suspension**: The ability to | 476 A similar feature is **thread suspension**: The ability to |
| 477 asynchronously suspend and resume a thread and inspect or modify its | 477 asynchronously suspend and resume a thread and inspect or modify its |
| 478 execution state (such as register state). | 478 execution state (such as register state). |
| 479 | 479 |
| 480 Neither PNaCl nor NaCl currently support asynchronous interruption | 480 Neither PNaCl nor NaCl currently support asynchronous interruption |
| 481 or suspension of threads. | 481 or suspension of threads. |
| 482 | 482 |
| 483 If PNaCl were to support either of these, the interaction of | 483 If PNaCl were to support either of these, the interaction of |
| 484 ``volatile`` and atomics with same-thread signal handling would need | 484 ``volatile`` and atomics with same-thread signal handling would need |
| 485 to be carefully detailed. | 485 to be carefully detailed. |
| OLD | NEW |