mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-25 15:12:12 +00:00
104 lines
1.8 KiB
JavaScript
104 lines
1.8 KiB
JavaScript
function utils(module) {
|
|
|
|
var i8,
|
|
u8 = new Uint8Array(0),
|
|
i16,
|
|
u16,
|
|
i32,
|
|
u32,
|
|
f32,
|
|
f64;
|
|
|
|
function maybeUpdate() {
|
|
var mem = module.memory.buffer;
|
|
if (mem.byteLength === u8.length)
|
|
return;
|
|
i8 = Int8Array(mem);
|
|
u8 = Uint8Array(mem);
|
|
i16 = Int16Array(mem);
|
|
u16 = Uint16Array(mem);
|
|
i32 = Int32Array(mem);
|
|
u32 = Uint32Array(mem);
|
|
f32 = Float32Array(mem);
|
|
f64 = Float64Array(mem);
|
|
}
|
|
|
|
var helpers = {
|
|
|
|
i8: function(ptr) {
|
|
maybeUpdate();
|
|
return i8[ptr];
|
|
},
|
|
|
|
u8: function(ptr) {
|
|
maybeUpdate();
|
|
return u8[ptr];
|
|
},
|
|
|
|
i16: function(ptr) {
|
|
maybeUpdate();
|
|
return i16[ptr >>> 1];
|
|
},
|
|
|
|
u16: function(ptr) {
|
|
maybeUpdate();
|
|
return u16[ptr >>> 1];
|
|
},
|
|
|
|
i32: function(ptr) {
|
|
maybeUpdate();
|
|
return i32[ptr >>> 2];
|
|
},
|
|
|
|
u32: function(ptr) {
|
|
maybeUpdate();
|
|
return u32[ptr >>> 2];
|
|
},
|
|
|
|
i64: function(ptr) {
|
|
maybeUpdate();
|
|
return {
|
|
low: i32[ptr >>> 2],
|
|
high: i32[(ptr >>> 2) + 1]
|
|
};
|
|
},
|
|
|
|
u64: function(ptr) {
|
|
maybeUpdate();
|
|
return {
|
|
low: u32[ptr >>> 2],
|
|
high: u32[(ptr >>> 2) + 1]
|
|
};
|
|
},
|
|
|
|
bool: function(ptr) {
|
|
maybeUpdate();
|
|
return u8[ptr] === 1;
|
|
},
|
|
|
|
f32: function(ptr) {
|
|
maybeUpdate();
|
|
return f32[ptr >>> 2];
|
|
},
|
|
|
|
f64: function(ptr) {
|
|
maybeUpdate();
|
|
return f64[ptr >>> 3];
|
|
},
|
|
|
|
string: function(ptr) {
|
|
maybeUpdate();
|
|
var len = u32[ptr >>> 2];
|
|
var off = (ptr >>> 1) + 2;
|
|
return String.fromCharCode.apply(String, u16.subarray(off, off + len));
|
|
}
|
|
};
|
|
|
|
return helpers;
|
|
};
|
|
|
|
Object.defineProperties(module.exports = utils, {
|
|
__esModule: { value: true },
|
|
default: { value: utils }
|
|
});
|