From 443c0069df34bac9640ed75e396c8b76d3870ae0 Mon Sep 17 00:00:00 2001 From: Heejin Ahn Date: Wed, 24 Jul 2019 23:57:04 -0700 Subject: More push/pop support (#2260) This adds - `push`/`pop` support for other types: v128 and exnref - `push`/`pop` support for binaryen.js Because binaryen.js follows Binaryen's AST structure, without `pop` in binaryen.js, EH instructions cannot be represented in binaryen.js. --- test/binaryen.js/push-pop.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 test/binaryen.js/push-pop.js (limited to 'test/binaryen.js/push-pop.js') diff --git a/test/binaryen.js/push-pop.js b/test/binaryen.js/push-pop.js new file mode 100644 index 000000000..5064ed864 --- /dev/null +++ b/test/binaryen.js/push-pop.js @@ -0,0 +1,40 @@ +function cleanInfo(info) { + var ret = {}; + for (var x in info) { + if (x !== 'value') { + ret[x] = info[x]; + } + } + return ret; +} + +function stringify(expr) { + return JSON.stringify(cleanInfo(Binaryen.getExpressionInfo(expr))); +} + +var module = new Binaryen.Module(); + +var v = module.addFunctionType("v", Binaryen.none, []); + +var func = module.addFunction("func", v, [], + module.block(null, [ + module.push(module.i32.pop()), + module.push(module.i64.pop()), + module.push(module.f32.pop()), + module.push(module.f64.pop()), + module.push(module.v128.pop()), + module.push(module.exnref.pop()) + ] + ) +) + +module.validate(); +console.log(module.emitText()); + +console.log("getExpressionInfo(i32.pop) = " + stringify(module.i32.pop())); +console.log("getExpressionInfo(i64.pop) = " + stringify(module.i64.pop())); +console.log("getExpressionInfo(f32.pop) = " + stringify(module.f32.pop())); +console.log("getExpressionInfo(f64.pop) = " + stringify(module.f64.pop())); +console.log("getExpressionInfo(v128.pop) = " + stringify(module.v128.pop())); +console.log("getExpressionInfo(exnref.pop) = " + stringify(module.exnref.pop())); +console.log("getExpressionInfo(push) = " + stringify(module.push(module.i32.const(0)))); -- cgit v1.2.3