wasm-metering
Version:
injects metering into webassembly binaries
156 lines (142 loc) • 3.27 kB
JavaScript
const NO_FLOATS = () => {
throw new Error('no floating point operations are allowed')
}
const NO_START = () => {
throw new Error('no floating point operations are allowed')
}
module.exports = {
'start': NO_START,
'type': {
'params': {
'i32': 1,
'i64': 1,
'f32': NO_FLOATS,
'f64': NO_FLOATS
},
'return_type': {
'i32': 1,
'i64': 1,
'f32': NO_FLOATS,
'f64': NO_FLOATS
}
},
'import': 1,
'code': {
'locals': {
'i32': 1,
'i64': 1,
'f32': NO_FLOATS,
'f64': NO_FLOATS
},
'code': {
'name': {
'DEFAULT': NO_FLOATS,
'get_local': 120,
'set_local': 120,
'tee_local': 120,
'get_global': 120,
'set_global': 120,
'i32.load8_s': 120,
'i32.load8_u': 120,
'i32.load16_s': 120,
'i32.load16_u': 120,
'i32.load': 120,
'i64.load8_s': 120,
'i64.load8_u': 120,
'i64.load16_s': 120,
'i64.load16_u': 120,
'i64.load32_s': 120,
'i64.load32_u': 120,
'i64.load': 120,
'i32.store8': 120,
'i32.store16': 120,
'i32.store': 120,
'i64.store8': 120,
'i64.store16': 120,
'i64.store32': 120,
'i64.store': 120,
'grow_memory': 10000,
'current_memory': 10000,
'nop': 1,
'block': 1,
'loop': 1,
'if': 1,
'then': 90,
'else': 90,
'br': 90,
'br_if': 90,
'br_table': 120,
'return': 90,
'call': 90,
'call_indirect': 10000,
'i32.const': 0,
'i64.const': 0,
'i32.add': 45,
'i32.sub': 45,
'i32.mul': 45,
'i32.div_s': 36000,
'i32.div_u': 36000,
'i32.rem_s': 36000,
'i32.rem_u': 36000,
'i32.and': 45,
'i32.or': 45,
'i32.xor': 45,
'i32.shl': 67,
'i32.shr_u': 67,
'i32.shr_s': 67,
'i32.rotl': 90,
'i32.rotr': 90,
'i32.eq': 45,
'i32.eqz': 45,
'i32.ne': 45,
'i32.lt_s': 45,
'i32.lt_u': 45,
'i32.le_s': 45,
'i32.le_u': 45,
'i32.gt_s': 45,
'i32.gt_u': 45,
'i32.ge_s': 45,
'i32.ge_u': 45,
'i32.clz': 45,
'i32.ctz': 45,
'i32.popcnt': 45,
'i64.add': 45,
'i64.sub': 45,
'i64.mul': 45,
'i64.div_s': 36000,
'i64.div_u': 36000,
'i64.rem_s': 36000,
'i64.rem_u': 36000,
'i64.and': 45,
'i64.or': 45,
'i64.xor': 45,
'i64.shl': 67,
'i64.shr_u': 67,
'i64.shr_s': 67,
'i64.rotl': 90,
'i64.rotr': 90,
'i64.eq': 45,
'i64.eqz': 45,
'i64.ne': 45,
'i64.lt_s': 45,
'i64.lt_u': 45,
'i64.le_s': 45,
'i64.le_u': 45,
'i64.gt_s': 45,
'i64.gt_u': 45,
'i64.ge_s': 45,
'i64.ge_u': 45,
'i64.clz': 45,
'i64.ctz': 45,
'i64.popcnt': 45,
'i32.wrap/i64': 120,
'i64.extend_s/i32': 120,
'i64.extend_u/i32': 120,
'drop': 120,
'select': 120,
'unreachable': 0
}
}
},
'data': 1
}