Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function decodeSmi(smi: number): number {
switch (smi & 0b111) {
case PrimitiveType.NUMBER:
return smi >> 3;
case PrimitiveType.NEGATIVE:
return -(smi >> 3);
default:
throw unreachable();
}
}
let value = primitive >> 3;
switch (flag) {
case PrimitiveType.NUMBER:
stack.push(value);
break;
case PrimitiveType.FLOAT:
stack.push(vm[CONSTANTS].getNumber(value));
break;
case PrimitiveType.STRING:
stack.push(vm[CONSTANTS].getString(value));
break;
case PrimitiveType.BOOLEAN_OR_VOID:
stack.pushEncodedImmediate(primitive);
break;
case PrimitiveType.NEGATIVE:
stack.push(vm[CONSTANTS].getNumber(value));
break;
case PrimitiveType.BIG_NUM:
stack.push(vm[CONSTANTS].getNumber(value));
break;
}
},
OpcodeKind.Mut
function encodeSmi(primitive: number) {
if (primitive < 0) {
return Math.abs(primitive) << 3 | PrimitiveType.NEGATIVE;
} else {
return primitive << 3 | PrimitiveType.NUMBER;
}
}