Is it a strawberry, see boyanio/wasm-wheel#2

This commit is contained in:
dcodeIO 2017-12-13 00:11:45 +01:00
parent 3d544c2fe5
commit ce57820f59
20 changed files with 399 additions and 472 deletions

View File

@ -5,9 +5,9 @@ AssemblyScript NEXT
**AssemblyScript** is a new compiler targeting [WebAssembly](http://webassembly.org) while utilizing [TypeScript](http://www.typescriptlang.org)'s syntax and [node](https://nodejs.org)'s vibrant ecosystem. Instead of requiring complex toolchains to set up, you can simply `npm install` it - or run it in a browser. **AssemblyScript** is a new compiler targeting [WebAssembly](http://webassembly.org) while utilizing [TypeScript](http://www.typescriptlang.org)'s syntax and [node](https://nodejs.org)'s vibrant ecosystem. Instead of requiring complex toolchains to set up, you can simply `npm install` it - or run it in a browser.
By compiling a variant of TypeScript to [Binaryen](https://github.com/WebAssembly/binaryen) IR, the resulting module can be validated, optimized, emitted in WebAssembly text or binary format and converted to [asm.js](http://asmjs.org) as a polyfill. By compiling syntactially but not necessarily semantically valid TypeScript to [Binaryen](https://github.com/WebAssembly/binaryen) IR, the resulting module can be validated, optimized, emitted in WebAssembly text or binary format and converted to [asm.js](http://asmjs.org) as a polyfill.
The compiler itself is written in "portable AssemblyScript" so it can be compiled to both JavaScript using `tsc` and, eventually, to WebAssembly using `asc`. The compiler itself utilizies "portable definitions" so it can be compiled to both JavaScript using `tsc` and, eventually, to WebAssembly using `asc`.
Development status Development status
------------------ ------------------
@ -16,12 +16,10 @@ This version of the compiler (0.5.0, NEXT) is relatively new and does not yet su
A few early examples to get an idea: A few early examples to get an idea:
* **memcpy** using load/store derived from [musl](http://www.musl-libc.org)<br />
[source](./tests/compiler/memcpy.ts) - [wast](./tests/compiler/memcpy.optimized.wast)
* **Conway's Game of Life** as seen on [dcode.io](http://dcode.io)<br /> * **Conway's Game of Life** as seen on [dcode.io](http://dcode.io)<br />
[source](./tests/compiler/game-of-life.ts) - [wast](./tests/compiler/game-of-life.optimized.wast) - [html](./tests/compiler/game-of-life.html) [source](./examples/game-of-life/assembly/game-of-life.ts) - [wast](./examples/game-of-life/assembly/game-of-life.optimized.wast) - [html](./examples/game-of-life/game-of-life.html)
* **i64 polyfill** using 32-bit integers<br /> * **i64 polyfill** using 32-bit integers<br />
[source](./tests/compiler/i64.ts) - [wast](./tests/compiler/i64.optimized.wast) [source](./examples/i64-polyfill/assembly/i64.ts) - [wast](./examples/i64-polyfill/assembly/i64.optimized.wast) - [js](./examples/i64-polyfill/index.js)
Getting started Getting started
--------------- ---------------
@ -34,7 +32,12 @@ $> cd next
$> npm install $> npm install
``` ```
Author your module in AssemblyScript ([definitions](./std/assembly.d.ts), [base config](./std/assembly.json)) or portable AssemblyScript ([definitions](./std/portable.d.ts), [base config](./std/portable.json)) and run: Author your module either using
* the [assembly definitions](./std/assembly.d.ts) ([base config](./std/assembly.json)) if all you care about is targeting WebAssembly/asm.js or
* the [portable definitions](./std/portable.d.ts) ([base config](./std/portable.json)) if you also want to compile to JavaScript using `tsc`
and run:
``` ```
$> node bin/asc yourModule.ts $> node bin/asc yourModule.ts
@ -67,7 +70,7 @@ Options:
js Replace trapping operations with JS semantics. js Replace trapping operations with JS semantics.
``` ```
Unless a bundle has been built to `dist/`, `asc` runs the TypeScript sources on the fly via [ts-node](https://www.npmjs.com/package/ts-node). Useful for development. Unless a bundle has been built to `dist/`, `asc` runs the (portable) TypeScript sources on the fly via [ts-node](https://www.npmjs.com/package/ts-node). Useful for development.
Building Building
-------- --------

2
bin/asc Normal file
View File

@ -0,0 +1,2 @@
#!/usr/bin/env node
require("./asc.js");

2
examples/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.wasm
node_modules/

View File

@ -0,0 +1,15 @@
Conway's Game of Life
=====================
An AssemblyScript example.
Instructions
------------
To build `assembly/game-of-life.ts` to `game-of-life.wasm`, run:
```
$> npm run build
```
Afterwards, open `game-of-life.html` in a browser (ideally one that allows `fetch`ing the `.wasm` from the local filesystem).

View File

@ -1,28 +1,28 @@
(module (module
(type $iiv (func (param i32 i32))) (type $iiv (func (param i32 i32)))
(type $v (func)) (type $v (func))
(global $game-of-life/w (mut i32) (i32.const 0)) (global $assembly/game-of-life/w (mut i32) (i32.const 0))
(global $game-of-life/h (mut i32) (i32.const 0)) (global $assembly/game-of-life/h (mut i32) (i32.const 0))
(global $game-of-life/s (mut i32) (i32.const 0)) (global $assembly/game-of-life/s (mut i32) (i32.const 0))
(memory $0 1) (memory $0 1)
(export "init" (func $game-of-life/init)) (export "init" (func $assembly/game-of-life/init))
(export "step" (func $game-of-life/step)) (export "step" (func $assembly/game-of-life/step))
(export "memory" (memory $0)) (export "memory" (memory $0))
(func $game-of-life/init (; 0 ;) (type $iiv) (param $0 i32) (param $1 i32) (func $assembly/game-of-life/init (; 0 ;) (type $iiv) (param $0 i32) (param $1 i32)
(set_global $game-of-life/w (set_global $assembly/game-of-life/w
(get_local $0) (get_local $0)
) )
(set_global $game-of-life/h (set_global $assembly/game-of-life/h
(get_local $1) (get_local $1)
) )
(set_global $game-of-life/s (set_global $assembly/game-of-life/s
(i32.mul (i32.mul
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
(get_global $game-of-life/h) (get_global $assembly/game-of-life/h)
) )
) )
) )
(func $game-of-life/step (; 1 ;) (type $v) (func $assembly/game-of-life/step (; 1 ;) (type $v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -33,13 +33,13 @@
(local $7 i32) (local $7 i32)
(set_local $6 (set_local $6
(i32.sub (i32.sub
(get_global $game-of-life/h) (get_global $assembly/game-of-life/h)
(i32.const 1) (i32.const 1)
) )
) )
(set_local $7 (set_local $7
(i32.sub (i32.sub
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
(i32.const 1) (i32.const 1)
) )
) )
@ -50,7 +50,7 @@
(if (if
(i32.lt_u (i32.lt_u
(get_local $0) (get_local $0)
(get_global $game-of-life/h) (get_global $assembly/game-of-life/h)
) )
(block (block
(set_local $4 (set_local $4
@ -83,7 +83,7 @@
(if (if
(i32.lt_u (i32.lt_u
(get_local $1) (get_local $1)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(block (block
(set_local $2 (set_local $2
@ -98,7 +98,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $4) (get_local $4)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(tee_local $2 (tee_local $2
(select (select
@ -116,7 +116,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $4) (get_local $4)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $1) (get_local $1)
) )
@ -126,7 +126,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $4) (get_local $4)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(tee_local $3 (tee_local $3
(select (select
@ -148,7 +148,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $0) (get_local $0)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $2) (get_local $2)
) )
@ -158,7 +158,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $0) (get_local $0)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $3) (get_local $3)
) )
@ -168,7 +168,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $5) (get_local $5)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $2) (get_local $2)
) )
@ -178,7 +178,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $5) (get_local $5)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $1) (get_local $1)
) )
@ -188,7 +188,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $5) (get_local $5)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $3) (get_local $3)
) )
@ -200,7 +200,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $0) (get_local $0)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $1) (get_local $1)
) )
@ -222,10 +222,10 @@
(i32.store8 (i32.store8
(i32.add (i32.add
(i32.add (i32.add
(get_global $game-of-life/s) (get_global $assembly/game-of-life/s)
(i32.mul (i32.mul
(get_local $0) (get_local $0)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
) )
(get_local $1) (get_local $1)
@ -241,10 +241,10 @@
(i32.store8 (i32.store8
(i32.add (i32.add
(i32.add (i32.add
(get_global $game-of-life/s) (get_global $assembly/game-of-life/s)
(i32.mul (i32.mul
(get_local $0) (get_local $0)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
) )
(get_local $1) (get_local $1)

View File

@ -1,29 +1,29 @@
(module (module
(type $iiv (func (param i32 i32))) (type $iiv (func (param i32 i32)))
(type $v (func)) (type $v (func))
(global $game-of-life/w (mut i32) (i32.const 0)) (global $assembly/game-of-life/w (mut i32) (i32.const 0))
(global $game-of-life/h (mut i32) (i32.const 0)) (global $assembly/game-of-life/h (mut i32) (i32.const 0))
(global $game-of-life/s (mut i32) (i32.const 0)) (global $assembly/game-of-life/s (mut i32) (i32.const 0))
(global $HEAP_START i32 (i32.const 4)) (global $HEAP_START i32 (i32.const 4))
(memory $0 1) (memory $0 1)
(export "init" (func $game-of-life/init)) (export "init" (func $assembly/game-of-life/init))
(export "step" (func $game-of-life/step)) (export "step" (func $assembly/game-of-life/step))
(export "memory" (memory $0)) (export "memory" (memory $0))
(func $game-of-life/init (; 0 ;) (type $iiv) (param $0 i32) (param $1 i32) (func $assembly/game-of-life/init (; 0 ;) (type $iiv) (param $0 i32) (param $1 i32)
(set_global $game-of-life/w (set_global $assembly/game-of-life/w
(get_local $0) (get_local $0)
) )
(set_global $game-of-life/h (set_global $assembly/game-of-life/h
(get_local $1) (get_local $1)
) )
(set_global $game-of-life/s (set_global $assembly/game-of-life/s
(i32.mul (i32.mul
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
(get_global $game-of-life/h) (get_global $assembly/game-of-life/h)
) )
) )
) )
(func $game-of-life/step (; 1 ;) (type $v) (func $assembly/game-of-life/step (; 1 ;) (type $v)
(local $0 i32) (local $0 i32)
(local $1 i32) (local $1 i32)
(local $2 i32) (local $2 i32)
@ -41,13 +41,13 @@
(block (block
(set_local $6 (set_local $6
(i32.sub (i32.sub
(get_global $game-of-life/h) (get_global $assembly/game-of-life/h)
(i32.const 1) (i32.const 1)
) )
) )
(set_local $7 (set_local $7
(i32.sub (i32.sub
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
(i32.const 1) (i32.const 1)
) )
) )
@ -65,7 +65,7 @@
(if (if
(i32.lt_u (i32.lt_u
(get_local $0) (get_local $0)
(get_global $game-of-life/h) (get_global $assembly/game-of-life/h)
) )
(block (block
(block (block
@ -103,7 +103,7 @@
(if (if
(i32.lt_u (i32.lt_u
(get_local $3) (get_local $3)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(block (block
(block (block
@ -145,7 +145,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $1) (get_local $1)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $4) (get_local $4)
) )
@ -154,7 +154,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $1) (get_local $1)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $3) (get_local $3)
) )
@ -164,7 +164,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $1) (get_local $1)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $5) (get_local $5)
) )
@ -174,7 +174,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $0) (get_local $0)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $4) (get_local $4)
) )
@ -184,7 +184,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $0) (get_local $0)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $5) (get_local $5)
) )
@ -194,7 +194,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $2) (get_local $2)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $4) (get_local $4)
) )
@ -204,7 +204,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $2) (get_local $2)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $3) (get_local $3)
) )
@ -214,7 +214,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $2) (get_local $2)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $5) (get_local $5)
) )
@ -226,7 +226,7 @@
(i32.add (i32.add
(i32.mul (i32.mul
(get_local $0) (get_local $0)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
(get_local $3) (get_local $3)
) )
@ -251,10 +251,10 @@
(i32.store8 (i32.store8
(i32.add (i32.add
(i32.add (i32.add
(get_global $game-of-life/s) (get_global $assembly/game-of-life/s)
(i32.mul (i32.mul
(get_local $0) (get_local $0)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
) )
(get_local $3) (get_local $3)
@ -270,10 +270,10 @@
(i32.store8 (i32.store8
(i32.add (i32.add
(i32.add (i32.add
(get_global $game-of-life/s) (get_global $assembly/game-of-life/s)
(i32.mul (i32.mul
(get_local $0) (get_local $0)
(get_global $game-of-life/w) (get_global $assembly/game-of-life/w)
) )
) )
(get_local $3) (get_local $3)
@ -308,42 +308,3 @@
) )
) )
) )
(;
[program.elements]
clz
ctz
popcnt
rotl
rotr
abs
ceil
copysign
floor
max
min
nearest
sqrt
trunc
current_memory
grow_memory
unreachable
load
store
reinterpret
select
sizeof
changetype
isNaN
isFinite
assert
parseInt
parseFloat
game-of-life/w
game-of-life/h
game-of-life/s
game-of-life/init
game-of-life/step
[program.exports]
game-of-life/init
game-of-life/step
;)

View File

@ -0,0 +1,6 @@
{
"extends": "../../../std/assembly.json",
"include": [
"./**/*.ts"
]
}

View File

@ -1,11 +1,7 @@
<canvas id="canvas" width="640" height="480"></canvas> <canvas id="canvas" width="640" height="480"></canvas><script>
<script src="../../node_modules/binaryen/index.js"></script><script>
// Fetch the .wast (just because we dont's store the .wasm in git) // Fetch the .wasm
fetch("game-of-life.optimized.wast").then(response => response.text()).then(text => { fetch("game-of-life.wasm").then(response => response.arrayBuffer()).then(binary => {
// Convert it to binary format
var binary = Binaryen.parseText(text).emitBinary();
// Instantiate the module // Instantiate the module
var module = new WebAssembly.Module(binary); var module = new WebAssembly.Module(binary);

View File

@ -0,0 +1,9 @@
{
"name": "@assemblyscript/game-of-life-example",
"version": "1.0.0",
"private": true,
"scripts": {
"build": "asc assembly/game-of-life.ts -t assembly/game-of-life.wast -c && asc assembly/game-of-life.ts -b game-of-life.wasm -t assembly/game-of-life.optimized.wast -O -c",
"browser": "game-of-life.html"
}
}

View File

@ -0,0 +1,15 @@
i64 polyfill
============
An AssemblyScript example.
Instructions
------------
To build `assembly/i64.ts` to `i64.wasm`, run:
```
$> npm run build
```
Afterwards, `require` the node module as usual (entry point is `index.js`).

View File

@ -2,49 +2,49 @@
(type $i (func (result i32))) (type $i (func (result i32)))
(type $iiv (func (param i32 i32))) (type $iiv (func (param i32 i32)))
(type $iiiiv (func (param i32 i32 i32 i32))) (type $iiiiv (func (param i32 i32 i32 i32)))
(global $i64/lo (mut i32) (i32.const 0)) (global $assembly/i64/lo (mut i32) (i32.const 0))
(global $i64/hi (mut i32) (i32.const 0)) (global $assembly/i64/hi (mut i32) (i32.const 0))
(memory $0 1) (memory $0 1)
(export "getLo" (func $i64/getLo)) (export "getLo" (func $assembly/i64/getLo))
(export "getHi" (func $i64/getHi)) (export "getHi" (func $assembly/i64/getHi))
(export "clz" (func $i64/clz_)) (export "clz" (func $assembly/i64/clz_))
(export "ctz" (func $i64/ctz_)) (export "ctz" (func $assembly/i64/ctz_))
(export "popcnt" (func $i64/popcnt_)) (export "popcnt" (func $assembly/i64/popcnt_))
(export "eqz" (func $i64/eqz)) (export "eqz" (func $assembly/i64/eqz))
(export "add" (func $i64/add)) (export "add" (func $assembly/i64/add))
(export "sub" (func $i64/sub)) (export "sub" (func $assembly/i64/sub))
(export "mul" (func $i64/mul)) (export "mul" (func $assembly/i64/mul))
(export "div_s" (func $i64/div_s)) (export "div_s" (func $assembly/i64/div_s))
(export "div_u" (func $i64/div_u)) (export "div_u" (func $assembly/i64/div_u))
(export "rem_s" (func $i64/rem_s)) (export "rem_s" (func $assembly/i64/rem_s))
(export "rem_u" (func $i64/rem_u)) (export "rem_u" (func $assembly/i64/rem_u))
(export "and" (func $i64/and)) (export "and" (func $assembly/i64/and))
(export "or" (func $i64/or)) (export "or" (func $assembly/i64/or))
(export "xor" (func $i64/xor)) (export "xor" (func $assembly/i64/xor))
(export "shl" (func $i64/shl)) (export "shl" (func $assembly/i64/shl))
(export "shr_s" (func $i64/shr_s)) (export "shr_s" (func $assembly/i64/shr_s))
(export "shr_u" (func $i64/shr_u)) (export "shr_u" (func $assembly/i64/shr_u))
(export "rotl" (func $i64/rotl_)) (export "rotl" (func $assembly/i64/rotl_))
(export "rotr" (func $i64/rotr_)) (export "rotr" (func $assembly/i64/rotr_))
(export "eq" (func $i64/eq)) (export "eq" (func $assembly/i64/eq))
(export "ne" (func $i64/ne)) (export "ne" (func $assembly/i64/ne))
(export "lt_s" (func $i64/lt_s)) (export "lt_s" (func $assembly/i64/lt_s))
(export "lt_u" (func $i64/lt_u)) (export "lt_u" (func $assembly/i64/lt_u))
(export "le_s" (func $i64/le_s)) (export "le_s" (func $assembly/i64/le_s))
(export "le_u" (func $i64/le_u)) (export "le_u" (func $assembly/i64/le_u))
(export "gt_s" (func $i64/gt_s)) (export "gt_s" (func $assembly/i64/gt_s))
(export "gt_u" (func $i64/gt_u)) (export "gt_u" (func $assembly/i64/gt_u))
(export "ge_s" (func $i64/ge_s)) (export "ge_s" (func $assembly/i64/ge_s))
(export "ge_u" (func $i64/ge_u)) (export "ge_u" (func $assembly/i64/ge_u))
(export "memory" (memory $0)) (export "memory" (memory $0))
(func $i64/getLo (; 0 ;) (type $i) (result i32) (func $assembly/i64/getLo (; 0 ;) (type $i) (result i32)
(get_global $i64/lo) (get_global $assembly/i64/lo)
) )
(func $i64/getHi (; 1 ;) (type $i) (result i32) (func $assembly/i64/getHi (; 1 ;) (type $i) (result i32)
(get_global $i64/hi) (get_global $assembly/i64/hi)
) )
(func $i64/clz_ (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32) (func $assembly/i64/clz_ (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(i64.clz (i64.clz
(i64.or (i64.or
@ -61,12 +61,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/ctz_ (; 3 ;) (type $iiv) (param $0 i32) (param $1 i32) (func $assembly/i64/ctz_ (; 3 ;) (type $iiv) (param $0 i32) (param $1 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(i64.ctz (i64.ctz
(i64.or (i64.or
@ -83,12 +83,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/popcnt_ (; 4 ;) (type $iiv) (param $0 i32) (param $1 i32) (func $assembly/i64/popcnt_ (; 4 ;) (type $iiv) (param $0 i32) (param $1 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(i64.popcnt (i64.popcnt
(i64.or (i64.or
@ -105,12 +105,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/eqz (; 5 ;) (type $iiv) (param $0 i32) (param $1 i32) (func $assembly/i64/eqz (; 5 ;) (type $iiv) (param $0 i32) (param $1 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i64.eqz (i64.eqz
(i64.or (i64.or
(i64.extend_u/i32 (i64.extend_u/i32
@ -125,13 +125,13 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/add (; 6 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/add (; 6 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.add (i64.add
@ -161,7 +161,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -170,9 +170,9 @@
) )
) )
) )
(func $i64/sub (; 7 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/sub (; 7 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.sub (i64.sub
@ -202,7 +202,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -211,9 +211,9 @@
) )
) )
) )
(func $i64/mul (; 8 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/mul (; 8 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.mul (i64.mul
@ -243,7 +243,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -252,9 +252,9 @@
) )
) )
) )
(func $i64/div_s (; 9 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/div_s (; 9 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.div_s (i64.div_s
@ -284,7 +284,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -293,9 +293,9 @@
) )
) )
) )
(func $i64/div_u (; 10 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/div_u (; 10 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.div_u (i64.div_u
@ -325,7 +325,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -334,9 +334,9 @@
) )
) )
) )
(func $i64/rem_s (; 11 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/rem_s (; 11 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.rem_s (i64.rem_s
@ -366,7 +366,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -375,9 +375,9 @@
) )
) )
) )
(func $i64/rem_u (; 12 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/rem_u (; 12 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.rem_u (i64.rem_u
@ -407,7 +407,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -416,9 +416,9 @@
) )
) )
) )
(func $i64/and (; 13 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/and (; 13 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.and (i64.and
@ -448,7 +448,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -457,9 +457,9 @@
) )
) )
) )
(func $i64/or (; 14 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/or (; 14 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.or (i64.or
@ -489,7 +489,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -498,9 +498,9 @@
) )
) )
) )
(func $i64/xor (; 15 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/xor (; 15 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.xor (i64.xor
@ -530,7 +530,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -539,9 +539,9 @@
) )
) )
) )
(func $i64/shl (; 16 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/shl (; 16 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.shl (i64.shl
@ -571,7 +571,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -580,9 +580,9 @@
) )
) )
) )
(func $i64/shr_s (; 17 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/shr_s (; 17 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.shr_s (i64.shr_s
@ -612,7 +612,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -621,9 +621,9 @@
) )
) )
) )
(func $i64/shr_u (; 18 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/shr_u (; 18 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.shr_u (i64.shr_u
@ -653,7 +653,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -662,9 +662,9 @@
) )
) )
) )
(func $i64/rotl_ (; 19 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/rotl_ (; 19 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.rotl (i64.rotl
@ -694,7 +694,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -703,9 +703,9 @@
) )
) )
) )
(func $i64/rotr_ (; 20 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/rotr_ (; 20 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(tee_local $4 (tee_local $4
(i64.rotr (i64.rotr
@ -735,7 +735,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -744,8 +744,8 @@
) )
) )
) )
(func $i64/eq (; 21 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/eq (; 21 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i64.eq (i64.eq
(i64.or (i64.or
(i64.extend_u/i32 (i64.extend_u/i32
@ -771,12 +771,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/ne (; 22 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/ne (; 22 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i64.ne (i64.ne
(i64.or (i64.or
(i64.extend_u/i32 (i64.extend_u/i32
@ -802,12 +802,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/lt_s (; 23 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/lt_s (; 23 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i64.lt_s (i64.lt_s
(i64.or (i64.or
(i64.extend_u/i32 (i64.extend_u/i32
@ -833,12 +833,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/lt_u (; 24 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/lt_u (; 24 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i64.lt_u (i64.lt_u
(i64.or (i64.or
(i64.extend_u/i32 (i64.extend_u/i32
@ -864,12 +864,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/le_s (; 25 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/le_s (; 25 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i64.le_s (i64.le_s
(i64.or (i64.or
(i64.extend_u/i32 (i64.extend_u/i32
@ -895,12 +895,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/le_u (; 26 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/le_u (; 26 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i64.le_u (i64.le_u
(i64.or (i64.or
(i64.extend_u/i32 (i64.extend_u/i32
@ -926,12 +926,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/gt_s (; 27 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/gt_s (; 27 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i64.gt_s (i64.gt_s
(i64.or (i64.or
(i64.extend_u/i32 (i64.extend_u/i32
@ -957,12 +957,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/gt_u (; 28 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/gt_u (; 28 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i64.gt_u (i64.gt_u
(i64.or (i64.or
(i64.extend_u/i32 (i64.extend_u/i32
@ -988,12 +988,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/ge_s (; 29 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/ge_s (; 29 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i64.ge_s (i64.ge_s
(i64.or (i64.or
(i64.extend_u/i32 (i64.extend_u/i32
@ -1019,12 +1019,12 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/ge_u (; 30 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/ge_u (; 30 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(set_global $i64/lo (set_global $assembly/i64/lo
(i64.ge_u (i64.ge_u
(i64.or (i64.or
(i64.extend_u/i32 (i64.extend_u/i32
@ -1050,7 +1050,7 @@
) )
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )

View File

@ -2,53 +2,53 @@
(type $i (func (result i32))) (type $i (func (result i32)))
(type $iiv (func (param i32 i32))) (type $iiv (func (param i32 i32)))
(type $iiiiv (func (param i32 i32 i32 i32))) (type $iiiiv (func (param i32 i32 i32 i32)))
(global $i64/lo (mut i32) (i32.const 0)) (global $assembly/i64/lo (mut i32) (i32.const 0))
(global $i64/hi (mut i32) (i32.const 0)) (global $assembly/i64/hi (mut i32) (i32.const 0))
(global $HEAP_START i32 (i32.const 4)) (global $HEAP_START i32 (i32.const 4))
(memory $0 1) (memory $0 1)
(export "getLo" (func $i64/getLo)) (export "getLo" (func $assembly/i64/getLo))
(export "getHi" (func $i64/getHi)) (export "getHi" (func $assembly/i64/getHi))
(export "clz" (func $i64/clz_)) (export "clz" (func $assembly/i64/clz_))
(export "ctz" (func $i64/ctz_)) (export "ctz" (func $assembly/i64/ctz_))
(export "popcnt" (func $i64/popcnt_)) (export "popcnt" (func $assembly/i64/popcnt_))
(export "eqz" (func $i64/eqz)) (export "eqz" (func $assembly/i64/eqz))
(export "add" (func $i64/add)) (export "add" (func $assembly/i64/add))
(export "sub" (func $i64/sub)) (export "sub" (func $assembly/i64/sub))
(export "mul" (func $i64/mul)) (export "mul" (func $assembly/i64/mul))
(export "div_s" (func $i64/div_s)) (export "div_s" (func $assembly/i64/div_s))
(export "div_u" (func $i64/div_u)) (export "div_u" (func $assembly/i64/div_u))
(export "rem_s" (func $i64/rem_s)) (export "rem_s" (func $assembly/i64/rem_s))
(export "rem_u" (func $i64/rem_u)) (export "rem_u" (func $assembly/i64/rem_u))
(export "and" (func $i64/and)) (export "and" (func $assembly/i64/and))
(export "or" (func $i64/or)) (export "or" (func $assembly/i64/or))
(export "xor" (func $i64/xor)) (export "xor" (func $assembly/i64/xor))
(export "shl" (func $i64/shl)) (export "shl" (func $assembly/i64/shl))
(export "shr_s" (func $i64/shr_s)) (export "shr_s" (func $assembly/i64/shr_s))
(export "shr_u" (func $i64/shr_u)) (export "shr_u" (func $assembly/i64/shr_u))
(export "rotl" (func $i64/rotl_)) (export "rotl" (func $assembly/i64/rotl_))
(export "rotr" (func $i64/rotr_)) (export "rotr" (func $assembly/i64/rotr_))
(export "eq" (func $i64/eq)) (export "eq" (func $assembly/i64/eq))
(export "ne" (func $i64/ne)) (export "ne" (func $assembly/i64/ne))
(export "lt_s" (func $i64/lt_s)) (export "lt_s" (func $assembly/i64/lt_s))
(export "lt_u" (func $i64/lt_u)) (export "lt_u" (func $assembly/i64/lt_u))
(export "le_s" (func $i64/le_s)) (export "le_s" (func $assembly/i64/le_s))
(export "le_u" (func $i64/le_u)) (export "le_u" (func $assembly/i64/le_u))
(export "gt_s" (func $i64/gt_s)) (export "gt_s" (func $assembly/i64/gt_s))
(export "gt_u" (func $i64/gt_u)) (export "gt_u" (func $assembly/i64/gt_u))
(export "ge_s" (func $i64/ge_s)) (export "ge_s" (func $assembly/i64/ge_s))
(export "ge_u" (func $i64/ge_u)) (export "ge_u" (func $assembly/i64/ge_u))
(export "memory" (memory $0)) (export "memory" (memory $0))
(func $i64/getLo (; 0 ;) (type $i) (result i32) (func $assembly/i64/getLo (; 0 ;) (type $i) (result i32)
(return (return
(get_global $i64/lo) (get_global $assembly/i64/lo)
) )
) )
(func $i64/getHi (; 1 ;) (type $i) (result i32) (func $assembly/i64/getHi (; 1 ;) (type $i) (result i32)
(return (return
(get_global $i64/hi) (get_global $assembly/i64/hi)
) )
) )
(func $i64/clz_ (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32) (func $assembly/i64/clz_ (; 2 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i64) (local $2 i64)
(block (block
(set_local $2 (set_local $2
@ -67,16 +67,16 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $2) (get_local $2)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/ctz_ (; 3 ;) (type $iiv) (param $0 i32) (param $1 i32) (func $assembly/i64/ctz_ (; 3 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i64) (local $2 i64)
(block (block
(set_local $2 (set_local $2
@ -95,16 +95,16 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $2) (get_local $2)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/popcnt_ (; 4 ;) (type $iiv) (param $0 i32) (param $1 i32) (func $assembly/i64/popcnt_ (; 4 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i64) (local $2 i64)
(block (block
(set_local $2 (set_local $2
@ -123,16 +123,16 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $2) (get_local $2)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/eqz (; 5 ;) (type $iiv) (param $0 i32) (param $1 i32) (func $assembly/i64/eqz (; 5 ;) (type $iiv) (param $0 i32) (param $1 i32)
(local $2 i32) (local $2 i32)
(block (block
(set_local $2 (set_local $2
@ -151,14 +151,14 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(get_local $2) (get_local $2)
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/add (; 6 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/add (; 6 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -188,12 +188,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -202,7 +202,7 @@
) )
) )
) )
(func $i64/sub (; 7 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/sub (; 7 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -232,12 +232,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -246,7 +246,7 @@
) )
) )
) )
(func $i64/mul (; 8 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/mul (; 8 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -276,12 +276,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -290,7 +290,7 @@
) )
) )
) )
(func $i64/div_s (; 9 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/div_s (; 9 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -320,12 +320,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -334,7 +334,7 @@
) )
) )
) )
(func $i64/div_u (; 10 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/div_u (; 10 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -364,12 +364,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -378,7 +378,7 @@
) )
) )
) )
(func $i64/rem_s (; 11 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/rem_s (; 11 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -408,12 +408,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -422,7 +422,7 @@
) )
) )
) )
(func $i64/rem_u (; 12 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/rem_u (; 12 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -452,12 +452,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -466,7 +466,7 @@
) )
) )
) )
(func $i64/and (; 13 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/and (; 13 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -496,12 +496,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -510,7 +510,7 @@
) )
) )
) )
(func $i64/or (; 14 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/or (; 14 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -540,12 +540,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -554,7 +554,7 @@
) )
) )
) )
(func $i64/xor (; 15 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/xor (; 15 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -584,12 +584,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -598,7 +598,7 @@
) )
) )
) )
(func $i64/shl (; 16 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/shl (; 16 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -628,12 +628,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -642,7 +642,7 @@
) )
) )
) )
(func $i64/shr_s (; 17 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/shr_s (; 17 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -672,12 +672,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -686,7 +686,7 @@
) )
) )
) )
(func $i64/shr_u (; 18 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/shr_u (; 18 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -716,12 +716,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -730,7 +730,7 @@
) )
) )
) )
(func $i64/rotl_ (; 19 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/rotl_ (; 19 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -760,12 +760,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -774,7 +774,7 @@
) )
) )
) )
(func $i64/rotr_ (; 20 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/rotr_ (; 20 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i64) (local $4 i64)
(block (block
(set_local $4 (set_local $4
@ -804,12 +804,12 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(i32.wrap/i64 (i32.wrap/i64
(get_local $4) (get_local $4)
) )
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.wrap/i64 (i32.wrap/i64
(i64.shr_u (i64.shr_u
(get_local $4) (get_local $4)
@ -818,7 +818,7 @@
) )
) )
) )
(func $i64/eq (; 21 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/eq (; 21 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
(block (block
(set_local $4 (set_local $4
@ -848,14 +848,14 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(get_local $4) (get_local $4)
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/ne (; 22 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/ne (; 22 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
(block (block
(set_local $4 (set_local $4
@ -885,14 +885,14 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(get_local $4) (get_local $4)
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/lt_s (; 23 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/lt_s (; 23 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
(block (block
(set_local $4 (set_local $4
@ -922,14 +922,14 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(get_local $4) (get_local $4)
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/lt_u (; 24 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/lt_u (; 24 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
(block (block
(set_local $4 (set_local $4
@ -959,14 +959,14 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(get_local $4) (get_local $4)
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/le_s (; 25 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/le_s (; 25 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
(block (block
(set_local $4 (set_local $4
@ -996,14 +996,14 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(get_local $4) (get_local $4)
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/le_u (; 26 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/le_u (; 26 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
(block (block
(set_local $4 (set_local $4
@ -1033,14 +1033,14 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(get_local $4) (get_local $4)
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/gt_s (; 27 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/gt_s (; 27 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
(block (block
(set_local $4 (set_local $4
@ -1070,14 +1070,14 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(get_local $4) (get_local $4)
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/gt_u (; 28 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/gt_u (; 28 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
(block (block
(set_local $4 (set_local $4
@ -1107,14 +1107,14 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(get_local $4) (get_local $4)
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/ge_s (; 29 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/ge_s (; 29 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
(block (block
(set_local $4 (set_local $4
@ -1144,14 +1144,14 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(get_local $4) (get_local $4)
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
(func $i64/ge_u (; 30 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (func $assembly/i64/ge_u (; 30 ;) (type $iiiiv) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
(local $4 i32) (local $4 i32)
(block (block
(set_local $4 (set_local $4
@ -1181,107 +1181,11 @@
) )
) )
) )
(set_global $i64/lo (set_global $assembly/i64/lo
(get_local $4) (get_local $4)
) )
(set_global $i64/hi (set_global $assembly/i64/hi
(i32.const 0) (i32.const 0)
) )
) )
) )
(;
[program.elements]
clz
ctz
popcnt
rotl
rotr
abs
ceil
copysign
floor
max
min
nearest
sqrt
trunc
current_memory
grow_memory
unreachable
load
store
reinterpret
select
sizeof
changetype
isNaN
isFinite
assert
parseInt
parseFloat
i64/lo
i64/hi
i64/getLo
i64/getHi
i64/clz_
i64/ctz_
i64/popcnt_
i64/eqz
i64/add
i64/sub
i64/mul
i64/div_s
i64/div_u
i64/rem_s
i64/rem_u
i64/and
i64/or
i64/xor
i64/shl
i64/shr_s
i64/shr_u
i64/rotl_
i64/rotr_
i64/eq
i64/ne
i64/lt_s
i64/lt_u
i64/le_s
i64/le_u
i64/gt_s
i64/gt_u
i64/ge_s
i64/ge_u
[program.exports]
i64/getLo
i64/getHi
i64/clz
i64/ctz
i64/popcnt
i64/eqz
i64/add
i64/sub
i64/mul
i64/div_s
i64/div_u
i64/rem_s
i64/rem_u
i64/and
i64/or
i64/xor
i64/shl
i64/shr_s
i64/shr_u
i64/rotl
i64/rotr
i64/eq
i64/ne
i64/lt_s
i64/lt_u
i64/le_s
i64/le_u
i64/gt_s
i64/gt_u
i64/ge_s
i64/ge_u
;)

View File

@ -0,0 +1,6 @@
{
"extends": "../../../std/assembly.json",
"include": [
"./**/*.ts"
]
}

View File

@ -0,0 +1,8 @@
var fs = require("fs");
// Instantiate the module
var mod = new WebAssembly.Module(fs.readFileSync(__dirname + "/i64.wasm"));
var ins = new WebAssembly.Instance(mod, { /* no imports */ });
// Export its exports
module.exports = ins.exports;

View File

@ -0,0 +1,8 @@
{
"name": "@assemblyscript/i64-polyfill-example",
"version": "1.0.0",
"private": true,
"scripts": {
"build": "asc assembly/i64.ts -t assembly/i64.wast -c && asc assembly/i64.ts -b i64.wasm -t assembly/i64.optimized.wast -O -c"
}
}

16
package-lock.json generated
View File

@ -19,11 +19,6 @@
"integrity": "sha512-q3zfJvaTroV5BjAAR+peTHEGAAhGrPX0z2EzCzpt2mwFA+qzUn2nigJLqSekXRtdULKmT8am7zjvTMZSapIgHw==", "integrity": "sha512-q3zfJvaTroV5BjAAR+peTHEGAAhGrPX0z2EzCzpt2mwFA+qzUn2nigJLqSekXRtdULKmT8am7zjvTMZSapIgHw==",
"dev": true "dev": true
}, },
"@types/events": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz",
"integrity": "sha512-y3bR98mzYOo0pAZuiLari+cQyiKk3UXRuT45h1RjhfeCzqkjaVsfZJNaxdgtk7/3tzOm1ozLTqEqMP3VbI48jw=="
},
"@types/glob": { "@types/glob": {
"version": "5.0.33", "version": "5.0.33",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.33.tgz", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.33.tgz",
@ -31,7 +26,7 @@
"dev": true, "dev": true,
"requires": { "requires": {
"@types/minimatch": "3.0.1", "@types/minimatch": "3.0.1",
"@types/node": "8.0.54" "@types/node": "8.0.58"
} }
}, },
"@types/long": { "@types/long": {
@ -53,12 +48,9 @@
"dev": true "dev": true
}, },
"@types/node": { "@types/node": {
"version": "8.0.54", "version": "8.0.58",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.54.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.58.tgz",
"integrity": "sha512-qetMdTv3Ytz9u9ESLdcYs45LPI0mczYZIbC184n7kY0jczOqPNQsabBfVCh+na3B2shAfvC459JqHV771A8Rxg==", "integrity": "sha512-V746iUU7eHNdzQipoACuguDlVhC7IHK8CES1jSkuFt352wwA84BCWPXaGekBd7R5XdNK5ReHONDVKxlL9IreAw=="
"requires": {
"@types/events": "1.1.0"
}
}, },
"acorn": { "acorn": {
"version": "4.0.13", "version": "4.0.13",

View File

@ -11,7 +11,7 @@
"url": "https://github.com/AssemblyScript/next/issues" "url": "https://github.com/AssemblyScript/next/issues"
}, },
"dependencies": { "dependencies": {
"@types/node": "^8.0.54", "@types/node": "^8.0.58",
"binaryen": "40.0.0-nightly.20171209", "binaryen": "40.0.0-nightly.20171209",
"minimist": "^1.2.0", "minimist": "^1.2.0",
"source-map-support": "^0.5.0" "source-map-support": "^0.5.0"
@ -34,7 +34,7 @@
"main": "index.js", "main": "index.js",
"types": "index.d.ts", "types": "index.d.ts",
"bin": { "bin": {
"asc": "bin/asc.js" "asc": "bin/asc"
}, },
"scripts": { "scripts": {
"build": "webpack", "build": "webpack",

View File

@ -42,11 +42,11 @@ globalScope["load"] = function load(ptr) {
var Module = require("../module").Module; var Module = require("../module").Module;
Module.prototype.toBinary = function toBinary(bufferSize) { Module.prototype.toBinary = function toBinary(bufferSize) {
if (!bufferSize) bufferSize = 1024 * 1024; // FIXME: see binaryen.js-post.js in Binaryen if (!bufferSize) bufferSize = 1024 * 1024; // FIXME: see binaryen.js-post.js in Binaryen
var ptr = _malloc(bufferSize); var ptr = Heap.allocate(bufferSize);
var len = this.write(ptr, bufferSize); var len = this.write(ptr, bufferSize);
var ret = new Uint8Array(len); var ret = new Uint8Array(len);
ret.set(binaryen.HEAPU8.subarray(ptr, ptr + len)); ret.set(binaryen.HEAPU8.subarray(ptr, ptr + len));
_free(ptr); Heap.dispose(ptr);
return ret; return ret;
}; };
Module.prototype.toText = function toText() { Module.prototype.toText = function toText() {