From 991891ef329f099ab2927af173dc920bfe2f9234 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Jan 2016 17:23:30 -0800 Subject: fix memory segment reading in binary format --- src/wasm-binary.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index f86a19aa8..d2959c69d 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -1187,14 +1187,15 @@ public: if (debug) std::cerr << "== readDataSegments" << std::endl; auto num = getLEB128(); for (size_t i = 0; i < num; i++) { - auto curr = allocator.alloc(); - curr->offset = getInt32(); + Memory::Segment curr; + curr.offset = getInt32(); auto start = getInt32(); auto size = getInt32(); auto buffer = malloc(size); memcpy(buffer, &input[start], size); - curr->data = (const char*)buffer; - curr->size = size; + curr.data = (const char*)buffer; + curr.size = size; + wasm.memory.segments.push_back(curr); verifyInt8(1); // load at program start } } -- cgit v1.2.3 From 8ed5ab1e5610df34d781d346c1e50ec04d1a4036 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Jan 2016 17:25:50 -0800 Subject: current binary format has power of 2 memory, so use ceil to ensure that the conversion only increases memory, and does not make it too small for the segments --- src/wasm-binary.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index d2959c69d..aea31233d 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -390,8 +390,8 @@ public: void writeMemory() { if (wasm->memory.max == 0) return; if (debug) std::cerr << "== writeMemory" << std::endl; - o << int8_t(BinaryConsts::Memory) << int8_t(log2(wasm->memory.initial)) - << int8_t(log2(wasm->memory.max)) + o << int8_t(BinaryConsts::Memory) << int8_t(ceil(log2(wasm->memory.initial))) + << int8_t(ceil(log2(wasm->memory.max))) << int8_t(1); // export memory } -- cgit v1.2.3 From e723adfc542a0dd0440c2429fcd2e7fcfcddd4e0 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Jan 2016 21:05:46 -0800 Subject: join adjacent identical ifs --- src/wasm-binary.h | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index aea31233d..3f00b9094 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -491,8 +491,6 @@ public: << uint16_t(numLocalsByType[f32]) << uint16_t(numLocalsByType[f64]); } - } - if (function) { size_t sizePos = o.size(); o << (uint32_t)0; // placeholder, we fill in the size later when we have it // XXX int32, diverge from v8 format, to get more code to compile size_t start = o.size(); -- cgit v1.2.3 From 5019e941939734347e535e117960df8452a8b990 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Jan 2016 21:08:56 -0800 Subject: add import module.base to binary format --- src/wasm-binary.h | 8 ++++++-- test/emcc_hello_world.wast.fromBinary | 2 +- test/unit.wast.fromBinary | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 3f00b9094..72c8c0df2 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -501,6 +501,10 @@ public: assert(size <= std::numeric_limits::max()); if (debug) std::cerr << "body size: " << size << ", writing at " << sizePos << ", next starts at " << o.size() << std::endl; o.writeAt(sizePos, uint32_t(size)); // XXX int32, diverge from v8 format, to get more code to compile + } else { + // import + emitString(import->module.str); // XXX diverge + emitString(import->base.str); // from v8 } } } @@ -1094,8 +1098,8 @@ public: if (import) { auto imp = allocator.alloc(); imp->name = name; - imp->module = ENV; - imp->base = name; + imp->module = getString(); // XXX diverge + imp->base = getString(); // from v8 imp->type = type; wasm.addImport(imp); } else { diff --git a/test/emcc_hello_world.wast.fromBinary b/test/emcc_hello_world.wast.fromBinary index 36012a7ac..cb9dcf6bc 100644 --- a/test/emcc_hello_world.wast.fromBinary +++ b/test/emcc_hello_world.wast.fromBinary @@ -31,7 +31,7 @@ (import $_pthread_cleanup_push "env" "_pthread_cleanup_push" (param i32 i32)) (import $_sysconf "env" "_sysconf" (param i32) (result i32)) (import $___syscall146 "env" "___syscall146" (param i32 i32) (result i32)) - (import $f64-to-int "env" "f64-to-int" (param f64) (result i32)) + (import $f64-to-int "asm2wasm" "f64-to-int" (param f64) (result i32)) (export "stackAlloc" $stackAlloc) (export "stackSave" $stackSave) (export "stackRestore" $stackRestore) diff --git a/test/unit.wast.fromBinary b/test/unit.wast.fromBinary index 9c2dfa3f2..472c2800a 100644 --- a/test/unit.wast.fromBinary +++ b/test/unit.wast.fromBinary @@ -10,8 +10,8 @@ (type $5 (func (result i32))) (type $6 (func (param i32) (result i32))) (import $_emscripten_asm_const_vi "env" "_emscripten_asm_const_vi") - (import $f64-to-int "env" "f64-to-int" (param f64) (result i32)) - (import $f64-rem "env" "f64-rem" (param f64 f64) (result f64)) + (import $f64-to-int "asm2wasm" "f64-to-int" (param f64) (result i32)) + (import $f64-rem "asm2wasm" "f64-rem" (param f64 f64) (result f64)) (export "big_negative" $big_negative) (table $z $big_negative $z $z $w $w $importedDoubles $w $z $cneg) (func $big_negative -- cgit v1.2.3 From e81ed44795bcb3e3c181177009cb6390d1b0a555 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 29 Jan 2016 14:54:49 -0800 Subject: fix conversion opcodes in binary format --- src/wasm-binary.h | 8 ++++---- test/kitchen_sink.wast.fromBinary | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 72c8c0df2..fa7f6ebaa 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -807,10 +807,10 @@ public: case ExtendSInt32: o << int8_t(BinaryConsts::I64SConvertI32); break; case ExtendUInt32: o << int8_t(BinaryConsts::I64UConvertI32); break; case WrapInt64: o << int8_t(BinaryConsts::I32ConvertI64); break; - case TruncUFloat32: o << int8_t(curr->type == i32 ? BinaryConsts::I32UConvertF32 : BinaryConsts::I64UConvertF32); break; - case TruncSFloat32: o << int8_t(curr->type == i32 ? BinaryConsts::I32SConvertF32 : BinaryConsts::I64SConvertF32); break; - case TruncUFloat64: o << int8_t(curr->type == i32 ? BinaryConsts::I32UConvertF64 : BinaryConsts::I64UConvertF64); break; - case TruncSFloat64: o << int8_t(curr->type == i32 ? BinaryConsts::I32SConvertF64 : BinaryConsts::I64SConvertF64); break; + case TruncUFloat32: o << int8_t(curr->type == i32 ? BinaryConsts::F32UConvertI32 : BinaryConsts::F32UConvertI64); break; + case TruncSFloat32: o << int8_t(curr->type == i32 ? BinaryConsts::F32SConvertI32 : BinaryConsts::F32SConvertI64); break; + case TruncUFloat64: o << int8_t(curr->type == i32 ? BinaryConsts::F64UConvertI32 : BinaryConsts::F64UConvertI64); break; + case TruncSFloat64: o << int8_t(curr->type == i32 ? BinaryConsts::F64SConvertI32 : BinaryConsts::F64SConvertI64); break; case ConvertUInt32: o << int8_t(curr->type == f32 ? BinaryConsts::I32UConvertF32 : BinaryConsts::I32UConvertF64); break; case ConvertSInt32: o << int8_t(curr->type == f32 ? BinaryConsts::I32SConvertF32 : BinaryConsts::I32SConvertF64); break; case ConvertUInt64: o << int8_t(curr->type == f32 ? BinaryConsts::I64UConvertF32 : BinaryConsts::I64UConvertF64); break; diff --git a/test/kitchen_sink.wast.fromBinary b/test/kitchen_sink.wast.fromBinary index 9003516cb..9aa7ba8ec 100644 --- a/test/kitchen_sink.wast.fromBinary +++ b/test/kitchen_sink.wast.fromBinary @@ -353,31 +353,31 @@ (f64.const 10) (f64.const 10) ) - (f32.convert_s/i32 + (i32.trunc_s/f32 (f32.const 10) ) - (f64.convert_s/i32 + (i64.trunc_s/f32 (f64.const 10) ) - (f32.convert_u/i32 + (i32.trunc_u/f32 (f32.const 10) ) - (f64.convert_u/i32 + (i64.trunc_u/f32 (f64.const 10) ) (i32.wrap/i64 (i64.const 100) ) - (f32.convert_s/i64 + (i32.trunc_s/f64 (f32.const 10) ) - (f64.convert_s/i64 + (i64.trunc_s/f64 (f64.const 10) ) - (f32.convert_u/i64 + (i32.trunc_u/f64 (f32.const 10) ) - (f64.convert_u/i64 + (i64.trunc_u/f64 (f64.const 10) ) (i64.extend_s/i32 -- cgit v1.2.3 From 6537e5205b9d2e319dc0d7642aebba2cd32a2790 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 29 Jan 2016 15:03:28 -0800 Subject: fix more conversion opcodes --- src/wasm-binary.h | 8 ++++---- test/kitchen_sink.wast.fromBinary | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index fa7f6ebaa..ccd6d9276 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -1490,12 +1490,12 @@ public: case BinaryConsts::I32ConvertI64: curr->op = WrapInt64; curr->type = i32; break; case BinaryConsts::F32UConvertI32: curr->op = TruncUFloat32; curr->type = i32; break; - case BinaryConsts::F64UConvertI32: curr->op = TruncUFloat32; curr->type = i64; break; + case BinaryConsts::F64UConvertI32: curr->op = TruncUFloat64; curr->type = i32; break; case BinaryConsts::F32SConvertI32: curr->op = TruncSFloat32; curr->type = i32; break; - case BinaryConsts::F64SConvertI32: curr->op = TruncSFloat32; curr->type = i64; break; - case BinaryConsts::F32UConvertI64: curr->op = TruncUFloat64; curr->type = i32; break; + case BinaryConsts::F64SConvertI32: curr->op = TruncSFloat64; curr->type = i32; break; + case BinaryConsts::F32UConvertI64: curr->op = TruncUFloat32; curr->type = i64; break; case BinaryConsts::F64UConvertI64: curr->op = TruncUFloat64; curr->type = i64; break; - case BinaryConsts::F32SConvertI64: curr->op = TruncSFloat64; curr->type = i32; break; + case BinaryConsts::F32SConvertI64: curr->op = TruncSFloat32; curr->type = i64; break; case BinaryConsts::F64SConvertI64: curr->op = TruncSFloat64; curr->type = i64; break; case BinaryConsts::F32Trunc: curr->op = Trunc; curr->type = f32; break; diff --git a/test/kitchen_sink.wast.fromBinary b/test/kitchen_sink.wast.fromBinary index 9aa7ba8ec..9bdde920f 100644 --- a/test/kitchen_sink.wast.fromBinary +++ b/test/kitchen_sink.wast.fromBinary @@ -356,25 +356,25 @@ (i32.trunc_s/f32 (f32.const 10) ) - (i64.trunc_s/f32 + (i32.trunc_s/f64 (f64.const 10) ) (i32.trunc_u/f32 (f32.const 10) ) - (i64.trunc_u/f32 + (i32.trunc_u/f64 (f64.const 10) ) (i32.wrap/i64 (i64.const 100) ) - (i32.trunc_s/f64 + (i64.trunc_s/f32 (f32.const 10) ) (i64.trunc_s/f64 (f64.const 10) ) - (i32.trunc_u/f64 + (i64.trunc_u/f32 (f32.const 10) ) (i64.trunc_u/f64 -- cgit v1.2.3 From 2ecdaa083088588e39705bdbe5d78338283fa9e8 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 29 Jan 2016 15:09:08 -0800 Subject: fix ConvertSInt64 in binary format --- src/wasm-binary.h | 2 +- test/kitchen_sink.wast.fromBinary | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index ccd6d9276..192a8cdd7 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -814,7 +814,7 @@ public: case ConvertUInt32: o << int8_t(curr->type == f32 ? BinaryConsts::I32UConvertF32 : BinaryConsts::I32UConvertF64); break; case ConvertSInt32: o << int8_t(curr->type == f32 ? BinaryConsts::I32SConvertF32 : BinaryConsts::I32SConvertF64); break; case ConvertUInt64: o << int8_t(curr->type == f32 ? BinaryConsts::I64UConvertF32 : BinaryConsts::I64UConvertF64); break; - case ConvertSInt64: o << int8_t(curr->type == f32 ? BinaryConsts::I64UConvertF32 : BinaryConsts::I64UConvertF64); break; + case ConvertSInt64: o << int8_t(curr->type == f32 ? BinaryConsts::I64SConvertF32 : BinaryConsts::I64SConvertF64); break; case DemoteFloat64: o << int8_t(BinaryConsts::F32ConvertF64); break; case PromoteFloat32: o << int8_t(BinaryConsts::F64ConvertF32); break; case ReinterpretFloat: o << int8_t(curr->type == f32 ? BinaryConsts::F32ReinterpretI32 : BinaryConsts::F64ReinterpretI64); break; diff --git a/test/kitchen_sink.wast.fromBinary b/test/kitchen_sink.wast.fromBinary index 9bdde920f..a4a28fcef 100644 --- a/test/kitchen_sink.wast.fromBinary +++ b/test/kitchen_sink.wast.fromBinary @@ -392,7 +392,7 @@ (f32.convert_u/i32 (i32.const 10) ) - (f32.convert_u/i64 + (f32.convert_s/i64 (i64.const 100) ) (f32.convert_u/i64 @@ -410,7 +410,7 @@ (f64.convert_u/i32 (i32.const 10) ) - (f64.convert_u/i64 + (f64.convert_s/i64 (i64.const 100) ) (f64.convert_u/i64 -- cgit v1.2.3 From c4b9d323f28109a4e918d7f1d31e11931c4aaf58 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 29 Jan 2016 15:44:16 -0800 Subject: support exports by a different name in binary format --- src/wasm-binary.h | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 192a8cdd7..e8ba3f698 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -462,6 +462,10 @@ public: if (debug) std::cerr << "== writeFunctions" << std::endl; size_t total = wasm->imports.size() + wasm->functions.size(); o << int8_t(BinaryConsts::Functions) << LEB128(total); + std::map exportedFunctions; + for (auto* e : wasm->exports) { + exportedFunctions[e->value] = e->name; + } for (size_t i = 0; i < total; i++) { if (debug) std::cerr << "write one at" << o.size() << std::endl; Import* import = i < wasm->imports.size() ? wasm->imports[i] : nullptr; @@ -477,12 +481,14 @@ public: numLocalsByType.clear(); } if (debug) std::cerr << "writing" << name << std::endl; + bool export_ = exportedFunctions.count(name) > 0; o << int8_t(BinaryConsts::Named | (BinaryConsts::Import * !!import) | (BinaryConsts::Locals * (function && function->locals.size() > 0)) | - (BinaryConsts::Export * (wasm->exportsMap.count(name) > 0))); + (BinaryConsts::Export * export_)); o << getFunctionTypeIndex(type); emitString(name.str); + if (export_) emitString(exportedFunctions[name].str); // XXX addition to v8 binary format if (function) { mapLocals(function); if (function->locals.size() > 0) { @@ -1093,6 +1099,13 @@ public: bool locals = data & BinaryConsts::Locals; bool export_ = data & BinaryConsts::Export; Name name = getString(); + if (export_) { // XXX addition to v8 binary format + Name exportName = getString(); + auto e = allocator.alloc(); + e->name = exportName; + e->value = name; + wasm.addExport(e); + } if (debug) std::cerr << "reading" << name << std::endl; mappedFunctions.push_back(name); if (import) { @@ -1136,12 +1149,6 @@ public: func->body = nullptr; // will be filled later. but we do have the name and the type already. wasm.addFunction(func); } - if (export_) { - auto e = allocator.alloc(); - e->name = name; - e->value = name; - wasm.addExport(e); - } } } -- cgit v1.2.3 From ef2b1b630496dc695de5f9b722576682580a5a3f Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 29 Jan 2016 16:53:47 -0800 Subject: if functions are already type-named, do not change their types --- src/wasm-binary.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index e8ba3f698..9db23d25d 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -366,7 +366,9 @@ class WasmBinaryWriter : public WasmVisitor { void prepare() { // we need function types for all our functions for (auto* func : wasm->functions) { - func->type = ensureFunctionType(getSig(func), wasm, allocator)->name; + if (func->type.isNull()) { + func->type = ensureFunctionType(getSig(func), wasm, allocator)->name; + } } } -- cgit v1.2.3 From 6c52601dde6699e0655c9a61dc2df3089e0a0204 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 29 Jan 2016 17:00:40 -0800 Subject: fix I8Const usage --- src/wasm-binary.h | 6 +- test/emcc_O2_hello_world.wast.fromBinary | 140 +++++------ test/emcc_hello_world.wast.fromBinary | 386 +++++++++++++++---------------- test/unit.wast.fromBinary | 4 +- 4 files changed, 268 insertions(+), 268 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 9db23d25d..757551c12 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -776,9 +776,9 @@ public: if (debug) std::cerr << "zz node: Const" << std::endl; switch (curr->type) { case i32: { - int32_t value = curr->value.i32; - if (value >= -128 && value <= 127) { - o << int8_t(BinaryConsts::I8Const) << int8_t(value); + uint32_t value = curr->value.i32; + if (value <= 255) { + o << int8_t(BinaryConsts::I8Const) << uint8_t(value); break; } o << int8_t(BinaryConsts::I32Const) << value; diff --git a/test/emcc_O2_hello_world.wast.fromBinary b/test/emcc_O2_hello_world.wast.fromBinary index 6bf36ba80..d69d6e577 100644 --- a/test/emcc_O2_hello_world.wast.fromBinary +++ b/test/emcc_O2_hello_world.wast.fromBinary @@ -160,7 +160,7 @@ (get_local $var$0) (i32.const 11) ) - (i32.const 248) + (i32.const -8) ) ) ) @@ -291,7 +291,7 @@ (i32.const 1) (get_local $var$5) ) - (i32.const 255) + (i32.const -1) ) ) ) @@ -389,7 +389,7 @@ (get_local $var$6) ) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$6 @@ -580,7 +580,7 @@ (i32.const 1) (get_local $var$16) ) - (i32.const 255) + (i32.const -1) ) ) ) @@ -789,7 +789,7 @@ (get_local $var$3) ) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$3 @@ -899,7 +899,7 @@ (i32.const 4) ) ) - (i32.const 248) + (i32.const -8) ) (get_local $var$1) ) @@ -966,7 +966,7 @@ (i32.const 4) ) ) - (i32.const 248) + (i32.const -8) ) (get_local $var$1) ) @@ -1326,7 +1326,7 @@ (i32.const 1) (get_local $var$11) ) - (i32.const 255) + (i32.const -1) ) ) ) @@ -1735,7 +1735,7 @@ (get_local $var$0) (i32.const 0) ) - (i32.const 191) + (i32.const -65) ) (block $label$52 (set_local $var$6 @@ -1747,7 +1747,7 @@ (set_local $var$4 (i32.and (get_local $var$6) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$14 @@ -1950,7 +1950,7 @@ (i32.const 4) ) ) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$8 @@ -2159,7 +2159,7 @@ (get_local $var$13) ) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$13 @@ -2314,7 +2314,7 @@ (i32.const 4) ) ) - (i32.const 248) + (i32.const -8) ) (get_local $var$4) ) @@ -2756,7 +2756,7 @@ (i32.const 1) (get_local $var$6) ) - (i32.const 255) + (i32.const -1) ) ) ) @@ -3327,7 +3327,7 @@ (i32.const 4) ) ) - (i32.const 248) + (i32.const -8) ) (get_local $var$42) ) @@ -3586,7 +3586,7 @@ ) ) (set_local $var$30 - (i32.const 255) + (i32.const -1) ) ) ) @@ -3812,7 +3812,7 @@ (i32.and (i32.add (get_local $var$52) - (i32.const 255) + (i32.const -1) ) (get_local $var$52) ) @@ -3829,11 +3829,11 @@ ) (i32.store align=4 (i32.const 660) - (i32.const 255) + (i32.const -1) ) (i32.store align=4 (i32.const 664) - (i32.const 255) + (i32.const -1) ) (i32.store align=4 (i32.const 668) @@ -3850,7 +3850,7 @@ (call_import $_time (i32.const 0) ) - (i32.const 240) + (i32.const -16) ) (i32.const 1431655768) ) @@ -4117,7 +4117,7 @@ (if (i32.ne (get_local $var$44) - (i32.const 255) + (i32.const -1) ) (block $label$141 (set_local $var$57 @@ -4167,7 +4167,7 @@ ) (i32.ne (get_local $var$51) - (i32.const 255) + (i32.const -1) ) ) (i32.const 0) @@ -4184,7 +4184,7 @@ (set_local $var$44 (i32.add (get_local $var$49) - (i32.const 255) + (i32.const -1) ) ) (if_else @@ -4362,7 +4362,7 @@ ) (i32.ne (get_local $var$59) - (i32.const 255) + (i32.const -1) ) ) ) @@ -4404,7 +4404,7 @@ (call_import $_sbrk (get_local $var$4) ) - (i32.const 255) + (i32.const -1) ) (block $label$154 (call_import $_sbrk @@ -4430,7 +4430,7 @@ (if (i32.ne (get_local $var$59) - (i32.const 255) + (i32.const -1) ) (block $label$156 (set_local $var$57 @@ -4509,11 +4509,11 @@ (i32.and (i32.ne (get_local $var$62) - (i32.const 255) + (i32.const -1) ) (i32.ne (get_local $var$42) - (i32.const 255) + (i32.const -1) ) ) ) @@ -5071,7 +5071,7 @@ (set_local $var$56 (i32.and (get_local $var$61) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$55 @@ -5427,7 +5427,7 @@ (i32.const 1) (get_local $var$54) ) - (i32.const 255) + (i32.const -1) ) ) ) @@ -5636,7 +5636,7 @@ (i32.const 1) (get_local $var$55) ) - (i32.const 255) + (i32.const -1) ) ) ) @@ -5741,7 +5741,7 @@ (i32.load align=4 (get_local $var$55) ) - (i32.const 254) + (i32.const -2) ) ) (i32.store align=4 @@ -6137,7 +6137,7 @@ (i32.const 4) ) ) - (i32.const 248) + (i32.const -8) ) (get_local $var$78) ) @@ -6447,7 +6447,7 @@ (set_local $var$43 (i32.add (get_local $var$85) - (i32.const 209) + (i32.const -47) ) ) (set_local $var$52 @@ -6541,7 +6541,7 @@ (i32.sub (i32.add (get_local $var$58) - (i32.const 216) + (i32.const -40) ) (get_local $var$60) ) @@ -6693,7 +6693,7 @@ (i32.load align=4 (get_local $var$49) ) - (i32.const 254) + (i32.const -2) ) ) (i32.store align=4 @@ -7066,7 +7066,7 @@ (i32.const 4) ) ) - (i32.const 248) + (i32.const -8) ) (get_local $var$62) ) @@ -7316,7 +7316,7 @@ ) (i32.store align=4 (i32.const 208) - (i32.const 255) + (i32.const -1) ) (set_local $var$4 (i32.const 0) @@ -7399,7 +7399,7 @@ (i32.sub (i32.add (get_local $var$58) - (i32.const 216) + (i32.const -40) ) (get_local $var$61) ) @@ -7574,7 +7574,7 @@ (set_local $var$1 (i32.add (get_local $var$0) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$2 @@ -7599,7 +7599,7 @@ (i32.load align=4 (i32.add (get_local $var$0) - (i32.const 252) + (i32.const -4) ) ) ) @@ -7619,7 +7619,7 @@ (set_local $var$4 (i32.and (get_local $var$3) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$5 @@ -7723,7 +7723,7 @@ (get_local $var$9) (i32.and (get_local $var$10) - (i32.const 254) + (i32.const -2) ) ) (i32.store align=4 @@ -7839,7 +7839,7 @@ (i32.const 1) (get_local $var$10) ) - (i32.const 255) + (i32.const -1) ) ) ) @@ -8202,7 +8202,7 @@ (i32.const 1) (get_local $var$9) ) - (i32.const 255) + (i32.const -1) ) ) ) @@ -8568,7 +8568,7 @@ (i32.add (i32.and (get_local $var$1) - (i32.const 248) + (i32.const -8) ) (get_local $var$12) ) @@ -8878,7 +8878,7 @@ (i32.const 1) (get_local $var$21) ) - (i32.const 255) + (i32.const -1) ) ) ) @@ -9134,7 +9134,7 @@ (i32.const 1) (get_local $var$2) ) - (i32.const 255) + (i32.const -1) ) ) ) @@ -9243,7 +9243,7 @@ (get_local $var$4) (i32.and (get_local $var$1) - (i32.const 254) + (i32.const -2) ) ) (i32.store align=4 @@ -9590,7 +9590,7 @@ (i32.const 4) ) ) - (i32.const 248) + (i32.const -8) ) (get_local $var$28) ) @@ -9831,7 +9831,7 @@ (i32.load align=4 (i32.const 208) ) - (i32.const 255) + (i32.const -1) ) ) (i32.store align=4 @@ -9873,7 +9873,7 @@ ) (i32.store align=4 (i32.const 208) - (i32.const 255) + (i32.const -1) ) (br $label$0) ) @@ -10219,7 +10219,7 @@ (set_local $var$21 (i32.add (get_local $var$6) - (i32.const 255) + (i32.const -1) ) ) ) @@ -10483,7 +10483,7 @@ (i32.const 75) ) ) - (i32.const 255) + (i32.const -1) ) (block $label$7 (set_local $var$3 @@ -10515,7 +10515,7 @@ (set_local $var$13 (i32.add (get_local $var$3) - (i32.const 255) + (i32.const -1) ) ) (if_else @@ -10659,7 +10659,7 @@ (i32.const 76) ) ) - (i32.const 255) + (i32.const -1) ) (block $label$3 (set_local $var$1 @@ -10750,7 +10750,7 @@ (i32.const 76) ) ) - (i32.const 255) + (i32.const -1) ) (set_local $var$6 (call $___lockfile @@ -11117,7 +11117,7 @@ ) ) (set_local $var$9 - (i32.const 255) + (i32.const -1) ) ) (block $label$2 @@ -11223,7 +11223,7 @@ ) ) (set_local $var$9 - (i32.const 255) + (i32.const -1) ) ) ) @@ -11301,7 +11301,7 @@ (i32.const 0) ) (set_local $var$3 - (i32.const 255) + (i32.const -1) ) (block $label$2 (set_local $var$4 @@ -11610,7 +11610,7 @@ (get_local $var$3) (i32.xor (i32.const 3) - (i32.const 255) + (i32.const -1) ) ) ) @@ -11731,7 +11731,7 @@ (i32.const 76) ) ) - (i32.const 255) + (i32.const -1) ) (set_local $var$2 (call $___lockfile @@ -11922,10 +11922,10 @@ (block $label$1 (i32.store align=4 (get_local $var$5) - (i32.const 255) + (i32.const -1) ) (set_local $var$6 - (i32.const 255) + (i32.const -1) ) ) (set_local $var$6 @@ -12045,7 +12045,7 @@ ) ) (set_local $var$3 - (i32.const 255) + (i32.const -1) ) ) ) @@ -12073,7 +12073,7 @@ (i32.const 76) ) ) - (i32.const 255) + (i32.const -1) ) (block $label$1 (set_local $var$5 @@ -12223,7 +12223,7 @@ (get_local $var$0) (i32.const 75) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$4 @@ -12469,7 +12469,7 @@ ) ) (set_local $var$1 - (i32.const 255) + (i32.const -1) ) ) (set_local $var$1 @@ -12519,7 +12519,7 @@ ) (i32.const 15) ) - (i32.const 240) + (i32.const -16) ) ) (get_local $var$1) @@ -12580,7 +12580,7 @@ (i32.const 1) (get_local $var$1) ) - (i32.const 255) + (i32.const -1) ) ) (func $dynCall_ii (type $4) (param $var$0 i32) (param $var$1 i32) (result i32) diff --git a/test/emcc_hello_world.wast.fromBinary b/test/emcc_hello_world.wast.fromBinary index 2046930b1..394cffd6d 100644 --- a/test/emcc_hello_world.wast.fromBinary +++ b/test/emcc_hello_world.wast.fromBinary @@ -81,7 +81,7 @@ ) (i32.const 15) ) - (i32.const 240) + (i32.const -16) ) ) (if @@ -468,7 +468,7 @@ (set_local $var$11 (i32.add (get_local $var$6) - (i32.const 192) + (i32.const -64) ) ) (set_local $var$10 @@ -767,7 +767,7 @@ (set_local $var$6 (i32.add (get_local $var$9) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$17 @@ -1070,7 +1070,7 @@ ) (i32.store8 align=1 (get_local $var$9) - (i32.const 255) + (i32.const -1) ) ) ) @@ -1218,10 +1218,10 @@ (block $label$1 (i32.store align=4 (get_local $var$10) - (i32.const 255) + (i32.const -1) ) (set_local $var$5 - (i32.const 255) + (i32.const -1) ) ) (block $label$2 @@ -1371,7 +1371,7 @@ (set_local $var$14 (i32.gt_s (get_local $var$4) - (i32.const 255) + (i32.const -1) ) ) (if_else @@ -1522,7 +1522,7 @@ (set_local $var$13 (i32.gt_s (get_local $var$1) - (i32.const 255) + (i32.const -1) ) ) (if @@ -2071,7 +2071,7 @@ (set_local $var$36 (i32.add (get_local $var$49) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$48 @@ -2484,7 +2484,7 @@ (if_else (get_local $var$23) (set_local $var$35 - (i32.const 255) + (i32.const -1) ) (block $label$4 (set_local $var$28 @@ -2501,7 +2501,7 @@ (set_local $var$24 (i32.gt_s (get_local $var$4) - (i32.const 255) + (i32.const -1) ) ) (if_else @@ -2560,7 +2560,7 @@ (set_local $var$14 (i32.and (get_local $var$5) - (i32.const 223) + (i32.const -33) ) ) (i32.store align=4 @@ -2702,7 +2702,7 @@ (set_local $var$3 (if_else (get_local $var$38) - (i32.const 255) + (i32.const -1) (get_local $var$20) ) ) @@ -2768,7 +2768,7 @@ (if_else (get_local $var$39) (get_local $var$33) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$32 @@ -3014,7 +3014,7 @@ ) (i32.const 24) ) - (i32.const 255) + (i32.const -1) ) ) (block $label$7 @@ -3053,7 +3053,7 @@ (set_local $var$34 (i32.add (get_local $var$27) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$19 @@ -3411,7 +3411,7 @@ (get_local $var$14) ) (set_local $var$16 - (i32.const 255) + (i32.const -1) ) ) ) @@ -3854,7 +3854,7 @@ (i32.const 84) ) (set_local $var$42 - (i32.const 255) + (i32.const -1) ) (br $label$1) ) @@ -4067,7 +4067,7 @@ (set_local $var$22 (i32.add (get_local $var$31) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$6 @@ -4310,7 +4310,7 @@ (set_local $var$46 (i32.add (get_local $var$33) - (i32.const 252) + (i32.const -4) ) ) (set_local $var$16 @@ -4448,7 +4448,7 @@ (set_local $var$23 (i32.add (get_local $var$35) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$52 @@ -4540,7 +4540,7 @@ (get_local $var$4) ) (set_local $var$3 - (i32.const 255) + (i32.const -1) ) ) (set_local $var$3 @@ -4654,7 +4654,7 @@ (if_else (get_local $var$17) (set_local $var$11 - (i32.const 255) + (i32.const -1) ) (set_local $var$22 (i32.const 3) @@ -6006,7 +6006,7 @@ ) (set_local $var$886 (i32.sub - (i32.const 254) + (i32.const -2) (get_local $var$866) ) ) @@ -6054,7 +6054,7 @@ (set_local $var$431 (i32.gt_s (get_local $var$549) - (i32.const 255) + (i32.const -1) ) ) (block $label$4 @@ -6084,7 +6084,7 @@ (i32.const 75) ) (set_local $var$550 - (i32.const 255) + (i32.const -1) ) (br $label$4) ) @@ -6413,7 +6413,7 @@ (set_local $var$723 (i32.add (get_local $var$586) - (i32.const 208) + (i32.const -48) ) ) (set_local $var$716 @@ -6475,7 +6475,7 @@ (if_else (get_local $var$474) (get_local $var$723) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$15 @@ -6501,7 +6501,7 @@ (get_local $var$234) ) (set_local $var$397 - (i32.const 255) + (i32.const -1) ) (set_local $var$746 (get_local $var$743) @@ -6523,7 +6523,7 @@ (set_local $var$267 (i32.and (get_local $var$588) - (i32.const 224) + (i32.const -32) ) ) (set_local $var$509 @@ -6553,7 +6553,7 @@ (set_local $var$927 (i32.add (get_local $var$589) - (i32.const 224) + (i32.const -32) ) ) (set_local $var$837 @@ -6601,7 +6601,7 @@ (set_local $var$929 (i32.add (get_local $var$590) - (i32.const 224) + (i32.const -32) ) ) (set_local $var$839 @@ -6639,7 +6639,7 @@ (set_local $var$34 (i32.and (get_local $var$587) - (i32.const 224) + (i32.const -32) ) ) (set_local $var$508 @@ -6733,7 +6733,7 @@ (set_local $var$730 (i32.add (get_local $var$593) - (i32.const 208) + (i32.const -48) ) ) (set_local $var$722 @@ -6804,7 +6804,7 @@ (set_local $var$934 (i32.add (get_local $var$594) - (i32.const 208) + (i32.const -48) ) ) (set_local $var$657 @@ -6888,7 +6888,7 @@ ) (block $label$44 (set_local $var$821 - (i32.const 255) + (i32.const -1) ) (br $label$1) ) @@ -6961,7 +6961,7 @@ (set_local $var$632 (i32.xor (get_local $var$633) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$199 @@ -7062,7 +7062,7 @@ (set_local $var$725 (i32.add (get_local $var$565) - (i32.const 208) + (i32.const -48) ) ) (set_local $var$717 @@ -7123,7 +7123,7 @@ (set_local $var$727 (i32.add (get_local $var$568) - (i32.const 208) + (i32.const -48) ) ) (set_local $var$719 @@ -7171,7 +7171,7 @@ (get_local $var$434) (block $label$55 (set_local $var$821 - (i32.const 255) + (i32.const -1) ) (br $label$1) ) @@ -7271,7 +7271,7 @@ (set_local $var$726 (i32.add (get_local $var$566) - (i32.const 208) + (i32.const -48) ) ) (set_local $var$718 @@ -7343,7 +7343,7 @@ (set_local $var$728 (i32.add (get_local $var$569) - (i32.const 208) + (i32.const -48) ) ) (set_local $var$720 @@ -7406,7 +7406,7 @@ (set_local $var$729 (i32.add (get_local $var$575) - (i32.const 208) + (i32.const -48) ) ) (set_local $var$721 @@ -7477,7 +7477,7 @@ (set_local $var$910 (i32.add (get_local $var$577) - (i32.const 208) + (i32.const -48) ) ) (set_local $var$656 @@ -7544,7 +7544,7 @@ ) (block $label$70 (set_local $var$821 - (i32.const 255) + (i32.const -1) ) (br $label$1) ) @@ -7599,7 +7599,7 @@ (set_local $var$628 (i32.xor (get_local $var$629) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$230 @@ -7648,7 +7648,7 @@ (get_local $var$680) ) (set_local $var$790 - (i32.const 255) + (i32.const -1) ) ) ) @@ -7678,7 +7678,7 @@ (set_local $var$912 (i32.add (get_local $var$578) - (i32.const 191) + (i32.const -65) ) ) (set_local $var$441 @@ -7694,7 +7694,7 @@ (get_local $var$441) (block $label$77 (set_local $var$821 - (i32.const 255) + (i32.const -1) ) (br $label$1) ) @@ -7731,7 +7731,7 @@ (set_local $var$913 (i32.add (get_local $var$579) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$442 @@ -7791,7 +7791,7 @@ (get_local $var$964) (block $label$80 (set_local $var$821 - (i32.const 255) + (i32.const -1) ) (br $label$1) ) @@ -7811,7 +7811,7 @@ (set_local $var$445 (i32.gt_s (get_local $var$397) - (i32.const 255) + (i32.const -1) ) ) (block $label$81 @@ -7821,7 +7821,7 @@ (get_local $var$445) (block $label$82 (set_local $var$821 - (i32.const 255) + (i32.const -1) ) (br $label$1) ) @@ -8002,7 +8002,7 @@ (set_local $var$376 (i32.and (get_local $var$581) - (i32.const 223) + (i32.const -33) ) ) (set_local $var$937 @@ -8484,7 +8484,7 @@ (set_local $var$671 (i32.add (get_local $var$828) - (i32.const 255) + (i32.const -1) ) ) (i32.store8 align=1 @@ -8992,7 +8992,7 @@ (get_local $var$1007) ) (set_local $var$795 - (i32.const 255) + (i32.const -1) ) (set_local $var$1034 (i32.const 86) @@ -9270,7 +9270,7 @@ (set_local $var$605 (i32.add (get_local $var$127) - (i32.const 255) + (i32.const -1) ) ) (i32.store align=4 @@ -9370,7 +9370,7 @@ (set_local $var$608 (i32.add (get_local $var$816) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$1051 @@ -9568,7 +9568,7 @@ (set_local $var$674 (i32.add (get_local $var$620) - (i32.const 255) + (i32.const -1) ) ) (i32.store8 align=1 @@ -9590,7 +9590,7 @@ (set_local $var$675 (i32.add (get_local $var$620) - (i32.const 254) + (i32.const -2) ) ) (i32.store8 align=1 @@ -10036,7 +10036,7 @@ (set_local $var$915 (i32.add (get_local $var$143) - (i32.const 228) + (i32.const -28) ) ) (i32.store align=4 @@ -10193,7 +10193,7 @@ (set_local $var$595 (i32.add (get_local $var$1023) - (i32.const 252) + (i32.const -4) ) ) (set_local $var$453 @@ -10286,7 +10286,7 @@ (set_local $var$596 (i32.add (get_local $var$597) - (i32.const 252) + (i32.const -4) ) ) (set_local $var$454 @@ -10339,7 +10339,7 @@ (set_local $var$691 (i32.add (get_local $var$292) - (i32.const 252) + (i32.const -4) ) ) (i32.store align=4 @@ -10384,7 +10384,7 @@ (set_local $var$409 (i32.add (get_local $var$1025) - (i32.const 252) + (i32.const -4) ) ) (set_local $var$157 @@ -10497,7 +10497,7 @@ (get_local $var$335) (i32.const 9) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$336 @@ -10567,7 +10567,7 @@ (set_local $var$918 (i32.add (get_local $var$838) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$842 @@ -11048,7 +11048,7 @@ (set_local $var$763 (i32.add (get_local $var$167) - (i32.const 247) + (i32.const -9) ) ) (set_local $var$472 @@ -11078,7 +11078,7 @@ (get_local $var$340) (i32.const 9) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$921 @@ -11102,7 +11102,7 @@ (get_local $var$340) (i32.const 9) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$733 @@ -11188,7 +11188,7 @@ (i32.const 0) ) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$983 @@ -11242,7 +11242,7 @@ (i32.const 0) ) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$388 @@ -11270,7 +11270,7 @@ (get_local $var$648) (i32.const 2) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$480 @@ -11457,7 +11457,7 @@ (set_local $var$701 (i32.add (get_local $var$600) - (i32.const 252) + (i32.const -4) ) ) (i32.store align=4 @@ -11482,7 +11482,7 @@ (set_local $var$702 (i32.add (get_local $var$298) - (i32.const 252) + (i32.const -4) ) ) (i32.store align=4 @@ -11755,7 +11755,7 @@ (set_local $var$413 (i32.add (get_local $var$1031) - (i32.const 252) + (i32.const -4) ) ) (set_local $var$172 @@ -11818,7 +11818,7 @@ (set_local $var$502 (i32.gt_s (get_local $var$617) - (i32.const 251) + (i32.const -5) ) ) (set_local $var$778 @@ -11833,13 +11833,13 @@ (set_local $var$606 (i32.add (get_local $var$937) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$345 (i32.add (get_local $var$10) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$924 @@ -11859,13 +11859,13 @@ (set_local $var$925 (i32.add (get_local $var$937) - (i32.const 254) + (i32.const -2) ) ) (set_local $var$607 (i32.add (get_local $var$10) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$799 @@ -11913,7 +11913,7 @@ (set_local $var$416 (i32.add (get_local $var$1032) - (i32.const 252) + (i32.const -4) ) ) (set_local $var$174 @@ -11945,7 +11945,7 @@ ) (i32.const 10) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$506 @@ -11997,7 +11997,7 @@ (i32.const 0) ) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$507 @@ -12068,7 +12068,7 @@ (set_local $var$768 (i32.add (get_local $var$175) - (i32.const 247) + (i32.const -9) ) ) (if_else @@ -12303,7 +12303,7 @@ (set_local $var$704 (i32.add (get_local $var$622) - (i32.const 255) + (i32.const -1) ) ) (i32.store8 align=1 @@ -12372,7 +12372,7 @@ (set_local $var$705 (i32.add (get_local $var$621) - (i32.const 255) + (i32.const -1) ) ) (i32.store8 align=1 @@ -12388,7 +12388,7 @@ (set_local $var$706 (i32.add (get_local $var$621) - (i32.const 254) + (i32.const -2) ) ) (i32.store8 align=1 @@ -12587,7 +12587,7 @@ (set_local $var$707 (i32.add (get_local $var$830) - (i32.const 255) + (i32.const -1) ) ) (i32.store8 align=1 @@ -12808,7 +12808,7 @@ (set_local $var$711 (i32.add (get_local $var$833) - (i32.const 255) + (i32.const -1) ) ) (i32.store8 align=1 @@ -12896,7 +12896,7 @@ (set_local $var$931 (i32.add (get_local $var$802) - (i32.const 247) + (i32.const -9) ) ) (set_local $var$529 @@ -12979,7 +12979,7 @@ (set_local $var$536 (i32.gt_s (get_local $var$800) - (i32.const 255) + (i32.const -1) ) ) (if_else @@ -13162,7 +13162,7 @@ (set_local $var$713 (i32.add (get_local $var$835) - (i32.const 255) + (i32.const -1) ) ) (i32.store8 align=1 @@ -13275,7 +13275,7 @@ (set_local $var$537 (i32.gt_s (get_local $var$933) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$203 @@ -13720,7 +13720,7 @@ (set_local $var$669 (i32.add (get_local $var$827) - (i32.const 255) + (i32.const -1) ) ) (i32.store8 align=1 @@ -14163,7 +14163,7 @@ (get_local $var$483) (block $label$367 (set_local $var$821 - (i32.const 255) + (i32.const -1) ) (br $label$1) ) @@ -14394,7 +14394,7 @@ (set_local $var$464 (i32.gt_s (get_local $var$792) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$385 @@ -14849,7 +14849,7 @@ ) (block $label$394 (set_local $var$821 - (i32.const 255) + (i32.const -1) ) (br $label$381) ) @@ -15162,7 +15162,7 @@ (set_local $var$139 (i32.xor (get_local $var$140) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$46 @@ -15246,7 +15246,7 @@ (set_local $var$144 (i32.xor (get_local $var$145) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$15 @@ -15364,7 +15364,7 @@ (set_local $var$149 (i32.xor (get_local $var$150) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$29 @@ -15467,7 +15467,7 @@ (set_local $var$154 (i32.xor (get_local $var$155) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$41 @@ -15590,7 +15590,7 @@ (set_local $var$159 (i32.xor (get_local $var$160) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$59 @@ -15723,7 +15723,7 @@ (set_local $var$164 (i32.xor (get_local $var$165) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$74 @@ -15832,7 +15832,7 @@ (set_local $var$169 (i32.xor (get_local $var$170) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$86 @@ -15965,7 +15965,7 @@ (set_local $var$174 (i32.xor (get_local $var$175) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$102 @@ -16074,7 +16074,7 @@ (set_local $var$179 (i32.xor (get_local $var$180) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$7 @@ -16158,7 +16158,7 @@ (set_local $var$184 (i32.xor (get_local $var$185) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$13 @@ -16261,7 +16261,7 @@ (get_local $var$0) (i32.const 0) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$18 @@ -16324,7 +16324,7 @@ (set_local $var$27 (i32.add (get_local $var$32) - (i32.const 255) + (i32.const -1) ) ) (i32.store8 align=1 @@ -16359,7 +16359,7 @@ (get_local $var$21) (i32.const 0) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$10 @@ -16454,7 +16454,7 @@ ) (i32.const 10) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$24 @@ -16472,7 +16472,7 @@ (set_local $var$29 (i32.add (get_local $var$34) - (i32.const 255) + (i32.const -1) ) ) (i32.store8 align=1 @@ -16488,7 +16488,7 @@ ) (i32.const 10) ) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$14 @@ -18012,7 +18012,7 @@ (set_local $var$366 (i32.and (get_local $var$326) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$761 @@ -18131,7 +18131,7 @@ (set_local $var$864 (i32.xor (get_local $var$970) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$385 @@ -18336,7 +18336,7 @@ (set_local $var$1146 (i32.add (get_local $var$424) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$1052 @@ -18515,7 +18515,7 @@ (set_local $var$867 (i32.xor (get_local $var$1006) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$442 @@ -18871,7 +18871,7 @@ (set_local $var$1126 (i32.add (get_local $var$367) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$1014 @@ -19022,7 +19022,7 @@ (set_local $var$392 (i32.and (get_local $var$138) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$1127 @@ -19113,7 +19113,7 @@ (set_local $var$408 (i32.and (get_local $var$141) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$1134 @@ -19562,7 +19562,7 @@ (set_local $var$859 (i32.xor (get_local $var$962) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$155 @@ -20136,13 +20136,13 @@ (get_local $var$0) (i32.const 0) ) - (i32.const 191) + (i32.const -65) ) ) (if_else (get_local $var$613) (set_local $var$857 - (i32.const 255) + (i32.const -1) ) (block $label$57 (set_local $var$319 @@ -20154,7 +20154,7 @@ (set_local $var$386 (i32.and (get_local $var$319) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$171 @@ -20452,7 +20452,7 @@ (set_local $var$410 (i32.and (get_local $var$173) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$1138 @@ -20723,7 +20723,7 @@ (set_local $var$1155 (i32.add (get_local $var$436) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$1068 @@ -20925,7 +20925,7 @@ (set_local $var$375 (i32.and (get_local $var$178) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$1115 @@ -21485,7 +21485,7 @@ (set_local $var$860 (i32.xor (get_local $var$975) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$196 @@ -22356,7 +22356,7 @@ (set_local $var$419 (i32.and (get_local $var$211) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$703 @@ -22923,7 +22923,7 @@ (set_local $var$1104 (i32.add (get_local $var$550) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$373 @@ -22951,11 +22951,11 @@ ) (i32.store align=4 (i32.const 660) - (i32.const 255) + (i32.const -1) ) (i32.store align=4 (i32.const 664) - (i32.const 255) + (i32.const -1) ) (i32.store align=4 (i32.const 668) @@ -22973,7 +22973,7 @@ (set_local $var$1187 (i32.and (get_local $var$556) - (i32.const 240) + (i32.const -16) ) ) (set_local $var$439 @@ -23329,7 +23329,7 @@ (set_local $var$750 (i32.eq (get_local $var$558) - (i32.const 255) + (i32.const -1) ) ) (if @@ -23383,7 +23383,7 @@ (set_local $var$701 (i32.eq (get_local $var$555) - (i32.const 255) + (i32.const -1) ) ) (if @@ -23403,7 +23403,7 @@ (set_local $var$1144 (i32.add (get_local $var$27) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$423 @@ -23613,7 +23613,7 @@ (set_local $var$753 (i32.ne (get_local $var$549) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$754 @@ -23702,7 +23702,7 @@ (set_local $var$585 (i32.eq (get_local $var$551) - (i32.const 255) + (i32.const -1) ) ) (if_else @@ -23740,7 +23740,7 @@ (set_local $var$591 (i32.eq (get_local $var$549) - (i32.const 255) + (i32.const -1) ) ) (if @@ -23819,13 +23819,13 @@ (set_local $var$606 (i32.ne (get_local $var$552) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$608 (i32.ne (get_local $var$553) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$882 @@ -24024,7 +24024,7 @@ ) (i32.store align=4 (i32.const 208) - (i32.const 255) + (i32.const -1) ) (set_local $var$848 (i32.const 0) @@ -24091,7 +24091,7 @@ (set_local $var$1123 (i32.add (get_local $var$1179) - (i32.const 216) + (i32.const -40) ) ) (set_local $var$266 @@ -24900,7 +24900,7 @@ (set_local $var$418 (i32.and (get_local $var$69) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$1016 @@ -25031,7 +25031,7 @@ (set_local $var$862 (i32.xor (get_local $var$1001) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$75 @@ -25493,7 +25493,7 @@ (set_local $var$865 (i32.xor (get_local $var$972) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$89 @@ -25791,7 +25791,7 @@ (set_local $var$391 (i32.and (get_local $var$97) - (i32.const 254) + (i32.const -2) ) ) (i32.store align=4 @@ -26337,7 +26337,7 @@ (set_local $var$409 (i32.and (get_local $var$104) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$687 @@ -26697,7 +26697,7 @@ (set_local $var$287 (i32.add (get_local $var$273) - (i32.const 209) + (i32.const -47) ) ) (set_local $var$297 @@ -26786,7 +26786,7 @@ (set_local $var$1121 (i32.add (get_local $var$1179) - (i32.const 216) + (i32.const -40) ) ) (set_local $var$265 @@ -27033,7 +27033,7 @@ (set_local $var$411 (i32.and (get_local $var$121) - (i32.const 254) + (i32.const -2) ) ) (i32.store align=4 @@ -27558,7 +27558,7 @@ (set_local $var$380 (i32.and (get_local $var$130) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$595 @@ -28295,7 +28295,7 @@ (set_local $var$96 (i32.add (get_local $var$0) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$5 @@ -28322,7 +28322,7 @@ (set_local $var$274 (i32.add (get_local $var$0) - (i32.const 252) + (i32.const -4) ) ) (set_local $var$6 @@ -28349,7 +28349,7 @@ (set_local $var$123 (i32.and (get_local $var$6) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$102 @@ -28482,7 +28482,7 @@ (set_local $var$115 (i32.and (get_local $var$25) - (i32.const 254) + (i32.const -2) ) ) (i32.store align=4 @@ -28645,7 +28645,7 @@ (set_local $var$287 (i32.xor (get_local $var$319) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$72 @@ -29117,7 +29117,7 @@ (set_local $var$288 (i32.xor (get_local $var$315) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$18 @@ -29617,7 +29617,7 @@ (set_local $var$118 (i32.and (get_local $var$26) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$106 @@ -29759,7 +29759,7 @@ (set_local $var$289 (i32.xor (get_local $var$317) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$37 @@ -30228,7 +30228,7 @@ (set_local $var$290 (i32.xor (get_local $var$318) - (i32.const 255) + (i32.const -1) ) ) (set_local $var$55 @@ -30546,7 +30546,7 @@ (set_local $var$122 (i32.and (get_local $var$26) - (i32.const 254) + (i32.const -2) ) ) (i32.store align=4 @@ -31088,7 +31088,7 @@ (set_local $var$130 (i32.and (get_local $var$70) - (i32.const 248) + (i32.const -8) ) ) (set_local $var$246 @@ -31352,7 +31352,7 @@ (set_local $var$258 (i32.add (get_local $var$77) - (i32.const 255) + (i32.const -1) ) ) (i32.store align=4 @@ -31403,7 +31403,7 @@ ) (i32.store align=4 (i32.const 208) - (i32.const 255) + (i32.const -1) ) (br $label$0) ) @@ -31562,7 +31562,7 @@ (get_local $var$3) (i32.xor (i32.const 3) - (i32.const 255) + (i32.const -1) ) ) ) @@ -31999,7 +31999,7 @@ (get_local $var$1) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) ) @@ -32236,7 +32236,7 @@ (get_local $var$1) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 1) @@ -32251,7 +32251,7 @@ (get_local $var$1) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 31) @@ -32262,7 +32262,7 @@ (get_local $var$1) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 1) @@ -32281,7 +32281,7 @@ (get_local $var$3) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 1) @@ -32296,7 +32296,7 @@ (get_local $var$3) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 31) @@ -32307,7 +32307,7 @@ (get_local $var$3) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 1) @@ -32431,7 +32431,7 @@ (get_local $var$1) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 1) @@ -32446,7 +32446,7 @@ (get_local $var$1) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 31) @@ -32457,7 +32457,7 @@ (get_local $var$1) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 1) @@ -32476,7 +32476,7 @@ (get_local $var$3) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 1) @@ -32491,7 +32491,7 @@ (get_local $var$3) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 31) @@ -32502,7 +32502,7 @@ (get_local $var$3) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 1) @@ -32644,7 +32644,7 @@ (i32.const 0) (i32.and (get_local $var$6) - (i32.const 255) + (i32.const -1) ) ) ) @@ -32896,7 +32896,7 @@ (get_local $var$4) (i32.and (get_local $var$0) - (i32.const 255) + (i32.const -1) ) ) (i32.store align=4 @@ -33091,7 +33091,7 @@ (i32.const 0) (i32.and (get_local $var$0) - (i32.const 255) + (i32.const -1) ) ) ) @@ -33240,7 +33240,7 @@ (i32.const 0) (i32.and (get_local $var$0) - (i32.const 255) + (i32.const -1) ) ) ) @@ -33397,7 +33397,7 @@ (i32.const 0) (i32.and (get_local $var$0) - (i32.const 255) + (i32.const -1) ) ) ) @@ -33630,7 +33630,7 @@ (i32.const 0) (i32.and (get_local $var$0) - (i32.const 255) + (i32.const -1) ) ) ) @@ -33725,7 +33725,7 @@ (i32.const 0) (i32.and (get_local $var$2) - (i32.const 255) + (i32.const -1) ) ) ) @@ -33742,8 +33742,8 @@ (call $_i64Add (get_local $var$37) (get_local $var$38) - (i32.const 255) - (i32.const 255) + (i32.const -1) + (i32.const -1) ) ) (set_local $var$40 @@ -33842,7 +33842,7 @@ (get_local $var$51) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 1) @@ -33871,7 +33871,7 @@ (get_local $var$51) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 31) @@ -33882,7 +33882,7 @@ (get_local $var$51) (i32.const 0) ) - (i32.const 255) + (i32.const -1) (i32.const 0) ) (i32.const 1) @@ -34036,7 +34036,7 @@ (i32.const 31) ) ) - (i32.const 254) + (i32.const -2) ) (get_local $var$58) ) diff --git a/test/unit.wast.fromBinary b/test/unit.wast.fromBinary index 4b9674874..4556cd0b6 100644 --- a/test/unit.wast.fromBinary +++ b/test/unit.wast.fromBinary @@ -276,10 +276,10 @@ (set_local $var$0 (i32.and (i32.div_u - (i32.const 255) + (i32.const -1) (i32.const 2) ) - (i32.const 255) + (i32.const -1) ) ) (get_local $var$0) -- cgit v1.2.3 From 1cf76c3293fdf8e0326384c39696df844d8d6aed Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 29 Jan 2016 17:06:49 -0800 Subject: allow memory size 0 in binary format --- src/wasm-binary.h | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 757551c12..c448f73f4 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -392,9 +392,18 @@ public: void writeMemory() { if (wasm->memory.max == 0) return; if (debug) std::cerr << "== writeMemory" << std::endl; - o << int8_t(BinaryConsts::Memory) << int8_t(ceil(log2(wasm->memory.initial))) - << int8_t(ceil(log2(wasm->memory.max))) - << int8_t(1); // export memory + o << int8_t(BinaryConsts::Memory); + if (wasm->memory.initial == 0) { // XXX diverge from v8, 0 means 0, 1 and above are powers of 2 starting at 0 + o << int8_t(0); + } else { + o << int8_t(ceil(log2(wasm->memory.initial)) + 1); + } + if (wasm->memory.max == 0) { + o << int8_t(0); + } else { + o << int8_t(ceil(log2(wasm->memory.max)) + 1); + } + o << int8_t(1); // export memory } void writeSignatures() { @@ -1058,8 +1067,10 @@ public: void readMemory() { if (debug) std::cerr << "== readMemory" << std::endl; - wasm.memory.initial = std::pow(2, getInt8()); - wasm.memory.max = std::pow(2, getInt8()); + size_t initial = getInt8(); + wasm.memory.initial = initial == 0 ? 0 : std::pow(2, initial - 1); + size_t max = getInt8(); + wasm.memory.max = max == 0 ? 0 : std::pow(2, max - 1); verifyInt8(1); // export memory } -- cgit v1.2.3 From 9ec15cf362ac5df76e2021282489ab414dfd6fd6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 29 Jan 2016 17:12:07 -0800 Subject: don't let ceil in binary memory size computation let us get to UINT_MAX which can overflow --- src/wasm-binary.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index c448f73f4..5d0c41fba 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -396,12 +396,12 @@ public: if (wasm->memory.initial == 0) { // XXX diverge from v8, 0 means 0, 1 and above are powers of 2 starting at 0 o << int8_t(0); } else { - o << int8_t(ceil(log2(wasm->memory.initial)) + 1); + o << int8_t(std::min(ceil(log2(wasm->memory.initial)), 31.0) + 1); // up to 31 bits, don't let ceil get us to UINT_MAX which can overflow } if (wasm->memory.max == 0) { o << int8_t(0); } else { - o << int8_t(ceil(log2(wasm->memory.max)) + 1); + o << int8_t(std::min(ceil(log2(wasm->memory.max)), 31.0) + 1); } o << int8_t(1); // export memory } -- cgit v1.2.3 From d569cf1db86179981d27145c6e126247d4d89ae3 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 29 Jan 2016 17:44:33 -0800 Subject: refactor binary format break code --- src/wasm-binary.h | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index 5d0c41fba..ce7472b0f 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -640,21 +640,25 @@ public: breakStack.pop_back(); breakStack.pop_back(); } - void visitBreak(Break *curr) { - if (debug) std::cerr << "zz node: Break" << std::endl; - o << int8_t(curr->condition ? BinaryConsts::BrIf : BinaryConsts::Br); - bool found = false; + + int getBreakIndex(Name name) { // -1 if not found for (int i = breakStack.size() - 1; i >= 0; i--) { - if (breakStack[i] == curr->name) { - o << int8_t(breakStack.size() - 1 - i); - found = true; - break; + if (breakStack[i] == name) { + return breakStack.size() - 1 - i; } } - if (!found) { + return -1; + } + + void visitBreak(Break *curr) { + if (debug) std::cerr << "zz node: Break" << std::endl; + o << int8_t(curr->condition ? BinaryConsts::BrIf : BinaryConsts::Br); + int offset = getBreakIndex(curr->name); + if (offset < 0) { std::cerr << "bad break: " << curr->name << std::endl; abort(); } + o << int8_t(offset); if (curr->condition) recurse(curr->condition); if (curr->value) { recurse(curr->value); @@ -1328,10 +1332,15 @@ public: breakStack.pop_back(); breakStack.pop_back(); } + + Name getBreakName(int offset) { + return breakStack[breakStack.size() - 1 - offset]; + } + void visitBreak(Break *curr, uint8_t code) { if (debug) std::cerr << "zz node: Break" << std::endl; auto offset = getInt8(); - curr->name = breakStack[breakStack.size() - 1 - offset]; + curr->name = getBreakName(offset); if (code == BinaryConsts::BrIf) readExpression(curr->condition); readExpression(curr->value); } -- cgit v1.2.3 From 17ab9b60b0cd48b2fd37217fd91a3c65feb03e5f Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 29 Jan 2016 17:57:02 -0800 Subject: fix switch in binary format --- src/wasm-binary.h | 53 +++++++++++++-------------- test/emcc_hello_world.wast.fromBinary | 68 +++++++++++++++++------------------ test/unit.wast.fromBinary | 18 +++++----- 3 files changed, 67 insertions(+), 72 deletions(-) (limited to 'src/wasm-binary.h') diff --git a/src/wasm-binary.h b/src/wasm-binary.h index ce7472b0f..a722f88ea 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -647,17 +647,14 @@ public: return breakStack.size() - 1 - i; } } - return -1; + std::cerr << "bad break: " << name << std::endl; + abort(); } void visitBreak(Break *curr) { if (debug) std::cerr << "zz node: Break" << std::endl; o << int8_t(curr->condition ? BinaryConsts::BrIf : BinaryConsts::Br); int offset = getBreakIndex(curr->name); - if (offset < 0) { - std::cerr << "bad break: " << curr->name << std::endl; - abort(); - } o << int8_t(offset); if (curr->condition) recurse(curr->condition); if (curr->value) { @@ -670,23 +667,22 @@ public: if (debug) std::cerr << "zz node: Switch" << std::endl; o << int8_t(BinaryConsts::TableSwitch) << int16_t(curr->cases.size()) << int16_t(curr->targets.size() + 1); - std::map mapping; // target name => index in cases for (size_t i = 0; i < curr->cases.size(); i++) { - mapping[curr->cases[i].name] = i; - } - if (mapping.find(curr->default_) == mapping.end()) { - mapping[curr->default_] = curr->cases.size(); + breakStack.push_back(curr->cases[i].name); } + breakStack.push_back(curr->name); for (auto target : curr->targets) { - o << mapping[target]; + o << (int16_t)getBreakIndex(target); } - o << mapping[curr->default_]; - breakStack.push_back(curr->name); + o << (int16_t)getBreakIndex(curr->default_); recurse(curr->value); for (auto& c : curr->cases) { recurse(c.body); } - breakStack.pop_back(); + breakStack.pop_back(); // name + for (size_t i = 0; i < curr->cases.size(); i++) { + breakStack.pop_back(); // case + } } void visitCall(Call *curr) { if (debug) std::cerr << "zz node: Call" << std::endl; @@ -1348,27 +1344,26 @@ public: if (debug) std::cerr << "zz node: Switch" << std::endl; auto numCases = getInt16(); auto numTargets = getInt16(); - std::map caseLabels; - auto getCaseLabel = [&](size_t index) { - if (caseLabels.find(index) == caseLabels.end()) { - caseLabels[index] = getNextLabel(); - } - return caseLabels[index]; - }; - for (auto i = 0; i < numTargets - 1; i++) { - curr->targets.push_back(getCaseLabel(getInt16())); + for (auto i = 0; i < numCases; i++) { + Switch::Case c; + c.name = getNextLabel(); + curr->cases.push_back(c); + breakStack.push_back(c.name); } - curr->default_ = getCaseLabel(getInt16()); curr->name = getNextLabel(); breakStack.push_back(curr->name); + for (auto i = 0; i < numTargets - 1; i++) { + curr->targets.push_back(getBreakName(getInt16())); + } + curr->default_ = getBreakName(getInt16()); readExpression(curr->value); for (auto i = 0; i < numCases; i++) { - Switch::Case c; - c.name = getCaseLabel(i); - readExpression(c.body); - curr->cases.push_back(c); + readExpression(curr->cases[i].body); + } + breakStack.pop_back(); // name + for (size_t i = 0; i < curr->cases.size(); i++) { + breakStack.pop_back(); // case } - breakStack.pop_back(); } void visitCall(Call *curr, Name target) { if (debug) std::cerr << "zz node: Call" << std::endl; diff --git a/test/emcc_hello_world.wast.fromBinary b/test/emcc_hello_world.wast.fromBinary index 394cffd6d..ff26b930f 100644 --- a/test/emcc_hello_world.wast.fromBinary +++ b/test/emcc_hello_world.wast.fromBinary @@ -436,7 +436,7 @@ (get_local $var$9) (i32.const 0) ) - (table (case $label$1) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$2) (case $label$3)) (case $label$2) + (table (case $label$1) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$3) (case $label$2)) (case $label$3) (case $label$1 (block $label$5 (set_local $var$13 @@ -497,7 +497,7 @@ (br $label$4) ) ) - (case $label$3 + (case $label$2 (block $label$8 (set_local $var$19 (get_local $var$0) @@ -505,7 +505,7 @@ (br $label$4) ) ) - (case $label$2 + (case $label$3 (block $label$9 (set_local $var$12 (i32.add @@ -6160,8 +6160,8 @@ ) (i32.const 0) ) - (table (case $label$13) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$14) (case $label$15)) (case $label$14) - (case $label$15 + (table (case $label$14) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$15) (case $label$13)) (case $label$15) + (case $label$13 (block $label$17 (set_local $var$687 (get_local $var$684) @@ -6176,7 +6176,7 @@ (br $label$16) ) ) - (case $label$13 + (case $label$14 (block $label$18 (set_local $var$686 (get_local $var$684) @@ -6188,7 +6188,7 @@ (br $label$16) ) ) - (case $label$14 + (case $label$15 (nop) ) ) @@ -8043,15 +8043,15 @@ (get_local $var$937) (i32.const 65) ) - (table (case $label$89) (case $label$90) (case $label$91) (case $label$90) (case $label$92) (case $label$93) (case $label$94) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$95) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$96) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$90) (case $label$97) (case $label$90) (case $label$98) (case $label$99) (case $label$100) (case $label$101) (case $label$102) (case $label$90) (case $label$103) (case $label$90) (case $label$90) (case $label$90) (case $label$104) (case $label$105) (case $label$106) (case $label$107) (case $label$90) (case $label$90) (case $label$108) (case $label$90) (case $label$109) (case $label$90) (case $label$90) (case $label$110)) (case $label$90) - (case $label$105 + (table (case $label$102) (case $label$110) (case $label$100) (case $label$110) (case $label$105) (case $label$104) (case $label$103) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$101) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$91) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$110) (case $label$106) (case $label$110) (case $label$97) (case $label$95) (case $label$109) (case $label$108) (case $label$107) (case $label$110) (case $label$94) (case $label$110) (case $label$110) (case $label$110) (case $label$98) (case $label$89) (case $label$93) (case $label$90) (case $label$110) (case $label$110) (case $label$99) (case $label$110) (case $label$96) (case $label$110) (case $label$110) (case $label$92)) (case $label$110) + (case $label$89 (block $label$112 (tableswitch $label$121 (i32.sub (get_local $var$844) (i32.const 0) ) - (table (case $label$113) (case $label$114) (case $label$115) (case $label$116) (case $label$117) (case $label$118) (case $label$119) (case $label$120)) (case $label$118) + (table (case $label$113) (case $label$114) (case $label$115) (case $label$116) (case $label$117) (case $label$120) (case $label$118) (case $label$119)) (case $label$120) (case $label$113 (block $label$122 (set_local $var$258 @@ -8233,7 +8233,7 @@ (br $label$121) ) ) - (case $label$119 + (case $label$118 (block $label$127 (set_local $var$270 (i32.load align=4 @@ -8260,7 +8260,7 @@ (br $label$121) ) ) - (case $label$120 + (case $label$119 (block $label$128 (set_local $var$271 (i32.lt_s @@ -8321,7 +8321,7 @@ (br $label$121) ) ) - (case $label$118 + (case $label$120 (block $label$129 (set_local $var$549 (get_local $var$550) @@ -8342,7 +8342,7 @@ (br $label$111) ) ) - (case $label$107 + (case $label$90 (block $label$130 (set_local $var$455 (i32.gt_u @@ -8381,10 +8381,10 @@ (br $label$111) ) ) - (case $label$96 + (case $label$91 (nop) ) - (case $label$110 + (case $label$92 (block $label$131 (set_local $var$639 (get_local $var$638) @@ -8401,7 +8401,7 @@ (br $label$111) ) ) - (case $label$106 + (case $label$93 (block $label$132 (set_local $var$41 (get_local $var$392) @@ -8632,10 +8632,10 @@ (br $label$111) ) ) - (case $label$103 + (case $label$94 (nop) ) - (case $label$99 + (case $label$95 (block $label$141 (set_local $var$62 (get_local $var$392) @@ -8796,7 +8796,7 @@ (br $label$111) ) ) - (case $label$109 + (case $label$96 (block $label$145 (set_local $var$251 (get_local $var$392) @@ -8841,7 +8841,7 @@ (br $label$111) ) ) - (case $label$98 + (case $label$97 (block $label$146 (set_local $var$91 (get_local $var$392) @@ -8899,7 +8899,7 @@ (br $label$111) ) ) - (case $label$104 + (case $label$98 (block $label$147 (set_local $var$424 (call $___errno_location) @@ -8923,7 +8923,7 @@ (br $label$111) ) ) - (case $label$108 + (case $label$99 (block $label$148 (set_local $var$99 (i32.load align=4 @@ -8952,7 +8952,7 @@ (br $label$111) ) ) - (case $label$91 + (case $label$100 (block $label$149 (set_local $var$101 (get_local $var$392) @@ -9000,7 +9000,7 @@ (br $label$111) ) ) - (case $label$95 + (case $label$101 (block $label$150 (set_local $var$477 (i32.eq @@ -9037,28 +9037,28 @@ (br $label$111) ) ) - (case $label$89 + (case $label$102 (nop) ) - (case $label$94 + (case $label$103 (nop) ) - (case $label$93 + (case $label$104 (nop) ) - (case $label$92 + (case $label$105 (nop) ) - (case $label$97 + (case $label$106 (nop) ) - (case $label$102 + (case $label$107 (nop) ) - (case $label$101 + (case $label$108 (nop) ) - (case $label$100 + (case $label$109 (block $label$153 (set_local $var$1038 (f64.load align=8 @@ -13565,7 +13565,7 @@ (br $label$111) ) ) - (case $label$90 + (case $label$110 (block $label$345 (set_local $var$293 (get_local $var$685) diff --git a/test/unit.wast.fromBinary b/test/unit.wast.fromBinary index 4556cd0b6..7c5e00b94 100644 --- a/test/unit.wast.fromBinary +++ b/test/unit.wast.fromBinary @@ -203,18 +203,18 @@ (get_local $var$0) (i32.const 5) ) - (table (case $label$5) (case $label$6) (case $label$6) (case $label$6) (case $label$6) (case $label$6) (case $label$6) (case $label$7)) (case $label$6) - (case $label$7 + (table (case $label$6) (case $label$7) (case $label$7) (case $label$7) (case $label$7) (case $label$7) (case $label$7) (case $label$5)) (case $label$7) + (case $label$5 (br $label$0 (i32.const 121) ) ) - (case $label$5 + (case $label$6 (br $label$0 (i32.const 51) ) ) - (case $label$6 + (case $label$7 (nop) ) ) @@ -223,11 +223,11 @@ (get_local $var$0) (i32.const 2) ) - (table (case $label$9) (case $label$10) (case $label$10) (case $label$11) (case $label$10) (case $label$10) (case $label$10) (case $label$10) (case $label$12) (case $label$10) (case $label$13)) (case $label$10) - (case $label$13 + (table (case $label$12) (case $label$13) (case $label$13) (case $label$11) (case $label$13) (case $label$13) (case $label$13) (case $label$13) (case $label$10) (case $label$13) (case $label$9)) (case $label$13) + (case $label$9 (br $label$14) ) - (case $label$12 + (case $label$10 (br $label$14) ) (case $label$11 @@ -241,7 +241,7 @@ (br $label$14) ) ) - (case $label$9 + (case $label$12 (block $label$19 (loop $label$20 $label$21 (block $label$22 @@ -252,7 +252,7 @@ (br $label$14) ) ) - (case $label$10 + (case $label$13 (nop) ) ) -- cgit v1.2.3