mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-15 16:01:30 +00:00
More cleanup
This commit is contained in:
52
src/glue/js/binaryen.js
Normal file
52
src/glue/js/binaryen.js
Normal file
@ -0,0 +1,52 @@
|
||||
// Copy Binaryen exports to global scope
|
||||
|
||||
const binaryen = global.Binaryen || require("binaryen");
|
||||
|
||||
for (var key in binaryen)
|
||||
if (key.startsWith("_Binaryen") || key.startsWith("_Relooper"))
|
||||
global[key] = binaryen[key];
|
||||
|
||||
// Utilize Binaryen's heap
|
||||
|
||||
global.allocate_memory = function(size) {
|
||||
if (!size) return 0; // should be safe in our case
|
||||
return binaryen._malloc(size);
|
||||
};
|
||||
|
||||
global.free_memory = function(ptr) {
|
||||
if (ptr) binaryen._free(ptr);
|
||||
};
|
||||
|
||||
global.move_memory = function(dest, src, n) {
|
||||
return binaryen._memmove(dest, src, n);
|
||||
};
|
||||
|
||||
global.store = function(ptr, val) {
|
||||
binaryen.HEAPU8[ptr] = val;
|
||||
};
|
||||
|
||||
global.load = function(ptr) {
|
||||
return binaryen.HEAPU8[ptr];
|
||||
};
|
||||
|
||||
// Implement module stubs
|
||||
|
||||
const Module = require("../../module").Module;
|
||||
|
||||
Module.prototype.toText = function toText() {
|
||||
var previousPrint = binaryen.print;
|
||||
var ret = "";
|
||||
binaryen.print = function(x) { ret += x + "\n" };
|
||||
_BinaryenModulePrint(this.ref);
|
||||
binaryen.print = previousPrint;
|
||||
return ret;
|
||||
};
|
||||
|
||||
Module.prototype.toAsmjs = function toAsmjs() {
|
||||
var previousPrint = binaryen.print;
|
||||
var ret = "";
|
||||
binaryen.print = function(x) { ret += x + "\n" };
|
||||
_BinaryenModulePrintAsmjs(this.ref);
|
||||
binaryen.print = previousPrint;
|
||||
return ret;
|
||||
};
|
Reference in New Issue
Block a user