summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcheck.py4
-rwxr-xr-xscripts/fuzz_opt.py7
-rw-r--r--src/tools/fuzzing.h278
-rw-r--r--test/passes/translate-to-fuzz_all-features.txt1021
-rw-r--r--test/passes/translate-to-fuzz_no-fuzz-nans_all-features.txt1090
5 files changed, 1540 insertions, 860 deletions
diff --git a/check.py b/check.py
index 6211468c9..54b3f9b83 100755
--- a/check.py
+++ b/check.py
@@ -179,8 +179,8 @@ def run_wasm_reduce_tests():
# this is very slow in ThreadSanitizer, so avoid it there
if 'fsanitize=thread' not in str(os.environ):
print('\n[ checking wasm-reduce fuzz testcase ]\n')
-
- support.run_command(shared.WASM_OPT + [os.path.join(shared.options.binaryen_test, 'untaken-br_if.wast'), '-ttf', '-Os', '-o', 'a.wasm', '-all'])
+ # TODO: re-enable multivalue once it is better optimized
+ support.run_command(shared.WASM_OPT + [os.path.join(shared.options.binaryen_test, 'signext.wast'), '-ttf', '-Os', '-o', 'a.wasm', '-all', '--disable-multivalue'])
before = os.stat('a.wasm').st_size
support.run_command(shared.WASM_REDUCE + ['a.wasm', '--command=%s b.wasm --fuzz-exec -all' % shared.WASM_OPT[0], '-t', 'b.wasm', '-w', 'c.wasm'])
after = os.stat('c.wasm').st_size
diff --git a/scripts/fuzz_opt.py b/scripts/fuzz_opt.py
index 96d35c610..a777a3a1a 100755
--- a/scripts/fuzz_opt.py
+++ b/scripts/fuzz_opt.py
@@ -352,7 +352,7 @@ class CompareVMs(TestCaseHandler):
compare(before[i], after[i], 'CompareVMs between before and after: ' + vm.name)
def can_run_on_feature_opts(self, feature_opts):
- return all([x in feature_opts for x in ['--disable-simd', '--disable-reference-types', '--disable-exception-handling']])
+ return all([x in feature_opts for x in ['--disable-simd', '--disable-reference-types', '--disable-exception-handling', '--disable-multivalue']])
# Fuzz the interpreter with --fuzz-exec. This tests everything in a single command (no
@@ -424,7 +424,7 @@ class Wasm2JS(TestCaseHandler):
return out
def can_run_on_feature_opts(self, feature_opts):
- return all([x in feature_opts for x in ['--disable-exception-handling', '--disable-simd', '--disable-threads', '--disable-bulk-memory', '--disable-nontrapping-float-to-int', '--disable-tail-call', '--disable-sign-ext', '--disable-reference-types']])
+ return all([x in feature_opts for x in ['--disable-exception-handling', '--disable-simd', '--disable-threads', '--disable-bulk-memory', '--disable-nontrapping-float-to-int', '--disable-tail-call', '--disable-sign-ext', '--disable-reference-types', '--disable-multivalue']])
class Asyncify(TestCaseHandler):
@@ -476,7 +476,7 @@ class Asyncify(TestCaseHandler):
compare(before, after_asyncify, 'Asyncify (before/after_asyncify)')
def can_run_on_feature_opts(self, feature_opts):
- return all([x in feature_opts for x in ['--disable-exception-handling', '--disable-simd', '--disable-tail-call', '--disable-reference-types']])
+ return all([x in feature_opts for x in ['--disable-exception-handling', '--disable-simd', '--disable-tail-call', '--disable-reference-types', '--disable-multivalue']])
# The global list of all test case handlers
@@ -699,6 +699,7 @@ def randomize_opt_flags():
# contains the list of all possible feature flags we can disable (after
# we enable all before that in the constant options)
POSSIBLE_FEATURE_OPTS = run([in_bin('wasm-opt'), '--print-features', '-all', in_binaryen('test', 'hello_world.wat'), '-all']).replace('--enable', '--disable').strip().split('\n')
+POSSIBLE_FEATURE_OPTS.remove('--disable-multivalue')
print('POSSIBLE_FEATURE_OPTS:', POSSIBLE_FEATURE_OPTS)
if __name__ == '__main__':
diff --git a/src/tools/fuzzing.h b/src/tools/fuzzing.h
index 24e1d6e8e..c1a81a896 100644
--- a/src/tools/fuzzing.h
+++ b/src/tools/fuzzing.h
@@ -228,6 +228,12 @@ private:
// The maximum amount of vars in each function.
static const int MAX_VARS = 20;
+ // The maximum number of globals in a module.
+ static const int MAX_GLOBALS = 20;
+
+ // The maximum number of tuple elements.
+ static const int MAX_TUPLE_SIZE = 6;
+
// some things require luck, try them a few times
static const int TRIES = 10;
@@ -309,22 +315,29 @@ private:
double getDouble() { return Literal(get64()).reinterpretf64(); }
- SmallVector<Type, 2> getSubTypes(Type type) {
- SmallVector<Type, 2> ret;
- ret.push_back(type); // includes itself
+ Type getSubType(Type type) {
+ if (type.isMulti()) {
+ std::vector<Type> types;
+ for (auto t : type.expand()) {
+ types.push_back(getSubType(t));
+ }
+ return Type(types);
+ }
+ SmallVector<Type, 2> options;
+ options.push_back(type); // includes itself
switch (type.getSingle()) {
case Type::anyref:
- ret.push_back(Type::funcref);
- ret.push_back(Type::exnref);
+ options.push_back(Type::funcref);
+ options.push_back(Type::exnref);
// falls through
case Type::funcref:
case Type::exnref:
- ret.push_back(Type::nullref);
+ options.push_back(Type::nullref);
break;
default:
break;
}
- return ret;
+ return pick(options);
}
void setupMemory() {
@@ -406,34 +419,25 @@ private:
std::map<Type, std::vector<Name>> globalsByType;
void setupGlobals() {
- size_t index = 0;
- for (auto type : getConcreteTypes()) {
- auto num = upTo(3);
- for (size_t i = 0; i < num; i++) {
- auto* glob =
- builder.makeGlobal(std::string("global$") + std::to_string(index++),
- type,
- makeConst(type),
- Builder::Mutable);
- wasm.addGlobal(glob);
- globalsByType[type].push_back(glob->name);
- }
+ for (size_t index = upTo(MAX_GLOBALS); index > 0; --index) {
+ auto type = getConcreteType();
+ auto* global =
+ builder.makeGlobal(std::string("global$") + std::to_string(index),
+ type,
+ makeConst(type),
+ Builder::Mutable);
+ wasm.addGlobal(global);
+ globalsByType[type].push_back(global->name);
}
}
void setupEvents() {
Index num = upTo(3);
for (size_t i = 0; i < num; i++) {
- // Events should have void return type and at least one param type
- std::vector<Type> params;
- Index numValues =
- wasm.features.hasMultivalue() ? upToSquared(MAX_PARAMS) : upTo(2);
- for (Index i = 0; i < numValues; i++) {
- params.push_back(getConcreteType());
- }
- auto* event = builder.makeEvent(std::string("event$") + std::to_string(i),
- WASM_EVENT_ATTRIBUTE_EXCEPTION,
- Signature(Type(params), Type::none));
+ auto* event =
+ builder.makeEvent(std::string("event$") + std::to_string(i),
+ WASM_EVENT_ATTRIBUTE_EXCEPTION,
+ Signature(getControlFlowType(), Type::none));
wasm.addEvent(event);
}
}
@@ -544,11 +548,11 @@ private:
std::vector<Type> params;
params.reserve(numParams);
for (Index i = 0; i < numParams; i++) {
- auto type = getConcreteType();
+ auto type = getSingleConcreteType();
typeLocals[type].push_back(params.size());
params.push_back(type);
}
- func->sig = Signature(Type(params), getReachableType());
+ func->sig = Signature(Type(params), getControlFlowType());
Index numVars = upToSquared(MAX_VARS);
for (Index i = 0; i < numVars; i++) {
auto type = getConcreteType();
@@ -859,32 +863,22 @@ private:
}
nesting++;
Expression* ret = nullptr;
- switch (type.getSingle()) {
- case Type::i32:
- case Type::i64:
- case Type::f32:
- case Type::f64:
- case Type::v128:
- case Type::funcref:
- case Type::anyref:
- case Type::nullref:
- case Type::exnref:
- ret = _makeConcrete(type);
- break;
- case Type::none:
- ret = _makenone();
- break;
- case Type::unreachable:
- ret = _makeunreachable();
- break;
+ if (type.isConcrete()) {
+ ret = _makeConcrete(type);
+ } else if (type == Type::none) {
+ ret = _makenone();
+ } else {
+ assert(type == Type::unreachable);
+ ret = _makeunreachable();
}
// we should create the right type of thing
assert(Type::isSubType(ret->type, type));
nesting--;
return ret;
}
-
Expression* _makeConcrete(Type type) {
+ bool canMakeControlFlow =
+ !type.isMulti() || wasm.features.has(FeatureSet::Multivalue);
auto choice = upTo(100);
if (choice < 10) {
return makeConst(type);
@@ -895,42 +889,55 @@ private:
if (choice < 50) {
return makeLocalGet(type);
}
- if (choice < 60) {
+ if (choice < 60 && canMakeControlFlow) {
return makeBlock(type);
}
- if (choice < 70) {
+ if (choice < 70 && canMakeControlFlow) {
return makeIf(type);
}
- if (choice < 80) {
+ if (choice < 80 && canMakeControlFlow) {
return makeLoop(type);
}
- if (choice < 90) {
+ if (choice < 90 && canMakeControlFlow) {
return makeBreak(type);
}
using Self = TranslateToFuzzReader;
- auto options = FeatureOptions<Expression* (Self::*)(Type)>()
- .add(FeatureSet::MVP,
- &Self::makeBlock,
- &Self::makeIf,
- &Self::makeLoop,
- &Self::makeBreak,
- &Self::makeCall,
- &Self::makeCallIndirect,
- &Self::makeLocalGet,
- &Self::makeLocalSet,
- &Self::makeLoad,
- &Self::makeConst,
- &Self::makeUnary,
- &Self::makeBinary,
- &Self::makeSelect,
- &Self::makeGlobalGet)
- .add(FeatureSet::SIMD, &Self::makeSIMD);
- if (type == Type::i32 || type == Type::i64) {
+ FeatureOptions<Expression* (Self::*)(Type)> options;
+ options.add(FeatureSet::MVP,
+ &Self::makeLocalGet,
+ &Self::makeLocalSet,
+ &Self::makeGlobalGet,
+ &Self::makeConst);
+ if (canMakeControlFlow) {
+ options.add(FeatureSet::MVP,
+ &Self::makeBlock,
+ &Self::makeIf,
+ &Self::makeLoop,
+ &Self::makeBreak,
+ &Self::makeCall,
+ &Self::makeCallIndirect);
+ }
+ if (type.isSingle()) {
+ options
+ .add(FeatureSet::MVP,
+ &Self::makeUnary,
+ &Self::makeBinary,
+ &Self::makeSelect)
+ .add(FeatureSet::Multivalue, &Self::makeTupleExtract);
+ }
+ if (type.isSingle() && !type.isRef()) {
+ options.add(FeatureSet::MVP, &Self::makeLoad);
+ options.add(FeatureSet::SIMD, &Self::makeSIMD);
+ }
+ if (type.isInteger()) {
options.add(FeatureSet::Atomics, &Self::makeAtomic);
}
if (type == Type::i32) {
options.add(FeatureSet::ReferenceTypes, &Self::makeRefIsNull);
}
+ if (type.isMulti()) {
+ options.add(FeatureSet::Multivalue, &Self::makeTupleMake);
+ }
return (this->*pick(options))(type);
}
@@ -1314,22 +1321,60 @@ private:
}
Expression* makeGlobalGet(Type type) {
- auto& globals = globalsByType[type];
- if (globals.empty()) {
+ auto it = globalsByType.find(type);
+ if (it == globalsByType.end() || it->second.empty()) {
return makeConst(type);
}
- return builder.makeGlobalGet(pick(globals), type);
+ return builder.makeGlobalGet(pick(it->second), type);
}
Expression* makeGlobalSet(Type type) {
assert(type == Type::none);
type = getConcreteType();
- auto& globals = globalsByType[type];
- if (globals.empty()) {
+ auto it = globalsByType.find(type);
+ if (it == globalsByType.end() || it->second.empty()) {
return makeTrivial(Type::none);
}
auto* value = make(type);
- return builder.makeGlobalSet(pick(globals), value);
+ return builder.makeGlobalSet(pick(it->second), value);
+ }
+
+ Expression* makeTupleMake(Type type) {
+ assert(wasm.features.hasMultivalue());
+ assert(type.isMulti());
+ std::vector<Expression*> elements;
+ for (auto t : type.expand()) {
+ elements.push_back(make(t));
+ }
+ return builder.makeTupleMake(std::move(elements));
+ }
+
+ Expression* makeTupleExtract(Type type) {
+ assert(wasm.features.hasMultivalue());
+ assert(type.isSingle() && type.isConcrete());
+ Type tupleType = getTupleType();
+ auto& elements = tupleType.expand();
+
+ // Find indices from which we can extract `type`
+ std::vector<size_t> extractIndices;
+ for (size_t i = 0; i < elements.size(); ++i) {
+ if (elements[i] == type) {
+ extractIndices.push_back(i);
+ }
+ }
+
+ // If there are none, inject one
+ if (extractIndices.size() == 0) {
+ auto newElements = elements;
+ size_t injected = upTo(elements.size());
+ newElements[injected] = type;
+ tupleType = Type(newElements);
+ extractIndices.push_back(injected);
+ }
+
+ Index index = pick(extractIndices);
+ Expression* child = make(tupleType);
+ return builder.makeTupleExtract(child, index);
}
Expression* makePointer() {
@@ -1782,6 +1827,13 @@ private:
}
return builder.makeRefNull();
}
+ if (type.isMulti()) {
+ std::vector<Expression*> operands;
+ for (auto t : type.expand()) {
+ operands.push_back(makeConst(t));
+ }
+ return builder.makeTupleMake(std::move(operands));
+ }
auto* ret = wasm.allocator.alloc<Const>();
ret->value = makeLiteral(type);
ret->type = type;
@@ -1793,8 +1845,9 @@ private:
}
Expression* makeUnary(Type type) {
+ assert(!type.isMulti());
if (type == Type::unreachable) {
- if (auto* unary = makeUnary(getConcreteType())->dynCast<Unary>()) {
+ if (auto* unary = makeUnary(getSingleConcreteType())->dynCast<Unary>()) {
return makeDeNanOp(
builder.makeUnary(unary->op, make(Type::unreachable)));
}
@@ -1808,7 +1861,7 @@ private:
switch (type.getSingle()) {
case Type::i32: {
- switch (getConcreteType().getSingle()) {
+ switch (getSingleConcreteType().getSingle()) {
case Type::i32: {
auto op = pick(
FeatureOptions<UnaryOp>()
@@ -2012,8 +2065,10 @@ private:
}
Expression* makeBinary(Type type) {
+ assert(!type.isMulti());
if (type == Type::unreachable) {
- if (auto* binary = makeBinary(getConcreteType())->dynCast<Binary>()) {
+ if (auto* binary =
+ makeBinary(getSingleConcreteType())->dynCast<Binary>()) {
return makeDeNanOp(buildBinary(
{binary->op, make(Type::unreachable), make(Type::unreachable)}));
}
@@ -2247,8 +2302,8 @@ private:
}
Expression* makeSelect(Type type) {
- Type subType1 = pick(getSubTypes(type));
- Type subType2 = pick(getSubTypes(type));
+ Type subType1 = getSubType(type);
+ Type subType2 = getSubType(type);
return makeDeNanOp(
buildSelect({make(Type::i32), make(subType1), make(subType2)}, type));
}
@@ -2677,16 +2732,10 @@ private:
}
// special getters
-
- std::vector<Type> getReachableTypes() {
+ std::vector<Type> getSingleConcreteTypes() {
return items(
FeatureOptions<Type>()
- .add(FeatureSet::MVP,
- Type::i32,
- Type::i64,
- Type::f32,
- Type::f64,
- Type::none)
+ .add(FeatureSet::MVP, Type::i32, Type::i64, Type::f32, Type::f64)
.add(FeatureSet::SIMD, Type::v128)
.add(FeatureSet::ReferenceTypes,
Type::funcref,
@@ -2695,34 +2744,46 @@ private:
.add(FeatureSet::ReferenceTypes | FeatureSet::ExceptionHandling,
Type::exnref));
}
- Type getReachableType() { return pick(getReachableTypes()); }
- std::vector<Type> getConcreteTypes() {
- return items(
- FeatureOptions<Type>()
- .add(FeatureSet::MVP, Type::i32, Type::i64, Type::f32, Type::f64)
- .add(FeatureSet::SIMD, Type::v128)
- .add(FeatureSet::ReferenceTypes,
- Type::funcref,
- Type::anyref,
- Type::nullref)
- .add(FeatureSet::ReferenceTypes | FeatureSet::ExceptionHandling,
- Type::exnref));
+ Type getSingleConcreteType() { return pick(getSingleConcreteTypes()); }
+
+ Type getTupleType() {
+ std::vector<Type> elements;
+ size_t numElements = 2 + upTo(MAX_TUPLE_SIZE - 1);
+ elements.resize(numElements);
+ for (size_t i = 0; i < numElements; ++i) {
+ elements[i] = getSingleConcreteType();
+ }
+ return Type(elements);
}
- Type getConcreteType() { return pick(getConcreteTypes()); }
- // Get types that can be stored in memory
- std::vector<Type> getStorableTypes() {
- return items(
+ Type getConcreteType() {
+ if (wasm.features.hasMultivalue() && oneIn(5)) {
+ return getTupleType();
+ } else {
+ return getSingleConcreteType();
+ }
+ }
+
+ Type getControlFlowType() {
+ if (oneIn(10)) {
+ return Type::none;
+ } else {
+ return getConcreteType();
+ }
+ }
+
+ Type getStorableType() {
+ return pick(
FeatureOptions<Type>()
.add(FeatureSet::MVP, Type::i32, Type::i64, Type::f32, Type::f64)
.add(FeatureSet::SIMD, Type::v128));
}
- Type getStorableType() { return pick(getStorableTypes()); }
// - funcref cannot be logged because referenced functions can be inlined or
// removed during optimization
// - there's no point in logging anyref because it is opaque
+ // - don't bother logging tuples
std::vector<Type> getLoggableTypes() {
return items(
FeatureOptions<Type>()
@@ -2732,6 +2793,7 @@ private:
.add(FeatureSet::ReferenceTypes | FeatureSet::ExceptionHandling,
Type::exnref));
}
+
Type getLoggableType() { return pick(getLoggableTypes()); }
// statistical distributions
diff --git a/test/passes/translate-to-fuzz_all-features.txt b/test/passes/translate-to-fuzz_all-features.txt
index 43b03810e..c55fcdf48 100644
--- a/test/passes/translate-to-fuzz_all-features.txt
+++ b/test/passes/translate-to-fuzz_all-features.txt
@@ -1,26 +1,36 @@
(module
(type $none_=>_none (func))
- (type $i32_=>_none (func (param i32)))
+ (type $none_=>_nullref_f64_i32_nullref_nullref (func (result nullref f64 i32 nullref nullref)))
(type $i64_=>_none (func (param i64)))
+ (type $none_=>_i32 (func (result i32)))
+ (type $none_=>_i32_i32_f32_exnref_nullref (func (result i32 i32 f32 exnref nullref)))
+ (type $none_=>_f64 (func (result f64)))
+ (type $none_=>_funcref_f64_i32_anyref_anyref (func (result funcref f64 i32 anyref anyref)))
+ (type $none_=>_nullref_nullref_nullref_nullref_i64 (func (result nullref nullref nullref nullref i64)))
+ (type $i32_=>_none (func (param i32)))
(type $f32_=>_none (func (param f32)))
(type $f64_=>_none (func (param f64)))
(type $v128_=>_none (func (param v128)))
- (type $funcref_anyref_f64_=>_none (func (param funcref anyref f64)))
(type $nullref_=>_none (func (param nullref)))
(type $exnref_=>_none (func (param exnref)))
- (type $none_=>_i32 (func (result i32)))
- (type $none_=>_i64 (func (result i64)))
- (type $v128_=>_i64 (func (param v128) (result i64)))
- (type $none_=>_f32 (func (result f32)))
- (type $none_=>_f64 (func (result f64)))
- (type $f32_anyref_v128_=>_f64 (func (param f32 anyref v128) (result f64)))
- (type $v128_i64_nullref_i64_v128_=>_f64 (func (param v128 i64 nullref i64 v128) (result f64)))
- (type $nullref_exnref_nullref_funcref_v128_=>_funcref (func (param nullref exnref nullref funcref v128) (result funcref)))
+ (type $f64_=>_i32 (func (param f64) (result i32)))
+ (type $f64_anyref_=>_i32 (func (param f64 anyref) (result i32)))
+ (type $f32_f32_=>_f32 (func (param f32 f32) (result f32)))
+ (type $funcref_funcref_anyref_anyref_nullref_=>_f64 (func (param funcref funcref anyref anyref nullref) (result f64)))
+ (type $nullref_=>_f64 (func (param nullref) (result f64)))
+ (type $none_=>_v128 (func (result v128)))
+ (type $none_=>_funcref_i32_i64_nullref_v128 (func (result funcref i32 i64 nullref v128)))
+ (type $f32_=>_funcref_i32_i64_nullref_v128 (func (param f32) (result funcref i32 i64 nullref v128)))
+ (type $none_=>_funcref_anyref_nullref_anyref_i64 (func (result funcref anyref nullref anyref i64)))
+ (type $exnref_nullref_=>_funcref_anyref_nullref_anyref_i64 (func (param exnref nullref) (result funcref anyref nullref anyref i64)))
+ (type $none_=>_funcref_nullref (func (result funcref nullref)))
+ (type $exnref_f32_=>_funcref_nullref (func (param exnref f32) (result funcref nullref)))
+ (type $none_=>_anyref (func (result anyref)))
(type $none_=>_nullref (func (result nullref)))
- (type $nullref_i64_i64_f64_=>_nullref (func (param nullref i64 i64 f64) (result nullref)))
- (type $none_=>_exnref (func (result exnref)))
- (type $f64_nullref_i32_funcref_nullref_=>_exnref (func (param f64 nullref i32 funcref nullref) (result exnref)))
- (type $anyref_nullref_v128_f64_=>_exnref (func (param anyref nullref v128 f64) (result exnref)))
+ (type $i32_nullref_funcref_=>_nullref (func (param i32 nullref funcref) (result nullref)))
+ (type $v128_=>_nullref (func (param v128) (result nullref)))
+ (type $v128_exnref_v128_v128_anyref_funcref_anyref_=>_nullref (func (param v128 exnref v128 v128 anyref funcref anyref) (result nullref)))
+ (type $nullref_funcref_anyref_=>_exnref (func (param nullref funcref anyref) (result exnref)))
(import "fuzzing-support" "log-i32" (func $log-i32 (param i32)))
(import "fuzzing-support" "log-i64" (func $log-i64 (param i64)))
(import "fuzzing-support" "log-f32" (func $log-f32 (param f32)))
@@ -28,36 +38,49 @@
(import "fuzzing-support" "log-v128" (func $log-v128 (param v128)))
(import "fuzzing-support" "log-nullref" (func $log-nullref (param nullref)))
(import "fuzzing-support" "log-exnref" (func $log-exnref (param exnref)))
- (memory $0 (shared 1 1))
+ (memory $0 1 1)
(data (i32.const 0) "N\0fN\f5\f9\b1\ff\fa\eb\e5\fe\a7\ec\fb\fc\f4\a6\e4\ea\f0\ae\e3")
- (table $0 5 5 funcref)
- (elem (i32.const 0) $func_10 $func_17 $func_17 $func_17 $func_23)
- (global $global$0 (mut i32) (i32.const 975663930))
- (global $global$1 (mut i32) (i32.const 2066300474))
- (global $global$2 (mut i64) (i64.const 20510))
- (global $global$3 (mut f32) (f32.const -2147483648))
- (global $global$4 (mut v128) (v128.const i32x4 0x7f002833 0x580000fe 0x59750500 0x01ff002f))
- (global $global$5 (mut funcref) (ref.null))
- (global $global$6 (mut anyref) (ref.null))
- (global $global$7 (mut nullref) (ref.null))
- (global $global$8 (mut nullref) (ref.null))
+ (table $0 9 9 funcref)
+ (elem (i32.const 0) $func_22 $func_26 $func_26 $func_26 $func_26 $func_29 $func_31 $func_33 $func_40)
+ (global $global$5 (mut f32) (f32.const 74))
+ (global $global$4 (mut nullref) (ref.null))
+ (global $global$3 (mut i32) (i32.const 1263230471))
+ (global $global$2 (mut i32) (i32.const -131072))
+ (global $global$1 (mut (i64 f64 exnref)) (tuple.make
+ (i64.const 4294967295)
+ (f64.const -nan:0xffffffffffffa)
+ (ref.null)
+ ))
(global $hangLimit (mut i32) (i32.const 10))
- (event $event$0 (attr 0) (param funcref anyref f64))
- (event $event$1 (attr 0) (param i32))
+ (event $event$0 (attr 0) (param i64))
+ (event $event$1 (attr 0) (param))
(export "hashMemory" (func $hashMemory))
(export "memory" (memory $0))
(export "func_8" (func $func_8))
- (export "func_11" (func $func_11))
+ (export "func_8_invoker" (func $func_8_invoker))
+ (export "func_10_invoker" (func $func_10_invoker))
(export "func_12_invoker" (func $func_12_invoker))
- (export "func_15" (func $func_15))
- (export "func_15_invoker" (func $func_15_invoker))
- (export "func_17_invoker" (func $func_17_invoker))
+ (export "func_14_invoker" (func $func_14_invoker))
+ (export "func_16" (func $func_16))
+ (export "func_16_invoker" (func $func_16_invoker))
(export "func_19" (func $func_19))
- (export "func_19_invoker" (func $func_19_invoker))
- (export "func_21" (func $func_21))
- (export "func_21_invoker" (func $func_21_invoker))
- (export "func_23_invoker" (func $func_23_invoker))
- (export "func_25" (func $func_25))
+ (export "func_20" (func $func_20))
+ (export "func_20_invoker" (func $func_20_invoker))
+ (export "func_22_invoker" (func $func_22_invoker))
+ (export "func_24" (func $func_24))
+ (export "func_24_invoker" (func $func_24_invoker))
+ (export "func_26" (func $func_26))
+ (export "func_26_invoker" (func $func_26_invoker))
+ (export "func_29" (func $func_29))
+ (export "func_29_invoker" (func $func_29_invoker))
+ (export "func_31" (func $func_31))
+ (export "func_32" (func $func_32))
+ (export "func_33_invoker" (func $func_33_invoker))
+ (export "func_35_invoker" (func $func_35_invoker))
+ (export "func_37" (func $func_37))
+ (export "func_37_invoker" (func $func_37_invoker))
+ (export "func_40" (func $func_40))
+ (export "func_40_invoker" (func $func_40_invoker))
(export "hangLimitInitializer" (func $hangLimitInitializer))
(func $hashMemory (result i32)
(local $0 i32)
@@ -290,13 +313,22 @@
)
(local.get $0)
)
- (func $func_8
+ (func $func_8 (result anyref)
+ (local $0 i64)
+ (local $1 exnref)
+ (local $2 nullref)
+ (local $3 i32)
+ (local $4 anyref)
+ (local $5 nullref)
+ (local $6 f32)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
- (return)
+ (return
+ (local.get $4)
+ )
)
(global.set $hangLimit
(i32.sub
@@ -306,19 +338,51 @@
)
)
(block $label$0
- (block $label$1
- (block $label$2
+ (nop)
+ (loop $label$1
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (ref.null)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block
(nop)
+ (br_if $label$1
+ (i32.eqz
+ (i32.const -8)
+ )
+ )
(nop)
)
- (nop)
)
- (nop)
+ (return
+ (local.get $4)
+ )
)
)
- (func $func_9 (param $0 nullref) (param $1 exnref) (param $2 nullref) (param $3 funcref) (param $4 v128) (result funcref)
- (local $5 nullref)
- (local $6 f64)
+ (func $func_8_invoker
+ (drop
+ (call $func_8)
+ )
+ (drop
+ (call $func_8)
+ )
+ (drop
+ (call $func_8)
+ )
+ )
+ (func $func_10 (result nullref)
(block
(if
(i32.eqz
@@ -335,21 +399,55 @@
)
)
)
- (local.tee $3
- (ref.null)
+ (block $label$0
+ (loop $label$1
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (ref.null)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (br_if $label$1
+ (i32.eqz
+ (i32.const 5)
+ )
+ )
+ )
+ (return
+ (ref.null)
+ )
)
)
- (func $func_10 (result i64)
- (local $0 anyref)
- (local $1 funcref)
- (local $2 f64)
+ (func $func_10_invoker
+ (drop
+ (call $func_10)
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
+ )
+ (func $func_12 (param $0 exnref) (param $1 f32) (result funcref nullref)
+ (local $2 f32)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (i64.const 21339)
+ (tuple.make
+ (ref.null)
+ (ref.null)
+ )
)
)
(global.set $hangLimit
@@ -359,34 +457,44 @@
)
)
)
- (block $label$0
- (nop)
- (return
- (i64.const -2199023255552)
+ (tuple.make
+ (ref.null)
+ (ref.null)
+ )
+ )
+ (func $func_12_invoker
+ (drop
+ (call $func_12
+ (ref.null)
+ (f32.const -nan:0x7fffc8)
)
)
+ (call $log-i32
+ (call $hashMemory)
+ )
+ (drop
+ (call $func_12
+ (ref.null)
+ (f32.const 18446744073709551615)
+ )
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
)
- (func $func_11 (result f64)
- (local $0 v128)
- (local $1 f32)
- (local $2 v128)
- (local $3 funcref)
- (local $4 v128)
- (local $5 nullref)
- (local $6 i32)
- (local $7 i32)
- (local $8 funcref)
- (local $9 v128)
- (local $10 v128)
- (local $11 v128)
- (local $12 funcref)
+ (func $func_14 (result v128)
+ (local $0 i64)
+ (local $1 i32)
+ (local $2 f64)
+ (local $3 f64)
+ (local $4 f64)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (f64.const 5)
+ (v128.const i32x4 0xffffff01 0xffffffff 0x4e484e45 0x00000000)
)
)
(global.set $hangLimit
@@ -396,17 +504,32 @@
)
)
)
- (f64.const 1.6293189712507804e-52)
+ (v128.const i32x4 0x00000000 0xc2800000 0xffffffb0 0x4eb61298)
+ )
+ (func $func_14_invoker
+ (drop
+ (call $func_14)
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
+ (drop
+ (call $func_14)
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
)
- (func $func_12 (result nullref)
+ (func $func_16
+ (local $0 exnref)
+ (local $1 f32)
+ (local $2 i64)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
- (return
- (ref.null)
- )
+ (return)
)
(global.set $hangLimit
(i32.sub
@@ -415,44 +538,30 @@
)
)
)
- (block $label$0
- (nop)
- (return
- (ref.null)
- )
- )
+ (nop)
)
- (func $func_12_invoker
- (drop
- (call $func_12)
- )
- (drop
- (call $func_12)
- )
- (drop
- (call $func_12)
- )
- (call $log-i32
- (call $hashMemory)
- )
- (drop
- (call $func_12)
- )
- (call $log-i32
- (call $hashMemory)
- )
+ (func $func_16_invoker
+ (call $func_16)
)
- (func $func_14 (param $0 nullref) (param $1 i64) (param $2 i64) (param $3 f64) (result nullref)
- (local $4 f64)
- (local $5 f32)
- (local $6 i64)
+ (func $func_18 (param $0 v128) (result nullref)
+ (local $1 i64)
+ (local $2 v128)
+ (local $3 i32)
+ (local $4 nullref)
+ (local $5 anyref)
+ (local $6 f64)
+ (local $7 (exnref anyref exnref))
+ (local $8 f32)
+ (local $9 (i32 v128))
+ (local $10 i32)
+ (local $11 (f64 exnref v128 f64 f32 v128))
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (ref.null)
+ (local.get $4)
)
)
(global.set $hangLimit
@@ -462,22 +571,43 @@
)
)
)
- (block $label$0 (result nullref)
- (nop)
- (block $label$1 (result nullref)
- (local.get $0)
+ (ref.null)
+ )
+ (func $func_19 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (i32.const 18233)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
)
)
+ (i32.const 24)
)
- (func $func_15 (result f32)
- (local $0 funcref)
+ (func $func_20 (param $0 nullref) (param $1 funcref) (param $2 anyref) (result exnref)
+ (local $3 funcref)
+ (local $4 exnref)
+ (local $5 i32)
+ (local $6 funcref)
+ (local $7 (i64 i32 v128 f32 f64))
+ (local $8 f32)
+ (local $9 v128)
+ (local $10 v128)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (f32.const -0)
+ (local.get $4)
)
)
(global.set $hangLimit
@@ -488,118 +618,162 @@
)
)
(block $label$0
- (call $log-f32
- (loop $label$1 (result f32)
- (block
- (if
- (i32.eqz
- (global.get $hangLimit)
- )
- (return
- (f32.const -nan:0x7fffe9)
- )
- )
- (global.set $hangLimit
- (i32.sub
- (global.get $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block (result f32)
- (block $label$2
- (nop)
- (nop)
- )
- (br_if $label$1
- (i32.eqz
- (i32.const 31868)
+ (call $log-i32
+ (local.tee $5
+ (local.tee $5
+ (local.tee $5
+ (local.tee $5
+ (local.tee $5
+ (local.tee $5
+ (loop $label$1 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (local.get $4)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$2 (result i32)
+ (local.tee $5
+ (i32.const 12588)
+ )
+ )
+ )
+ )
+ )
)
)
- (f32.const -18446744073709551615)
)
)
)
+ (return
+ (local.get $4)
+ )
+ )
+ )
+ (func $func_20_invoker
+ (drop
+ (call $func_20
+ (ref.null)
+ (ref.func $func_12)
+ (ref.null)
+ )
+ )
+ )
+ (func $func_22 (param $0 exnref) (param $1 nullref) (result funcref anyref nullref anyref i64)
+ (block
(if
- (block $label$3
- (call $log-exnref
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (tuple.make
+ (ref.func $func_14_invoker)
(ref.null)
- )
- (loop $label$4
- (block
- (if
- (i32.eqz
- (global.get $hangLimit)
- )
- (return
- (f32.const -nan:0x7fffef)
- )
- )
- (global.set $hangLimit
- (i32.sub
- (global.get $hangLimit)
- (i32.const 1)
- )
- )
- )
- (call $log-exnref
- (ref.null)
- )
- )
- (return
- (f32.const 2101943053617856459558324e13)
+ (ref.null)
+ (ref.null)
+ (i64.const -32768)
)
)
- (block $label$5
- (call $log-i32
- (call $hashMemory)
- )
- (br_if $label$5
- (i32.eqz
- (i32.const -2147483648)
- )
- )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
)
- (nop)
)
- (return
- (f32.const 35013904)
+ )
+ (block $label$0 (result nullref nullref nullref nullref i64)
+ (block $label$1 (result nullref nullref nullref nullref i64)
+ (call $log-i64
+ (i64.const -9223372036854775808)
+ )
+ (tuple.make
+ (ref.null)
+ (ref.null)
+ (ref.null)
+ (ref.null)
+ (i64.const 1024)
+ )
)
)
)
- (func $func_15_invoker
+ (func $func_22_invoker
+ (drop
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
+ )
(drop
- (call $func_15)
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
)
(call $log-i32
(call $hashMemory)
)
(drop
- (call $func_15)
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
)
(drop
- (call $func_15)
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
+ )
+ (drop
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
+ (drop
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
+ )
+ (drop
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
)
(call $log-i32
(call $hashMemory)
)
)
- (func $func_17 (param $0 f64) (param $1 nullref) (param $2 i32) (param $3 funcref) (param $4 nullref) (result exnref)
- (local $5 anyref)
- (local $6 exnref)
- (local $7 f32)
- (local $8 f32)
- (local $9 funcref)
- (local $10 nullref)
- (local $11 nullref)
- (local $12 f32)
+ (func $func_24 (param $0 f64) (result i32)
+ (local $1 f64)
+ (local $2 exnref)
+ (local $3 f32)
+ (local $4 v128)
+ (local $5 (exnref f32 f32 f32 i32))
+ (local $6 anyref)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (ref.null)
+ (i32.const -2147483647)
)
)
(global.set $hangLimit
@@ -609,36 +783,81 @@
)
)
)
- (local.tee $6
- (local.tee $6
- (ref.null)
+ (block $label$0
+ (nop)
+ (return
+ (i32.const -2147483647)
)
)
)
- (func $func_17_invoker
+ (func $func_24_invoker
(drop
- (call $func_17
- (f64.const 3.2330574282313187e-229)
- (ref.null)
- (i32.const 65536)
- (ref.func $func_10)
- (ref.null)
+ (call $func_24
+ (f64.const 3.0737861764336346e-236)
)
)
+ (call $log-i32
+ (call $hashMemory)
+ )
+ )
+ (func $func_26 (param $0 funcref) (param $1 funcref) (param $2 anyref) (param $3 anyref) (param $4 nullref) (result f64)
+ (local $5 i64)
+ (local $6 exnref)
+ (local $7 (funcref f64))
+ (local $8 f32)
+ (local $9 anyref)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (f64.const 8.160763227260461e-259)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$0 (result f64)
+ (nop)
+ (f64.const 3402823466385288598117041e14)
+ )
+ )
+ (func $func_26_invoker
(drop
- (call $func_17
- (f64.const 2.2250738585072014e-308)
+ (call $func_26
+ (ref.null)
+ (ref.func $func_22_invoker)
+ (ref.null)
(ref.null)
- (i32.const -66)
- (ref.func $func_15_invoker)
(ref.null)
)
)
- (call $log-i32
- (call $hashMemory)
+ )
+ (func $func_28 (param $0 nullref) (result f64)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (f64.const 3.859060993302007e-86)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
)
+ (f64.const 2147483649)
)
- (func $func_19 (result exnref)
+ (func $func_29 (param $0 i32) (param $1 nullref) (param $2 funcref) (result nullref)
(block
(if
(i32.eqz
@@ -655,35 +874,54 @@
)
)
)
- (select (result nullref)
- (ref.null)
- (ref.null)
- (i32.const 1)
+ (block $label$0
+ (nop)
+ (return
+ (local.get $1)
+ )
)
)
- (func $func_19_invoker
+ (func $func_29_invoker
(drop
- (call $func_19)
+ (call $func_29
+ (i32.const 2147483647)
+ (ref.null)
+ (ref.func $func_22_invoker)
+ )
)
(call $log-i32
(call $hashMemory)
)
(drop
- (call $func_19)
+ (call $func_29
+ (i32.const -65535)
+ (ref.null)
+ (ref.null)
+ )
)
(call $log-i32
(call $hashMemory)
)
)
- (func $func_21 (param $0 f32) (param $1 anyref) (param $2 v128) (result f64)
- (local $3 f32)
+ (func $func_31 (param $0 f32) (result funcref i32 i64 nullref v128)
+ (local $1 i64)
+ (local $2 (f32 f32))
+ (local $3 i32)
+ (local $4 i64)
+ (local $5 v128)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (f64.const -35)
+ (tuple.make
+ (ref.func $func_24_invoker)
+ (i32.const 262144)
+ (i64.const 5580322043939276866)
+ (ref.null)
+ (v128.const i32x4 0x5e00164d 0x2c4108ff 0x0000f83a 0x00000400)
+ )
)
)
(global.set $hangLimit
@@ -694,140 +932,98 @@
)
)
(block $label$0
+ (nop)
+ (return
+ (tuple.make
+ (ref.null)
+ (i32.const 268435456)
+ (i64.const 6944553142512654410)
+ (ref.null)
+ (v128.const i32x4 0x7fffffff 0x00000000 0x00006444 0x00000000)
+ )
+ )
+ )
+ )
+ (func $func_32 (param $0 f32) (param $1 f32) (result f32)
+ (block
(if
- (i32.const -1024)
- (block $label$1
- (if
- (loop $label$2 (result i32)
- (block
- (if
- (i32.eqz
- (global.get $hangLimit)
- )
- (return
- (f64.const 218)
- )
- )
- (global.set $hangLimit
- (i32.sub
- (global.get $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block (result i32)
- (local.set $0
- (local.get $3)
- )
- (br_if $label$2
- (i32.eqz
- (i32.const -127)
- )
- )
- (loop $label$5 (result i32)
- (block
- (if
- (i32.eqz
- (global.get $hangLimit)
- )
- (return
- (f64.const 18250224326260770977349632)
- )
- )
- (global.set $hangLimit
- (i32.sub
- (global.get $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block (result i32)
- (local.tee $2
- (loop $label$6
- (block
- (if
- (i32.eqz
- (global.get $hangLimit)
- )
- (return
- (f64.const 536870912)
- )
- )
- (global.set $hangLimit
- (i32.sub
- (global.get $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$7
- (br $label$1)
- )
- )
- )
- (br_if $label$5
- (i32.const 37771863)
- )
- (i32.const 1026961235)
- )
- )
- )
- )
- (local.set $0
- (f32.const 15574585428672512)
- )
- (block $label$15
- (call $log-i32
- (call $hashMemory)
- )
- )
- )
- (nop)
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (local.get $1)
)
- (nop)
)
- (return
- (f64.const 302456592)
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
)
)
+ (f32.const 6.785077194130481e-28)
)
- (func $func_21_invoker
- (drop
- (call $func_21
- (f32.const 589308224)
- (ref.null)
- (v128.const i32x4 0xffffff81 0x04070504 0x02007d03 0xfffffe00)
+ (func $func_33 (param $0 v128) (param $1 exnref) (param $2 v128) (param $3 v128) (param $4 anyref) (param $5 funcref) (param $6 anyref) (result nullref)
+ (local $7 anyref)
+ (local $8 (nullref nullref))
+ (local $9 f64)
+ (local $10 nullref)
+ (local $11 nullref)
+ (local $12 i64)
+ (local $13 exnref)
+ (local $14 exnref)
+ (local $15 anyref)
+ (local $16 f32)
+ (local $17 f32)
+ (local $18 f64)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (ref.null)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
)
)
- (drop
- (call $func_21
- (f32.const 168096624)
- (ref.null)
- (v128.const i32x4 0x4ed626fe 0x74770f63 0xdf000000 0x564a5657)
+ (block $label$0
+ (nop)
+ (return
+ (local.get $10)
)
)
+ )
+ (func $func_33_invoker
(drop
- (call $func_21
- (f32.const 707669312)
+ (call $func_33
+ (v128.const i32x4 0x80000001 0xffffff81 0xffff8000 0xfffffff0)
+ (ref.null)
+ (v128.const i32x4 0x46457378 0xffe0ffb8 0x0f0e0000 0x00807fff)
+ (v128.const i32x4 0x0f10001c 0x004a5b09 0x3722594b 0x53000000)
+ (ref.null)
+ (ref.null)
(ref.null)
- (v128.const i32x4 0x0000001f 0xfc7f3000 0x00005c00 0x5f110d0f)
)
)
- (call $log-i32
- (call $hashMemory)
- )
)
- (func $func_23 (param $0 v128) (result i64)
- (local $1 i32)
- (local $2 f64)
- (local $3 f64)
+ (func $func_35 (result f64)
+ (local $0 f32)
+ (local $1 v128)
+ (local $2 funcref)
+ (local $3 anyref)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (i64.const 2147483646)
+ (f64.const -nan:0xfffffffffffb3)
)
)
(global.set $hangLimit
@@ -837,45 +1033,81 @@
)
)
)
- (block $label$0
- (local.set $3
- (local.tee $3
- (local.get $3)
+ (f64.const 2.6233847629195463e-33)
+ )
+ (func $func_35_invoker
+ (drop
+ (call $func_35)
+ )
+ )
+ (func $func_37 (result f64)
+ (local $0 (f32 funcref f64 exnref anyref))
+ (local $1 v128)
+ (local $2 anyref)
+ (local $3 nullref)
+ (local $4 i64)
+ (local $5 (v128 anyref v128 funcref))
+ (local $6 funcref)
+ (local $7 exnref)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (f64.const 68)
)
)
- (return
- (i64.const 110)
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
)
)
+ (block $label$0 (result f64)
+ (call $log-exnref
+ (local.tee $7
+ (local.tee $7
+ (ref.null)
+ )
+ )
+ )
+ (f64.const 8.203050004426016e-158)
+ )
)
- (func $func_23_invoker
+ (func $func_37_invoker
(drop
- (call $func_23
- (v128.const i32x4 0xf0000000 0x00000046 0x00080000 0x513d3229)
- )
+ (call $func_37)
)
(call $log-i32
(call $hashMemory)
)
(drop
- (call $func_23
- (v128.const i32x4 0x4409256e 0xff807c7c 0x0000ffa1 0x51378000)
- )
+ (call $func_37)
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
+ (drop
+ (call $func_37)
)
(call $log-i32
(call $hashMemory)
)
+ (drop
+ (call $func_37)
+ )
)
- (func $func_25 (param $0 anyref) (param $1 nullref) (param $2 v128) (param $3 f64) (result exnref)
- (local $4 i64)
- (local $5 nullref)
+ (func $func_39 (param $0 f64) (param $1 anyref) (result i32)
+ (local $2 v128)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (ref.null)
+ (i32.const 67108864)
)
)
(global.set $hangLimit
@@ -885,17 +1117,68 @@
)
)
)
- (ref.null)
+ (i32.const 981413694)
+ )
+ (func $func_40 (result i32 i32 f32 exnref nullref)
+ (local $0 i64)
+ (local $1 i64)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (tuple.make
+ (i32.const 2147483647)
+ (i32.const -32768)
+ (f32.const -9223372036854775808)
+ (ref.null)
+ (ref.null)
+ )
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$0
+ (nop)
+ (return
+ (tuple.make
+ (i32.const -30)
+ (i32.const 12)
+ (f32.const -9223372036854775808)
+ (ref.null)
+ (ref.null)
+ )
+ )
+ )
+ )
+ (func $func_40_invoker
+ (drop
+ (call $func_40)
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
)
- (func $func_26 (param $0 v128) (param $1 i64) (param $2 nullref) (param $3 i64) (param $4 v128) (result f64)
- (local $5 funcref)
+ (func $func_42 (result funcref f64 i32 anyref anyref)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (f64.const -nan:0xfffffffffffe0)
+ (tuple.make
+ (ref.func $func_16)
+ (f64.const 1048576)
+ (i32.const 1294952226)
+ (ref.null)
+ (ref.null)
+ )
)
)
(global.set $hangLimit
@@ -905,14 +1188,20 @@
)
)
)
- (loop $label$0 (result f64)
+ (loop $label$0 (result nullref f64 i32 nullref nullref)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (f64.const 2.823288302326678e-212)
+ (tuple.make
+ (ref.func $log-nullref)
+ (f64.const 2312)
+ (i32.const 1364292894)
+ (ref.null)
+ (ref.null)
+ )
)
)
(global.set $hangLimit
@@ -922,19 +1211,27 @@
)
)
)
- (block (result f64)
+ (block (result nullref f64 i32 nullref nullref)
(block $label$1
- (nop)
- (call $log-v128
- (v128.const i32x4 0x00000000 0xc3e00000 0x00000000 0x403c0000)
+ (call $log-i32
+ (call $hashMemory)
+ )
+ (call $log-i32
+ (call $hashMemory)
)
)
(br_if $label$0
(i32.eqz
- (i32.const -2)
+ (i32.const 536870912)
)
)
- (f64.const 2.760346204923693e-173)
+ (tuple.make
+ (ref.null)
+ (f64.const 1.0642378617897867e-234)
+ (i32.const -4096)
+ (ref.null)
+ (ref.null)
+ )
)
)
)
diff --git a/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.txt b/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.txt
index 17b289421..36905f66d 100644
--- a/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.txt
+++ b/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.txt
@@ -1,28 +1,35 @@
(module
(type $none_=>_none (func))
- (type $i32_=>_none (func (param i32)))
(type $i64_=>_none (func (param i64)))
+ (type $none_=>_i32 (func (result i32)))
+ (type $none_=>_f64 (func (result f64)))
+ (type $none_=>_nullref_nullref_nullref_nullref_i64 (func (result nullref nullref nullref nullref i64)))
+ (type $i32_=>_none (func (param i32)))
(type $f32_=>_none (func (param f32)))
(type $f64_=>_none (func (param f64)))
(type $v128_=>_none (func (param v128)))
- (type $funcref_anyref_f64_=>_none (func (param funcref anyref f64)))
(type $nullref_=>_none (func (param nullref)))
(type $exnref_=>_none (func (param exnref)))
- (type $none_=>_i32 (func (result i32)))
- (type $none_=>_i64 (func (result i64)))
- (type $v128_=>_i64 (func (param v128) (result i64)))
- (type $none_=>_f32 (func (result f32)))
+ (type $f64_=>_i32 (func (param f64) (result i32)))
+ (type $nullref_funcref_i64_=>_i64 (func (param nullref funcref i64) (result i64)))
(type $f32_=>_f32 (func (param f32) (result f32)))
- (type $none_=>_f64 (func (result f64)))
- (type $f32_anyref_v128_=>_f64 (func (param f32 anyref v128) (result f64)))
+ (type $f32_f32_=>_f32 (func (param f32 f32) (result f32)))
(type $f64_=>_f64 (func (param f64) (result f64)))
- (type $v128_i64_nullref_i64_v128_=>_f64 (func (param v128 i64 nullref i64 v128) (result f64)))
- (type $nullref_exnref_nullref_funcref_v128_=>_funcref (func (param nullref exnref nullref funcref v128) (result funcref)))
+ (type $funcref_funcref_anyref_anyref_nullref_=>_f64 (func (param funcref funcref anyref anyref nullref) (result f64)))
+ (type $nullref_=>_f64 (func (param nullref) (result f64)))
+ (type $none_=>_v128 (func (result v128)))
+ (type $none_=>_funcref_i32_i64_nullref_v128 (func (result funcref i32 i64 nullref v128)))
+ (type $f32_=>_funcref_i32_i64_nullref_v128 (func (param f32) (result funcref i32 i64 nullref v128)))
+ (type $none_=>_funcref_anyref_nullref_anyref_i64 (func (result funcref anyref nullref anyref i64)))
+ (type $exnref_nullref_=>_funcref_anyref_nullref_anyref_i64 (func (param exnref nullref) (result funcref anyref nullref anyref i64)))
+ (type $none_=>_funcref_nullref (func (result funcref nullref)))
+ (type $exnref_f32_=>_funcref_nullref (func (param exnref f32) (result funcref nullref)))
+ (type $none_=>_anyref (func (result anyref)))
(type $none_=>_nullref (func (result nullref)))
- (type $nullref_i64_i64_f64_=>_nullref (func (param nullref i64 i64 f64) (result nullref)))
- (type $none_=>_exnref (func (result exnref)))
- (type $f64_nullref_i32_funcref_nullref_=>_exnref (func (param f64 nullref i32 funcref nullref) (result exnref)))
- (type $anyref_nullref_v128_f64_=>_exnref (func (param anyref nullref v128 f64) (result exnref)))
+ (type $i32_nullref_funcref_=>_nullref (func (param i32 nullref funcref) (result nullref)))
+ (type $v128_=>_nullref (func (param v128) (result nullref)))
+ (type $v128_exnref_v128_v128_anyref_funcref_anyref_=>_nullref (func (param v128 exnref v128 v128 anyref funcref anyref) (result nullref)))
+ (type $nullref_funcref_anyref_=>_exnref (func (param nullref funcref anyref) (result exnref)))
(import "fuzzing-support" "log-i32" (func $log-i32 (param i32)))
(import "fuzzing-support" "log-i64" (func $log-i64 (param i64)))
(import "fuzzing-support" "log-f32" (func $log-f32 (param f32)))
@@ -30,37 +37,47 @@
(import "fuzzing-support" "log-v128" (func $log-v128 (param v128)))
(import "fuzzing-support" "log-nullref" (func $log-nullref (param nullref)))
(import "fuzzing-support" "log-exnref" (func $log-exnref (param exnref)))
- (memory $0 (shared 1 1))
+ (memory $0 1 1)
(data (i32.const 0) "N\0fN\f5\f9\b1\ff\fa\eb\e5\fe\a7\ec\fb\fc\f4\a6\e4\ea\f0\ae\e3")
- (table $0 5 funcref)
- (elem (i32.const 0) $func_10 $func_17 $func_17 $func_17 $func_23)
- (global $global$0 (mut i32) (i32.const 975663930))
- (global $global$1 (mut i32) (i32.const 2066300474))
- (global $global$2 (mut i64) (i64.const 20510))
- (global $global$3 (mut f32) (f32.const -2147483648))
- (global $global$4 (mut v128) (v128.const i32x4 0x7f002833 0x580000fe 0x59750500 0x01ff002f))
- (global $global$5 (mut funcref) (ref.null))
- (global $global$6 (mut anyref) (ref.null))
- (global $global$7 (mut nullref) (ref.null))
- (global $global$8 (mut nullref) (ref.null))
+ (table $0 8 8 funcref)
+ (elem (i32.const 0) $func_22 $func_26 $func_26 $func_26 $func_26 $func_29 $func_31 $func_33)
+ (global $global$5 (mut f32) (f32.const 74))
+ (global $global$4 (mut nullref) (ref.null))
+ (global $global$3 (mut i32) (i32.const 1263230471))
+ (global $global$2 (mut i32) (i32.const -131072))
+ (global $global$1 (mut (i64 f64 exnref)) (tuple.make
+ (i64.const 4294967295)
+ (f64.const 0)
+ (ref.null)
+ ))
(global $hangLimit (mut i32) (i32.const 10))
- (event $event$0 (attr 0) (param funcref anyref f64))
- (event $event$1 (attr 0) (param i32))
+ (event $event$0 (attr 0) (param i64))
+ (event $event$1 (attr 0) (param))
(export "hashMemory" (func $hashMemory))
(export "memory" (memory $0))
(export "func_8" (func $func_8))
- (export "func_11" (func $func_11))
+ (export "func_8_invoker" (func $func_8_invoker))
+ (export "func_10_invoker" (func $func_10_invoker))
(export "func_12_invoker" (func $func_12_invoker))
- (export "func_15" (func $func_15))
- (export "func_15_invoker" (func $func_15_invoker))
- (export "func_17_invoker" (func $func_17_invoker))
+ (export "func_14_invoker" (func $func_14_invoker))
+ (export "func_16" (func $func_16))
+ (export "func_16_invoker" (func $func_16_invoker))
(export "func_19" (func $func_19))
- (export "func_19_invoker" (func $func_19_invoker))
- (export "func_21" (func $func_21))
- (export "func_21_invoker" (func $func_21_invoker))
- (export "func_23_invoker" (func $func_23_invoker))
- (export "func_25" (func $func_25))
+ (export "func_20" (func $func_20))
+ (export "func_20_invoker" (func $func_20_invoker))
+ (export "func_22_invoker" (func $func_22_invoker))
+ (export "func_24" (func $func_24))
+ (export "func_24_invoker" (func $func_24_invoker))
(export "func_26" (func $func_26))
+ (export "func_26_invoker" (func $func_26_invoker))
+ (export "func_29" (func $func_29))
+ (export "func_29_invoker" (func $func_29_invoker))
+ (export "func_31" (func $func_31))
+ (export "func_32" (func $func_32))
+ (export "func_33_invoker" (func $func_33_invoker))
+ (export "func_35_invoker" (func $func_35_invoker))
+ (export "func_37" (func $func_37))
+ (export "func_37_invoker" (func $func_37_invoker))
(export "hangLimitInitializer" (func $hangLimitInitializer))
(func $hashMemory (result i32)
(local $0 i32)
@@ -293,13 +310,22 @@
)
(local.get $0)
)
- (func $func_8
+ (func $func_8 (result anyref)
+ (local $0 i64)
+ (local $1 exnref)
+ (local $2 nullref)
+ (local $3 i32)
+ (local $4 anyref)
+ (local $5 nullref)
+ (local $6 f32)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
- (return)
+ (return
+ (local.get $4)
+ )
)
(global.set $hangLimit
(i32.sub
@@ -309,19 +335,51 @@
)
)
(block $label$0
- (block $label$1
- (block $label$2
+ (nop)
+ (loop $label$1
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (ref.null)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block
(nop)
+ (br_if $label$1
+ (i32.eqz
+ (i32.const -8)
+ )
+ )
(nop)
)
- (nop)
)
- (nop)
+ (return
+ (local.get $4)
+ )
)
)
- (func $func_9 (param $0 nullref) (param $1 exnref) (param $2 nullref) (param $3 funcref) (param $4 v128) (result funcref)
- (local $5 nullref)
- (local $6 f64)
+ (func $func_8_invoker
+ (drop
+ (call $func_8)
+ )
+ (drop
+ (call $func_8)
+ )
+ (drop
+ (call $func_8)
+ )
+ )
+ (func $func_10 (result nullref)
(block
(if
(i32.eqz
@@ -338,21 +396,55 @@
)
)
)
- (local.tee $3
- (ref.null)
+ (block $label$0
+ (loop $label$1
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (ref.null)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (br_if $label$1
+ (i32.eqz
+ (i32.const 5)
+ )
+ )
+ )
+ (return
+ (ref.null)
+ )
)
)
- (func $func_10 (result i64)
- (local $0 anyref)
- (local $1 funcref)
- (local $2 f64)
+ (func $func_10_invoker
+ (drop
+ (call $func_10)
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
+ )
+ (func $func_12 (param $0 exnref) (param $1 f32) (result funcref nullref)
+ (local $2 f32)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (i64.const 21339)
+ (tuple.make
+ (ref.null)
+ (ref.null)
+ )
)
)
(global.set $hangLimit
@@ -362,34 +454,44 @@
)
)
)
- (block $label$0
- (nop)
- (return
- (i64.const -2199023255552)
+ (tuple.make
+ (ref.null)
+ (ref.null)
+ )
+ )
+ (func $func_12_invoker
+ (drop
+ (call $func_12
+ (ref.null)
+ (f32.const 0)
)
)
+ (call $log-i32
+ (call $hashMemory)
+ )
+ (drop
+ (call $func_12
+ (ref.null)
+ (f32.const 18446744073709551615)
+ )
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
)
- (func $func_11 (result f64)
- (local $0 v128)
- (local $1 f32)
- (local $2 v128)
- (local $3 funcref)
- (local $4 v128)
- (local $5 nullref)
- (local $6 i32)
- (local $7 i32)
- (local $8 funcref)
- (local $9 v128)
- (local $10 v128)
- (local $11 v128)
- (local $12 funcref)
+ (func $func_14 (result v128)
+ (local $0 i64)
+ (local $1 i32)
+ (local $2 f64)
+ (local $3 f64)
+ (local $4 f64)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (f64.const 5)
+ (v128.const i32x4 0xffffff01 0xffffffff 0x4e484e45 0x00000000)
)
)
(global.set $hangLimit
@@ -399,17 +501,32 @@
)
)
)
- (f64.const 1.6293189712507804e-52)
+ (v128.const i32x4 0x00000000 0xc2800000 0x00000000 0x4eb61298)
)
- (func $func_12 (result nullref)
+ (func $func_14_invoker
+ (drop
+ (call $func_14)
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
+ (drop
+ (call $func_14)
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
+ )
+ (func $func_16
+ (local $0 exnref)
+ (local $1 f32)
+ (local $2 i64)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
- (return
- (ref.null)
- )
+ (return)
)
(global.set $hangLimit
(i32.sub
@@ -418,44 +535,30 @@
)
)
)
- (block $label$0
- (nop)
- (return
- (ref.null)
- )
- )
+ (nop)
)
- (func $func_12_invoker
- (drop
- (call $func_12)
- )
- (drop
- (call $func_12)
- )
- (drop
- (call $func_12)
- )
- (call $log-i32
- (call $hashMemory)
- )
- (drop
- (call $func_12)
- )
- (call $log-i32
- (call $hashMemory)
- )
+ (func $func_16_invoker
+ (call $func_16)
)
- (func $func_14 (param $0 nullref) (param $1 i64) (param $2 i64) (param $3 f64) (result nullref)
- (local $4 f64)
- (local $5 f32)
- (local $6 i64)
+ (func $func_18 (param $0 v128) (result nullref)
+ (local $1 i64)
+ (local $2 v128)
+ (local $3 i32)
+ (local $4 nullref)
+ (local $5 anyref)
+ (local $6 f64)
+ (local $7 (exnref anyref exnref))
+ (local $8 f32)
+ (local $9 (i32 v128))
+ (local $10 i32)
+ (local $11 (f64 exnref v128 f64 f32 v128))
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (ref.null)
+ (local.get $4)
)
)
(global.set $hangLimit
@@ -465,22 +568,43 @@
)
)
)
- (block $label$0 (result nullref)
- (nop)
- (block $label$1 (result nullref)
- (local.get $0)
+ (ref.null)
+ )
+ (func $func_19 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (i32.const 18233)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
)
)
+ (i32.const 24)
)
- (func $func_15 (result f32)
- (local $0 funcref)
+ (func $func_20 (param $0 nullref) (param $1 funcref) (param $2 anyref) (result exnref)
+ (local $3 funcref)
+ (local $4 exnref)
+ (local $5 i32)
+ (local $6 funcref)
+ (local $7 (i64 i32 v128 f32 f64))
+ (local $8 f32)
+ (local $9 v128)
+ (local $10 v128)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (f32.const -0)
+ (local.get $4)
)
)
(global.set $hangLimit
@@ -491,118 +615,162 @@
)
)
(block $label$0
- (call $log-f32
- (loop $label$1 (result f32)
- (block
- (if
- (i32.eqz
- (global.get $hangLimit)
- )
- (return
- (f32.const 0)
- )
- )
- (global.set $hangLimit
- (i32.sub
- (global.get $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block (result f32)
- (block $label$2
- (nop)
- (nop)
- )
- (br_if $label$1
- (i32.eqz
- (i32.const 31868)
+ (call $log-i32
+ (local.tee $5
+ (local.tee $5
+ (local.tee $5
+ (local.tee $5
+ (local.tee $5
+ (local.tee $5
+ (loop $label$1 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (local.get $4)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$2 (result i32)
+ (local.tee $5
+ (i32.const 12588)
+ )
+ )
+ )
+ )
+ )
)
)
- (f32.const -18446744073709551615)
)
)
)
+ (return
+ (local.get $4)
+ )
+ )
+ )
+ (func $func_20_invoker
+ (drop
+ (call $func_20
+ (ref.null)
+ (ref.func $func_12)
+ (ref.null)
+ )
+ )
+ )
+ (func $func_22 (param $0 exnref) (param $1 nullref) (result funcref anyref nullref anyref i64)
+ (block
(if
- (block $label$3
- (call $log-exnref
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (tuple.make
+ (ref.func $func_14_invoker)
(ref.null)
- )
- (loop $label$4
- (block
- (if
- (i32.eqz
- (global.get $hangLimit)
- )
- (return
- (f32.const 0)
- )
- )
- (global.set $hangLimit
- (i32.sub
- (global.get $hangLimit)
- (i32.const 1)
- )
- )
- )
- (call $log-exnref
- (ref.null)
- )
- )
- (return
- (f32.const 2101943053617856459558324e13)
+ (ref.null)
+ (ref.null)
+ (i64.const -32768)
)
)
- (block $label$5
- (call $log-i32
- (call $hashMemory)
- )
- (br_if $label$5
- (i32.eqz
- (i32.const -2147483648)
- )
- )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
)
- (nop)
)
- (return
- (f32.const 35013904)
+ )
+ (block $label$0 (result nullref nullref nullref nullref i64)
+ (block $label$1 (result nullref nullref nullref nullref i64)
+ (call $log-i64
+ (i64.const -9223372036854775808)
+ )
+ (tuple.make
+ (ref.null)
+ (ref.null)
+ (ref.null)
+ (ref.null)
+ (i64.const 1024)
+ )
)
)
)
- (func $func_15_invoker
+ (func $func_22_invoker
+ (drop
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
+ )
+ (drop
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
+ (drop
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
+ )
+ (drop
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
+ )
(drop
- (call $func_15)
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
)
(call $log-i32
(call $hashMemory)
)
(drop
- (call $func_15)
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
)
(drop
- (call $func_15)
+ (call $func_22
+ (ref.null)
+ (ref.null)
+ )
)
(call $log-i32
(call $hashMemory)
)
)
- (func $func_17 (param $0 f64) (param $1 nullref) (param $2 i32) (param $3 funcref) (param $4 nullref) (result exnref)
- (local $5 anyref)
- (local $6 exnref)
- (local $7 f32)
- (local $8 f32)
- (local $9 funcref)
- (local $10 nullref)
- (local $11 nullref)
- (local $12 f32)
+ (func $func_24 (param $0 f64) (result i32)
+ (local $1 f64)
+ (local $2 exnref)
+ (local $3 f32)
+ (local $4 v128)
+ (local $5 (exnref f32 f32 f32 i32))
+ (local $6 anyref)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (ref.null)
+ (i32.const -2147483647)
)
)
(global.set $hangLimit
@@ -612,43 +780,36 @@
)
)
)
- (local.tee $6
- (local.tee $6
- (ref.null)
+ (block $label$0
+ (nop)
+ (return
+ (i32.const -2147483647)
)
)
)
- (func $func_17_invoker
+ (func $func_24_invoker
(drop
- (call $func_17
- (f64.const 3.2330574282313187e-229)
- (ref.null)
- (i32.const 65536)
- (ref.func $func_10)
- (ref.null)
- )
- )
- (drop
- (call $func_17
- (f64.const 2.2250738585072014e-308)
- (ref.null)
- (i32.const -66)
- (ref.func $func_15_invoker)
- (ref.null)
+ (call $func_24
+ (f64.const 3.0737861764336346e-236)
)
)
(call $log-i32
(call $hashMemory)
)
)
- (func $func_19 (result exnref)
+ (func $func_26 (param $0 funcref) (param $1 funcref) (param $2 anyref) (param $3 anyref) (param $4 nullref) (result f64)
+ (local $5 i64)
+ (local $6 exnref)
+ (local $7 (funcref f64))
+ (local $8 f32)
+ (local $9 anyref)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (ref.null)
+ (f64.const 8.160763227260461e-259)
)
)
(global.set $hangLimit
@@ -658,35 +819,30 @@
)
)
)
- (select (result nullref)
- (ref.null)
- (ref.null)
- (i32.const 1)
+ (block $label$0 (result f64)
+ (nop)
+ (f64.const 3402823466385288598117041e14)
)
)
- (func $func_19_invoker
- (drop
- (call $func_19)
- )
- (call $log-i32
- (call $hashMemory)
- )
+ (func $func_26_invoker
(drop
- (call $func_19)
- )
- (call $log-i32
- (call $hashMemory)
+ (call $func_26
+ (ref.null)
+ (ref.func $func_22_invoker)
+ (ref.null)
+ (ref.null)
+ (ref.null)
+ )
)
)
- (func $func_21 (param $0 f32) (param $1 anyref) (param $2 v128) (result f64)
- (local $3 f32)
+ (func $func_28 (param $0 nullref) (result f64)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (f64.const -35)
+ (f64.const 3.859060993302007e-86)
)
)
(global.set $hangLimit
@@ -696,141 +852,73 @@
)
)
)
- (block $label$0
+ (f64.const 2147483649)
+ )
+ (func $func_29 (param $0 i32) (param $1 nullref) (param $2 funcref) (result nullref)
+ (block
(if
- (i32.const -1024)
- (block $label$1
- (if
- (loop $label$2 (result i32)
- (block
- (if
- (i32.eqz
- (global.get $hangLimit)
- )
- (return
- (f64.const 218)
- )
- )
- (global.set $hangLimit
- (i32.sub
- (global.get $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block (result i32)
- (local.set $0
- (local.get $3)
- )
- (br_if $label$2
- (i32.eqz
- (i32.const -127)
- )
- )
- (loop $label$5 (result i32)
- (block
- (if
- (i32.eqz
- (global.get $hangLimit)
- )
- (return
- (f64.const 18250224326260770977349632)
- )
- )
- (global.set $hangLimit
- (i32.sub
- (global.get $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block (result i32)
- (local.tee $2
- (loop $label$6
- (block
- (if
- (i32.eqz
- (global.get $hangLimit)
- )
- (return
- (f64.const 536870912)
- )
- )
- (global.set $hangLimit
- (i32.sub
- (global.get $hangLimit)
- (i32.const 1)
- )
- )
- )
- (block $label$7
- (br $label$1)
- )
- )
- )
- (br_if $label$5
- (i32.const 37771863)
- )
- (i32.const 1026961235)
- )
- )
- )
- )
- (local.set $0
- (f32.const 15574585428672512)
- )
- (block $label$15
- (call $log-i32
- (call $hashMemory)
- )
- )
- )
- (nop)
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (ref.null)
)
- (nop)
)
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block $label$0
+ (nop)
(return
- (f64.const 302456592)
+ (local.get $1)
)
)
)
- (func $func_21_invoker
+ (func $func_29_invoker
(drop
- (call $func_21
- (f32.const 589308224)
+ (call $func_29
+ (i32.const 2147483647)
(ref.null)
- (v128.const i32x4 0xffffff81 0x04070504 0x02007d03 0xfffffe00)
+ (ref.func $func_22_invoker)
)
)
- (drop
- (call $func_21
- (f32.const 168096624)
- (ref.null)
- (v128.const i32x4 0x4ed626fe 0x74770f63 0xdf000000 0x564a5657)
- )
+ (call $log-i32
+ (call $hashMemory)
)
(drop
- (call $func_21
- (f32.const 707669312)
+ (call $func_29
+ (i32.const -65535)
+ (ref.null)
(ref.null)
- (v128.const i32x4 0x0000001f 0xfc7f3000 0x00005c00 0x5f110d0f)
)
)
(call $log-i32
(call $hashMemory)
)
)
- (func $func_23 (param $0 v128) (result i64)
- (local $1 i32)
- (local $2 f64)
- (local $3 f64)
+ (func $func_31 (param $0 f32) (result funcref i32 i64 nullref v128)
+ (local $1 i64)
+ (local $2 (f32 f32))
+ (local $3 i32)
+ (local $4 i64)
+ (local $5 v128)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (i64.const 2147483646)
+ (tuple.make
+ (ref.func $func_24_invoker)
+ (i32.const 262144)
+ (i64.const 5580322043939276866)
+ (ref.null)
+ (v128.const i32x4 0x5e00164d 0x2c4108ff 0x0000f83a 0x00000400)
+ )
)
)
(global.set $hangLimit
@@ -841,44 +929,130 @@
)
)
(block $label$0
- (local.set $3
- (local.tee $3
- (local.get $3)
+ (nop)
+ (return
+ (tuple.make
+ (ref.null)
+ (i32.const 268435456)
+ (i64.const 6944553142512654410)
+ (ref.null)
+ (v128.const i32x4 0x7fffffff 0x00000000 0x00006444 0x00000000)
)
)
- (return
- (i64.const 110)
+ )
+ )
+ (func $func_32 (param $0 f32) (param $1 f32) (result f32)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (local.get $1)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
)
)
+ (f32.const 6.785077194130481e-28)
)
- (func $func_23_invoker
- (drop
- (call $func_23
- (v128.const i32x4 0xf0000000 0x00000046 0x00080000 0x513d3229)
+ (func $func_33 (param $0 v128) (param $1 exnref) (param $2 v128) (param $3 v128) (param $4 anyref) (param $5 funcref) (param $6 anyref) (result nullref)
+ (local $7 anyref)
+ (local $8 (nullref nullref))
+ (local $9 f64)
+ (local $10 nullref)
+ (local $11 nullref)
+ (local $12 i64)
+ (local $13 exnref)
+ (local $14 exnref)
+ (local $15 anyref)
+ (local $16 f32)
+ (local $17 f32)
+ (local $18 f64)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (ref.null)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
)
)
- (call $log-i32
- (call $hashMemory)
+ (block $label$0
+ (nop)
+ (return
+ (local.get $10)
+ )
)
+ )
+ (func $func_33_invoker
(drop
- (call $func_23
- (v128.const i32x4 0x4409256e 0xff807c7c 0x0000ffa1 0x51378000)
+ (call $func_33
+ (v128.const i32x4 0x80000001 0xffffff81 0xffff8000 0xfffffff0)
+ (ref.null)
+ (v128.const i32x4 0x46457378 0xffe0ffb8 0x0f0e0000 0x00807fff)
+ (v128.const i32x4 0x0f10001c 0x004a5b09 0x3722594b 0x53000000)
+ (ref.null)
+ (ref.null)
+ (ref.null)
)
)
- (call $log-i32
- (call $hashMemory)
+ )
+ (func $func_35 (result f64)
+ (local $0 f32)
+ (local $1 v128)
+ (local $2 funcref)
+ (local $3 anyref)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (f64.const 0)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (f64.const 2.6233847629195463e-33)
+ )
+ (func $func_35_invoker
+ (drop
+ (call $func_35)
)
)
- (func $func_25 (param $0 anyref) (param $1 nullref) (param $2 v128) (param $3 f64) (result exnref)
+ (func $func_37 (result f64)
+ (local $0 (f32 funcref f64 exnref anyref))
+ (local $1 v128)
+ (local $2 anyref)
+ (local $3 nullref)
(local $4 i64)
- (local $5 nullref)
+ (local $5 (v128 anyref v128 funcref))
+ (local $6 funcref)
+ (local $7 exnref)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (ref.null)
+ (f64.const 1799288964632556427869339e121)
)
)
(global.set $hangLimit
@@ -888,17 +1062,49 @@
)
)
)
- (ref.null)
+ (block $label$0 (result f64)
+ (call $log-exnref
+ (local.tee $7
+ (local.tee $7
+ (ref.null)
+ )
+ )
+ )
+ (call $deNan64
+ (f64.reinterpret_i64
+ (local.get $4)
+ )
+ )
+ )
)
- (func $func_26 (param $0 v128) (param $1 i64) (param $2 nullref) (param $3 i64) (param $4 v128) (result f64)
- (local $5 funcref)
+ (func $func_37_invoker
+ (drop
+ (call $func_37)
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
+ (drop
+ (call $func_37)
+ )
+ (call $log-i32
+ (call $hashMemory)
+ )
+ (drop
+ (call $func_37)
+ )
+ (drop
+ (call $func_37)
+ )
+ )
+ (func $func_39 (param $0 nullref) (param $1 funcref) (param $2 i64) (result i64)
(block
(if
(i32.eqz
(global.get $hangLimit)
)
(return
- (f64.const 18505)
+ (local.get $2)
)
)
(global.set $hangLimit
@@ -908,34 +1114,148 @@
)
)
)
- (loop $label$0 (result f64)
- (block
- (if
- (i32.eqz
- (global.get $hangLimit)
+ (block $label$0 (result i64)
+ (nop)
+ (loop $label$1 (result i64)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (i64.const -536870912)
+ )
)
- (return
- (f64.const -1)
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
)
)
- (global.set $hangLimit
- (i32.sub
- (global.get $hangLimit)
- (i32.const 1)
+ (block (result i64)
+ (block $label$2
+ (local.set $2
+ (i64.const -2097152)
+ )
+ (if
+ (i32.eqz
+ (i32.const -2048)
+ )
+ (block $label$3
+ (if
+ (i32.eqz
+ (i32.const -1)
+ )
+ (nop)
+ (nop)
+ )
+ (local.set $2
+ (if (result i64)
+ (i32.eqz
+ (i32.const 12)
+ )
+ (block $label$4 (result i64)
+ (local.set $0
+ (if (result nullref)
+ (i32.const -2147483648)
+ (block $label$5 (result nullref)
+ (i64.store8 offset=22
+ (if (result i32)
+ (i32.eqz
+ (loop $label$6 (result i32)
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (i64.const 8)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block (result i32)
+ (if
+ (i32.const 319888671)
+ (nop)
+ (loop $label$7
+ (block
+ (if
+ (i32.eqz
+ (global.get $hangLimit)
+ )
+ (return
+ (local.get $2)
+ )
+ )
+ (global.set $hangLimit
+ (i32.sub
+ (global.get $hangLimit)
+ (i32.const 1)
+ )
+ )
+ )
+ (block
+ (local.set $1
+ (local.get $1)
+ )
+ (br_if $label$7
+ (i32.const 65535)
+ )
+ (nop)
+ )
+ )
+ )
+ (br_if $label$6
+ (block $label$8
+ (nop)
+ (br $label$1)
+ )
+ )
+ (i32.const 32)
+ )
+ )
+ )
+ (block $label$9 (result i32)
+ (i32.const 640426599)
+ )
+ (i32.const -127)
+ )
+ (i64.const 1178066318063523073)
+ )
+ (ref.null)
+ )
+ (block $label$10 (result nullref)
+ (ref.null)
+ )
+ )
+ )
+ (i64.const 268435456)
+ )
+ (block $label$11 (result i64)
+ (local.get $2)
+ )
+ )
+ )
+ )
+ (block $label$12
+ (nop)
+ )
+ )
)
- )
- )
- (block (result f64)
- (block $label$1
- (nop)
- (call $log-v128
- (v128.const i32x4 0x00000000 0xc3e00000 0x00000000 0x403c0000)
+ (br_if $label$1
+ (i32.eqz
+ (i32.const 453924633)
+ )
)
+ (local.get $2)
)
- (br_if $label$0
- (i32.const 127)
- )
- (f64.const 2147483647)
)
)
)