Here is an example of the output.
local bytecode = {
source_name = "test-class-name-resolution.nut",
function_name = "main"
literals = [
/*0*/ "A",
/*1*/ "_value",
/*2*/ "constructor",
/*3*/ "print",
],
parameters = [
/*0*/ "this",
/*1*/ "vargv",
],
outervalues = [
//[type, src, name],
],
localvarinfos = [
//[pos, name, start_op, end_op, scope, type],
/*0*/ [2, "a", 11, 13, 0, 1],
/*1*/ [1, "vargv", 0, 14, 1, 1],
/*2*/ [0, "this", 0, 14, 1, 1],
],
lineinfos = [
//[op, line],
/*0*/ [0, 1],
/*1*/ [9, 10],
/*2*/ [11, 11],
],
defaultparams = [],
instructions = [
//[op_str, op, arg0, arg1, arg2, arg3],
/*0*/ ["_OP_LOAD", 1, 2, 0, 0, 0], /* stk[2] <- literals[0] */
/*1*/ ["_OP_NEWOBJ", 33, 3, -1, 255, 2], /* stk[3], len(-1), NOT_CLASS(2) */
/*2*/ ["_OP_LOAD", 1, 4, 1, 0, 0], /* stk[4] <- literals[1] */
/*3*/ ["_OP_LOADNULLS", 24, 5, 1, 0, 0], /* stk_at_arg0[5 .. (arg0 + arg1(1))] = null */
/*4*/ ["_OP_NEWSLOTA", 58, 0, 3, 4, 5], /* flags(0), table_at_stk(3), key_at_stk(4), val_at_stk(5) */
/*5*/ ["_OP_LOAD", 1, 4, 2, 0, 0], /* stk[4] <- literals[2] */
/*6*/ ["_OP_CLOSURE", 48, 5, 0, 0, 0], /* stk_at_arg0[5] <- functions[0] == ("constructor"), isLanbda(0) */
/*7*/ ["_OP_NEWSLOTA", 58, 0, 3, 4, 5], /* flags(0), table_at_stk(3), key_at_stk(4), val_at_stk(5) */
/*8*/ ["_OP_NEWSLOT", 11, 2, 0, 2, 3], /* flags(2), table_at_stk(0), key_at_stk(2), val_at_stk(3) */
/*9*/ ["_OP_PREPCALLK", 8, 2, 0, 0, 3], /* closure_at_stk[2], stk[0].get(literals[0]) -> stk[3] */
/*10*/ ["_OP_CALL", 6, 2, 2, 3, 1], /* target[2], closure_at_stk[2], stackbase(3), nargs(1) */
/*11*/ ["_OP_PREPCALLK", 8, 3, 3, 0, 4], /* closure_at_stk[3], stk[0].get(literals[3]) -> stk[4] */
/*12*/ ["_OP_GETK", 9, 5, 1, 2, 0], /* stk[5] <- literals[1] */
/*13*/ ["_OP_CALL", 6, 255, 3, 4, 2], /* target[255], closure_at_stk[3], stackbase(4), nargs(2) */
/*14*/ ["_OP_RETURN", 23, 255, 0, 0, 0], /* _arg0(0xFF) != 0xFF ? stk[0] : null */
],
functions = [
/*function 0*/{
source_name = "test-class-name-resolution.nut",
function_name = "constructor"
literals = [
/*0*/ "print",
/*1*/ "dad",
/*2*/ "last",
/*3*/ "_value",
],
parameters = [
/*0*/ "this",
],
outervalues = [
//[type, src, name],
],
localvarinfos = [
//[pos, name, start_op, end_op, scope, type],
/*0*/ [1, "last", 6, 9, 1, 1],
/*1*/ [0, "this", 0, 10, 1, 1],
],
lineinfos = [
//[op, line],
/*0*/ [0, 3],
/*1*/ [0, 4],
/*2*/ [4, 5],
/*3*/ [6, 6],
/*4*/ [10, 7],
],
defaultparams = [],
instructions = [
//[op_str, op, arg0, arg1, arg2, arg3],
/*0*/ ["_OP_PREPCALLK", 8, 1, 0, 0, 2], /* closure_at_stk[1], stk[0].get(literals[0]) -> stk[2] */
/*1*/ ["_OP_GETK", 9, 3, 1, 0, 0], /* stk[3] <- literals[1] */
/*2*/ ["_OP_GETK", 9, 3, 2, 3, 0], /* stk[3] <- literals[2] */
/*3*/ ["_OP_CALL", 6, 255, 1, 2, 2], /* target[255], closure_at_stk[1], stackbase(2), nargs(2) */
/*4*/ ["_OP_GETK", 9, 1, 1, 0, 0], /* stk[1] <- literals[1] */
/*5*/ ["_OP_GETK", 9, 1, 2, 1, 0], /* stk[1] <- literals[2] */
/*6*/ ["_OP_DLOAD", 4, 2, 3, 3, 1], /* stk[2] <- literals[3] */ /* stk[3] <- literals[1] */
/*7*/ ["_OP_GET", 14, 3, 0, 3, 0], /* stk_at_arg0[3] = stk_at_arg1[0].get(stk_at_arg2(3)) */
/*8*/ ["_OP_GETK", 9, 3, 2, 3, 0], /* stk[3] <- literals[2] */
/*9*/ ["_OP_SET", 13, 255, 0, 2, 3],
/*10*/ ["_OP_RETURN", 23, 255, 0, 0, 0], /* _arg0(0xFF) != 0xFF ? stk[0] : null */
],
functions = [
],
stacksize = 5,
bgenerator = 0,
varparams = 0,
},
],
stacksize = 6,
bgenerator = 0,
varparams = 1,
}