Mon, 24 May 2010 12:55:03 +0100
Give LFunctions a vm property
lvm.js | file | annotate | diff | comparison | revisions |
--- a/lvm.js Mon May 24 12:54:20 2010 +0100 +++ b/lvm.js Mon May 24 12:55:03 2010 +0100 @@ -260,11 +260,12 @@ return (INS_Bx(ins)-0x1FFFF); } -function LFunction(chunk, env) +function LFunction(vm, chunk, env) { function F() {}; F.prototype = chunk; var o = new F(); + o.vm = vm; o.environment = env; o.chunk = chunk; o.upvalues = []; @@ -377,7 +378,7 @@ case OP_CLOSURE: var prototype_id = INS_Bx(instruction); var chunk = frame.f.chunk.prototypes[prototype_id]; - var f = new LFunction(chunk, frame.f.environment); + var f = new LFunction(this, chunk, frame.f.environment); reg[INS_A(instruction)] = new LValue("function", f); for(var i=0;i<chunk.numUpvalues;i++) { @@ -468,7 +469,7 @@ default_environment.setIndex(LValueFromString("print"), LValueFromFunction(print)); -var f = new LFunction(c, default_environment); +var f = new LFunction(this, c, default_environment); try{ testvm.call(f);