mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-16 16:31:32 +00:00
Parser fixes; Lib updates
This commit is contained in:
@ -1,21 +1,103 @@
|
||||
module.exports = function(module) {
|
||||
return {
|
||||
getI32: function(ptr) {
|
||||
return new Int32Array(module.memory.buffer, ptr, 4)[0];
|
||||
},
|
||||
getU32: function(ptr) {
|
||||
return new Uint32Array(module.memory.buffer, ptr, 4)[0];
|
||||
},
|
||||
getF32: function(ptr) {
|
||||
return new Float32Array(module.memory.buffer, ptr, 4)[0];
|
||||
},
|
||||
getF64: function(ptr) {
|
||||
return new Float64Array(module.memory.buffer, ptr, 8)[0];
|
||||
},
|
||||
getString: function(ptr) {
|
||||
var len = new Uint32Array(module.memory.buffer, ptr, 4)[0];
|
||||
var str = new Uint16Array(module.memory.buffer, ptr + 4, len << 1);
|
||||
return String.fromCharCode.apply(String, str);
|
||||
}
|
||||
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 }
|
||||
});
|
||||
|
Reference in New Issue
Block a user