aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Gohman <sunfish@mozilla.com>2015-06-15 16:52:50 -0700
committerDan Gohman <sunfish@mozilla.com>2015-06-15 16:52:50 -0700
commite2c00aaffa5b63159414a27f99ce3a6d0330c7a2 (patch)
treea2e4eb22d18375214b18ee7c94468465f5ed5f47
parent542508499c4815089556b8550fb6f7b0764c3b45 (diff)
parentf7f46e91912716889d0cb750bac27d6911cfcb79 (diff)
downloadnanowasm-design-e2c00aaffa5b63159414a27f99ce3a6d0330c7a2.tar.gz
Merge pull request #174 from WebAssembly/exhaustion
Nondeterminism: examples of exhaustion
-rw-r--r--Nondeterminism.md28
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).