# HG changeset patch # User Matthew Wild # Date 1290255166 0 # Node ID 80cc68dd8222dbe9864899b1a2eb7596b8d71d74 # Parent e4324d9a824cba882288bfac472686accd36f5e8 Rename default_environment to _G, use registerLib() for baselib and add math lib with 2 ldexp, floor diff -r e4324d9a824c -r 80cc68dd8222 lvm.js --- 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)