mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-25 07:02:13 +00:00
parent
eeb8a8fd6c
commit
59e2a63b83
@ -7,7 +7,7 @@ import {
|
||||
ExternalKind,
|
||||
NameType,
|
||||
MAX_PAGES,
|
||||
MAX_TABLES,
|
||||
MAX_ELEMS,
|
||||
Opcode
|
||||
} from "../src/common";
|
||||
|
||||
@ -199,7 +199,7 @@ export function parse(begin: usize, end: usize): void {
|
||||
let type = readVarint(7) & 0x7f;
|
||||
let flags = readVaruint(1);
|
||||
let initial = readVaruint(32);
|
||||
let maximum: u32 = flags & 1 ? readVaruint(32) : MAX_TABLES;
|
||||
let maximum = flags & 1 ? readVaruint(32) : <u32>MAX_ELEMS;
|
||||
opt.onTableImport(
|
||||
tbl_space_index++,
|
||||
type,
|
||||
@ -212,7 +212,7 @@ export function parse(begin: usize, end: usize): void {
|
||||
case ExternalKind.Memory: {
|
||||
let flags = readVaruint(1);
|
||||
let initial = readVaruint(32);
|
||||
let maximum: u32 = flags & 1 ? readVaruint(32) : MAX_PAGES;
|
||||
let maximum = flags & 1 ? readVaruint(32) : <u32>MAX_PAGES;
|
||||
opt.onMemoryImport(
|
||||
mem_space_index++,
|
||||
initial,
|
||||
@ -247,12 +247,29 @@ export function parse(begin: usize, end: usize): void {
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SectionId.Table: {
|
||||
let count = readVaruint(32);
|
||||
for (let index: u32 = 0; index < count; ++index) {
|
||||
let type = readVaruint(7) & 0x7f;
|
||||
let flags = readVaruint(1);
|
||||
let initial = readVaruint(32);
|
||||
let maximum = flags & 1 ? readVaruint(32) : <u32>MAX_ELEMS;
|
||||
opt.onTable(
|
||||
tbl_space_index++,
|
||||
type,
|
||||
initial,
|
||||
maximum,
|
||||
flags
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SectionId.Memory: {
|
||||
let count = readVaruint(32);
|
||||
for (let index: u32 = 0; index < count; ++index) {
|
||||
let flags = readVaruint(1);
|
||||
let initial = readVaruint(32);
|
||||
let maximum: u32 = flags ? readVaruint(32) : MAX_PAGES;
|
||||
let maximum = flags & 1 ? readVaruint(32) : <u32>MAX_PAGES;
|
||||
opt.onMemory(
|
||||
mem_space_index++,
|
||||
initial,
|
||||
|
@ -10,6 +10,7 @@ export declare function onMemoryImport(index: u32, initial: u32, maximum: u32, f
|
||||
export declare function onGlobalImport(index: u32, type: u32, mutability: u32): void;
|
||||
export declare function onMemory(index: u32, initial: u32, maximum: u32, flags: u32): void;
|
||||
export declare function onFunction(index: u32, typeIndex: u32): void;
|
||||
export declare function onTable(index: u32, type: u32, initial: u32, maximum: u32, flags: u32): void;
|
||||
export declare function onGlobal(index: u32, type: u32, mutability: u32): void;
|
||||
export declare function onExport(index: u32, kind: u32, kindIndex: u32, nameOffset: u32, nameLength: u32): void;
|
||||
export declare function onStart(index: u32): void;
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -42,11 +42,11 @@ export enum NameType {
|
||||
Local = 2
|
||||
}
|
||||
|
||||
/** Maximum number of pages. */
|
||||
/** Maximum number of memory pages. */
|
||||
export const MAX_PAGES = 0xffff;
|
||||
|
||||
/** Maximum number of tables. */
|
||||
export const MAX_TABLES = 1; // MVP
|
||||
/** Maximum number of table elements. */
|
||||
export const MAX_ELEMS = 0xffffffff;
|
||||
|
||||
/** WebAssembly opcodes. */
|
||||
export enum Opcode { // just a few of these are actually used
|
||||
|
@ -31,6 +31,8 @@ export interface ParseOptions {
|
||||
onMemory?(index: number, initial: number, maximum: number, flags: number): void;
|
||||
/** Called with each function if the function section is evaluated. */
|
||||
onFunction?(index: number, typeIndex: number): void;
|
||||
/** Called with each table if the table section is evaluated.*/
|
||||
onTable?(index: number, type: Type, initial: number, maximum: number, flags: number): void;
|
||||
/** Called with each global if the global section is evaluated. */
|
||||
onGlobal?(index: number, type: Type, mutability: number): void;
|
||||
/** Called with the start function index if the start section is evaluated. */
|
||||
@ -82,6 +84,7 @@ export function parse(binary: Uint8Array, options?: ParseOptions): void {
|
||||
"onGlobalImport",
|
||||
"onMemory",
|
||||
"onFunction",
|
||||
"onTable",
|
||||
"onGlobal",
|
||||
"onExport",
|
||||
"onStart",
|
||||
|
@ -54,6 +54,10 @@ function onFunction(funIndex: number, typeIndex: number): void {
|
||||
console.log("- Function[" + funIndex + "] -> FunctionType[" + typeIndex + "]");
|
||||
}
|
||||
|
||||
function onTable(tblIndex: number, type: number, initial: number, maximum: number, flags: number): void {
|
||||
console.log("- Table[" + tblIndex + "] -> " + Type[type] + ": initial=" + initial + ", maximum=" + (maximum >>> 0));
|
||||
}
|
||||
|
||||
function onGlobal(gloIndex: number, type: Type, mutability: number): void {
|
||||
console.log("- Global[" + gloIndex + "]: " + (mutability & 1 ? "mutable " : "const ") + Type[type]);
|
||||
}
|
||||
@ -104,6 +108,7 @@ function onLocalName(funcIndex: number, index: number, offset: number, length: n
|
||||
onGlobalImport,
|
||||
onMemory,
|
||||
onFunction,
|
||||
onTable,
|
||||
onGlobal,
|
||||
onStart,
|
||||
onExport,
|
||||
|
Loading…
x
Reference in New Issue
Block a user