[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Upvalues when dump/load a function?
- From: Tim Hill <drtimhill@...>
- Date: Thu, 24 May 2012 10:14:45 -0700
Would anyone like to comment on the behavior of this code? It prints "local x" and "nil", which is probably correct, but odd. I understand that "load()" compiles code in a global context, but when I have the output of string.dump() its not really being compiled again, is it? It's just packaged VM bytecodes. Given that, what happens to the upvalues? The ref manual for 5.2 simply says "with new upvalues" when a dumped function is loaded, but makes no mention of what this means, and of course in the code sample there ARE no upvalues to bind to the function anyway.
x = "global x"
do
local x = "local x"
function foo() print(x) end
end
foo()
sf = string.dump(foo)
f2 = load(sf, "", "bt", _ENV)
f2()