Sat, 20 Nov 2010 12:12:46 +0000
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)