lvm.js

changeset 43
ecfa7896af35
parent 42
741b953fcc5f
child 44
f5244bce28ce
--- 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);

mercurial