UNPKG

killawat

Version:

KillaWAT is a WebAssembly Text Macro Assembler

350 lines (305 loc) 8.2 kB
function consumeArray(keyword, next_token) { switch (keyword) { // CONTROL FLOW case "if": case "br_if": return [DATA_TYPE.I32]; case "drop": return [DATA_TYPE.ANY]; //case "select": break; // VARIABLE case "local.set": case "set_local": case "global.set": case "set_global": return [DATA_TYPE.ANY]; // I32 case "i32.clz": case "i32.ctz": case "i32.popcnt": case "i32.eqz": return [DATA_TYPE.I32]; case "i32.add": case "i32.sub": case "i32.mul": case "i32.div_s": case "i32.div_u": case "i32.rem_s": case "i32.rem_u": case "i32.and": case "i32.or": case "i32.xor": case "i32.shl": case "i32.shr_s": case "i32.shr_u": case "i32.rotl": case "i32.rotr": case "i32.eq": case "i32.ne": case "i32.lt_s": case "i32.lt_u": case "i32.le_s": case "i32.le_u": case "i32.gt_s": case "i32.gt_u": case "i32.ge_s": case "i32.ge_u": return [DATA_TYPE.I32, DATA_TYPE.I32]; // I64 case "i64.clz": case "i64.ctz": case "i64.popcnt": case "i64.eqz": return [DATA_TYPE.I64]; case "i64.add": case "i64.sub": case "i64.mul": case "i64.div_s": case "i64.div_u": case "i64.rem_s": case "i64.rem_u": case "i64.and": case "i64.or": case "i64.xor": case "i64.shl": case "i64.shr_s": case "i64.shr_u": case "i64.rotl": case "i64.rotr": case "i64.eq": case "i64.ne": case "i64.lt_s": case "i64.lt_u": case "i64.le_s": case "i64.le_u": case "i64.gt_s": case "i64.gt_u": case "i64.ge_s": case "i64.ge_u": return [DATA_TYPE.I64, DATA_TYPE.I64]; // F32 case "f32.neg": case "f32.abs": case "f32.ceil": case "f32.floor": case "f32.trunc": case "f32.nearest": case "f32.sqrt": return [DATA_TYPE.F32]; case "f32.add": case "f32.sub": case "f32.mul": case "f32.div": case "f32.copysign": case "f32.min": case "f32.max": case "f32.eq": case "f32.ne": case "f32.lt": case "f32.le": case "f32.gt": case "f32.ge": return [DATA_TYPE.F32, DATA_TYPE.F32]; // F64 case "f64.neg": case "f64.abs": case "f64.ceil": case "f64.floor": case "f64.trunc": case "f64.nearest": case "f64.sqrt": return [DATA_TYPE.F64]; case "f64.add": case "f64.sub": case "f64.mul": case "f64.div": case "f64.copysign": case "f64.min": case "f64.max": case "f64.eq": case "f64.ne": case "f64.lt": case "f64.le": case "f64.gt": case "f64.ge": return [DATA_TYPE.F64, DATA_TYPE.F64]; case "i32.trunc_s.f32": case "i32.trunc_s/f32": case "i32.trunc_s[f32]": case "i32.trunc_s_f32": case "i32.trunc_f32_s": case "i32.trunc_u.f32": case "i32.trunc_u/f32": case "i32.trunc_u[f32]": case "i32.trunc_u_f32": case "i32.trunc_f32_u": case "i32.reinterpret": case "i32.reinterpret.f32": case "i32.reinterpret/f32": case "i32.reinterpret[f32]": case "i32.reinterpret_f32": // I64 DATATYPE CONVERSION case "i64.trunc_s.f32": case "i64.trunc_s/f32": case "i64.trunc_s[f32]": case "i64.trunc_s_f32": case "i64.trunc_f32_s": case "i64.trunc_u.f32": case "i64.trunc_u/f32": case "i64.trunc_u[f32]": case "i64.trunc_u_f32": case "i64.trunc_f32_u": case "f64.promote": case "f64.promote.f32": case "f64.promote/f32": case "f64.promote[f32]": case "f64.promote_f32": return [DATA_TYPE.F32]; case "f32.demote": case "f32.demote.f64": case "f32.demote/f64": case "f32.demote[f64]": case "f32.demote_f64": case "i32.trunc_s.f64": case "i32.trunc_s/f64": case "i32.trunc_s[f64]": case "i32.trunc_s_f64": case "i32.trunc_f64_s": case "i32.trunc_u.f64": case "i32.trunc_u/f64": case "i32.trunc_u[f64]": case "i32.trunc_u_f64": case "i32.trunc_f64_u": case "i64.trunc_s.f64": case "i64.trunc_s/f64": case "i64.trunc_s[f64]": case "i64.trunc_s_f64": case "i64.trunc_f64_s": case "i64.trunc_u.f64": case "i64.trunc_u/f64": case "i64.trunc_u[f64]": case "i64.trunc_u_f64": case "i64.trunc_f64_u": case "i64.reinterpret": case "i64.reinterpret.f64": case "i64.reinterpret/f64": case "i64.reinterpret[f64]": case "i64.reinterpret_f64": return [DATA_TYPE.F64]; case "i64.extend_s": case "i64.extend_s.i32": case "i64.extend_s/i32": case "i64.extend_s[i32]": case "i64.extend_s_i32": case "i64.extend_i32_s": case "i64.extend_u": case "i64.extend_u.i32": case "i64.extend_u/i32": case "i64.extend_u[i32]": case "i64.extend_u_i32": case "i64.extend_i32_u": // F32 DATATYPE CONVERSION case "f32.reinterpret": case "f32.reinterpret.i32": case "f32.reinterpret/i32": case "f32.reinterpret[i32]": case "f32.reinterpret_i32": case "f32.convert_s": case "f32.convert_s.i32": case "f32.convert_s/i32": case "f32.convert_s[i32]": case "f32.convert_s_i32": case "f32.convert_i32_s": case "f32.convert_u": case "f32.convert_u.i32": case "f32.convert_u/i32": case "f32.convert_u[i32]": case "f32.convert_u_i32": case "f32.convert_u_i32_u": case "f64.convert_s.i32": case "f64.convert_s/i32": case "f64.convert_s[i32]": case "f64.convert_s_i32": case "f64.convert_i32_s": case "f64.convert_u.i32": case "f64.convert_u/i32": case "f64.convert_u[i32]": case "f64.convert_u_i32": case "f64.convert_i32_u": return [DATA_TYPE.I32]; case "i32.wrap": case "i32.wrap.i64": case "i32.wrap/i64": case "i32.wrap[i64]": case "i32.wrap_i64": case "f32.convert_s": case "f32.convert_s.i64": case "f32.convert_s/i64": case "f32.convert_s[i64]": case "f32.convert_s_i64": case "f32.convert_i64_s": case "f32.convert_u": case "f32.convert_u.i64": case "f32.convert_u/i64": case "f32.convert_u[i64]": case "f32.convert_u_i64": case "f32.convert_i64_u": // F64 DATATYPE CONVERSION case "f64.reinterpret": case "f64.reinterpret.i64": case "f64.reinterpret/i64": case "f64.reinterpret[i64]": case "f64.reinterpret_i64": case "f64.convert_s.i64": case "f64.convert_s/i64": case "f64.convert_s[i64]": case "f64.convert_s_i64": case "f64.convert_i64_s": case "f64.convert_u.i64": case "f64.convert_u/i64": case "f64.convert_u[i64]": case "f64.convert_u_i64": case "f64.convert_i64_u": return [DATA_TYPE.I64]; // FUNCTION CALLS case "call": case "call_indirect": return [DATA_TYPE.TYPEDEF]; // I32 LINEAR MEMORY case "i32.load": case "i32.load8_s": case "i32.load8_u": case "i32.load16_s": case "i32.load16_u": return [DATA_TYPE.I32]; case "i32.store": case "i32.store8": case "i32.store16": return [DATA_TYPE.I32, DATA_TYPE.I32]; // I64 LINEAR MEMORY case "i64.load": case "i64.load8_s": case "i64.load8_u": case "i64.load16_s": case "i64.load16_u": case "i64.load32_s": case "i64.load32_u": return [DATA_TYPE.I32]; case "i64.store": case "i64.store8": case "i64.store16": case "i64.store32": return [DATA_TYPE.I32, DATA_TYPE.I64]; // F32 LINEAR MEMORY case "f32.load": return [DATA_TYPE.I32]; case "f32.store": return [DATA_TYPE.I32, DATA_TYPE.F32]; // F64 LINEAR MEMORY case "f64.load": return [DATA_TYPE.I32]; case "f64.store": return [DATA_TYPE.I32, DATA_TYPE.F64]; default: break; } }