diff options
| author | Dan Gohman <sunfish@mozilla.com> | 2015-06-15 16:52:50 -0700 |
|---|---|---|
| committer | Dan Gohman <sunfish@mozilla.com> | 2015-06-15 16:52:50 -0700 |
| commit | e2c00aaffa5b63159414a27f99ce3a6d0330c7a2 (patch) | |
| tree | a2e4eb22d18375214b18ee7c94468465f5ed5f47 | |
| parent | 542508499c4815089556b8550fb6f7b0764c3b45 (diff) | |
| parent | f7f46e91912716889d0cb750bac27d6911cfcb79 (diff) | |
| download | nanowasm-design-e2c00aaffa5b63159414a27f99ce3a6d0330c7a2.tar.gz | |
Merge pull request #174 from WebAssembly/exhaustion
Nondeterminism: examples of exhaustion
| -rw-r--r-- | Nondeterminism.md | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/Nondeterminism.md b/Nondeterminism.md index f7c6a13..77fc899 100644 --- a/Nondeterminism.md +++ b/Nondeterminism.md @@ -25,22 +25,24 @@ other practical way to achieve [portable](Portability.md) native performance. The following is a list of the places where the WebAssembly specification currently admits nondeterminism: - - [When threads are added as a feature](PostMVP.md#threads), even without + * [When threads are added as a feature](PostMVP.md#threads), even without shared memory, nondeterminism will be visible through the global sequence of API calls. With shared memory, the result of load operations is nondeterministic. - - - [Out of bounds heap accesses *may* want some flexibility](AstSemantics.md#out-of-bounds) - - - [NaN bit patterns](AstSemantics.md#floating-point-operations) - - - [Fixed-width SIMD may want some flexibility](PostMVP.md#fixed-width-simd) - - In SIMD.js, floating point values may or may not have subnormals flushed to zero. - - In SIMD.js, operations ending in "Approximation" return approximations that may vary between platforms. - - - Environment-dependent resource limits may be exhausted. + * Out of bounds heap accesses *may* want + [some flexibility](AstSemantics.md#out-of-bounds) + * [NaN bit patterns](AstSemantics.md#floating-point-operations) + * [Fixed-width SIMD may want some flexibility](PostMVP.md#fixed-width-simd) + - In SIMD.js, floating point values may or may not have subnormals flushed to + zero. + - In SIMD.js, operations ending in "Approximation" return approximations that + may vary between platforms. + * Environment-dependent resource limits may be exhausted. A few examples: + - Memory allocation may fail. + - Program stack may get exhausted. + - Resources such as handles may get exahusted. Users of C, C++, and similar languages should be aware that operations which -have defined or constrained behavior in WebAssembly itself may nonetheless -still have undefined behavior +have defined or constrained behavior in WebAssembly itself may nonetheless still +have undefined behavior [at the source code level](CAndC++.md#undefined-behavior). |
