Rename default_environment to _G, use registerLib() for baselib and add math lib with 2 ldexp, floor

Sat, 20 Nov 2010 12:12:46 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Sat, 20 Nov 2010 12:12:46 +0000
changeset 97
80cc68dd8222
parent 96
e4324d9a824c
child 98
14d2400ec059

Rename default_environment to _G, use registerLib() for baselib and add math lib with 2 ldexp, floor

lvm.js file | annotate | diff | comparison | revisions
--- a/lvm.js	Sat Nov 20 12:11:34 2010 +0000
+++ b/lvm.js	Sat Nov 20 12:12:46 2010 +0000
@@ -629,7 +629,7 @@
 var sys=require("sys");
 var c = new LBinaryChunk(testvm, fs.readFileSync("luac.out", "binary"));
 
-var default_environment = testvm.LValue({});
+var _G = testvm.LValue({});
 
 // Standard library
 
@@ -663,10 +663,20 @@
 	}
 };
 
-for(var name in baselib)
-{
-	default_environment.setIndex(testvm.LValue(name), testvm.LValue(baselib[name]));
-}
+var math = {
+	ldexp: function (m, e)
+	{
+		sys.puts("ldexp(): m: "+sys.inspect(m)+" e: "+sys.inspect(e));
+		return [this.LValue(m.value*Math.pow(2, e.value))];
+	},
+	floor: function (x)
+	{
+		return [this.LValue(Math.floor(x.value))];
+	}
+};
+
+testvm.registerLib(_G, null, baselib);
+testvm.registerLib(_G, "math", math);
 
 // Metatable on environment to print out nil global accesses
 var mt = testvm.LValue({});
@@ -674,10 +684,10 @@
 	testvm.LValue("__index"),
 	testvm.LValue(function (t, k) { sys.puts("Access of nil global: "+k); })
 );
-default_environment.setMetatable(mt);
+_G.setMetatable(mt);
 
 
-var f = new LFunction(testvm, c, default_environment);
+var f = new LFunction(testvm, c, _G);
 
 	var ret = testvm.call(f);
 	if(ret)

mercurial