UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

59 lines 4.48 kB
// Used to generate unique labels. let ID = 0; function newLabel(name) { return `$_label_${name}_${ID++}`; } export function wasm_call(funcName, ...args) { if (args.length === 0) return [`(call $${funcName})`]; return [`(call $${funcName}`, args, ")"]; } /** * Pops a value from the stack, and discards it. * @see [MDN](https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/Control_flow/Drop) */ export function wasm_drop() { return ["drop"]; } /** * @see [MDN](https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/Control_flow/if...else) */ export function wasm_if(condition, thenBloc, elseBloc) { return wasm_if_typed(null, condition, thenBloc, elseBloc); } /** * @see [MDN](https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/Control_flow/if...else) */ export function wasm_if_i32(condition, thenBloc, elseBloc) { return wasm_if_typed("i32", condition, thenBloc, elseBloc); } /** * @see [MDN](https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/Control_flow/if...else) */ export function wasm_if_i64(condition, thenBloc, elseBloc) { return wasm_if_typed("i64", condition, thenBloc, elseBloc); } /** * @see [MDN](https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/Control_flow/if...else) */ export function wasm_if_f32(condition, thenBloc, elseBloc) { return wasm_if_typed("f32", condition, thenBloc, elseBloc); } /** * @see [MDN](https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/Control_flow/if...else) */ export function wasm_if_f64(condition, thenBloc, elseBloc) { return wasm_if_typed("f64", condition, thenBloc, elseBloc); } export function wasm_if_typed(type, condition, thenBloc, elseBloc) { return [ `(if ${type ? `(result ${type})` : ""}`, [...condition, "(then", ...thenBloc, ")", ...(elseBloc ? ["(else", elseBloc, ")"] : [])], ")", ]; } export function wasm_while(condition, body) { const label = newLabel("loop"); return [`(loop ${label}`, wasm_if(condition, [...body, `(br ${label})`]), ")"]; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93YXNtL2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsa0NBQWtDO0FBQ2xDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUVWLFNBQVMsUUFBUSxDQUFDLElBQVk7SUFDMUIsT0FBTyxXQUFXLElBQUksSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFBO0FBQ3BDLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLFFBQWdCLEVBQUUsR0FBRyxJQUFtQjtJQUM5RCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sQ0FBQyxVQUFVLFFBQVEsR0FBRyxDQUFDLENBQUE7SUFDckQsT0FBTyxDQUFDLFVBQVUsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQzVDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsU0FBUztJQUNyQixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDbkIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxTQUF3QixFQUFFLFFBQXVCLEVBQUUsUUFBd0I7SUFDL0YsT0FBTyxhQUFhLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDN0QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxTQUF3QixFQUFFLFFBQXVCLEVBQUUsUUFBdUI7SUFDbEcsT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxTQUF3QixFQUFFLFFBQXVCLEVBQUUsUUFBdUI7SUFDbEcsT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxTQUF3QixFQUFFLFFBQXVCLEVBQUUsUUFBdUI7SUFDbEcsT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxTQUF3QixFQUFFLFFBQXVCLEVBQUUsUUFBdUI7SUFDbEcsT0FBTyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQ3pCLElBQXFCLEVBQ3JCLFNBQXdCLEVBQ3hCLFFBQXVCLEVBQ3ZCLFFBQXdCO0lBRXhCLE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3ZDLENBQUMsR0FBRyxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hGLEdBQUc7S0FDTixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsU0FBd0IsRUFBRSxJQUFtQjtJQUNwRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDOUIsT0FBTyxDQUFDLFNBQVMsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ2xGLENBQUMifQ==