summaryrefslogtreecommitdiff
path: root/src/ast/trapping.h
diff options
context:
space:
mode:
authorjgravelle-google <jgravelle@google.com>2017-10-03 10:30:50 -0700
committerGitHub <noreply@github.com>2017-10-03 10:30:50 -0700
commit8283229f6bccdcfa60d7613be10d0f93531fdd34 (patch)
tree538aa36a6bb1b6d012ce5a7512345f628e68d494 /src/ast/trapping.h
parent1f8d8a53e8fcee0791c11345fd7f328255cfa22c (diff)
downloadbinaryen-8283229f6bccdcfa60d7613be10d0f93531fdd34.tar.gz
binaryen-8283229f6bccdcfa60d7613be10d0f93531fdd34.tar.bz2
binaryen-8283229f6bccdcfa60d7613be10d0f93531fdd34.zip
Add --trap-mode=allow/clamp/js argument to asm2wasm and s2wasm (#1210)
* Add --trap-mode=allow/clamp/js argument to asm2wasm and s2wasm * Update asm2wasm and auto_update_tests scripts to use --trap-mode * Throw std::invalid_argument instead of adding a new Invalid TrapMode type * Remove legacy asm2wasm trap mode arguments
Diffstat (limited to 'src/ast/trapping.h')
-rw-r--r--src/ast/trapping.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/ast/trapping.h b/src/ast/trapping.h
index 80cc14da9..184e6059b 100644
--- a/src/ast/trapping.h
+++ b/src/ast/trapping.h
@@ -17,6 +17,8 @@
#ifndef wasm_ast_trapping_h
#define wasm_ast_trapping_h
+#include <exception>
+
#include "pass.h"
namespace wasm {
@@ -95,6 +97,20 @@ private:
Expression* makeTrappingBinary(Binary* curr, TrappingFunctionContainer &trappingFunctions);
Expression* makeTrappingUnary(Unary* curr, TrappingFunctionContainer &trappingFunctions);
+inline TrapMode trapModeFromString(std::string const& str) {
+ if (str == "allow") {
+ return TrapMode::Allow;
+ } else if (str == "clamp") {
+ return TrapMode::Clamp;
+ } else if (str == "js") {
+ return TrapMode::JS;
+ } else {
+ throw std::invalid_argument(
+ "Unsupported trap mode \"" + str + "\". "
+ "Valid modes are \"allow\", \"js\", and \"clamp\"");
+ }
+}
+
} // wasm
#endif // wasm_ast_trapping_h