Hi Tim,
> The compiler clearly knows if it’s emitting a function with _ENV as the
first upvalue, since it takes care to ensure it is always the first
upvalue in the function. However, this information doesnt seem to make
it into the compiled chunk anywhere (that I can see).
You may try to avoid this problem by serializing a special value instead of _ENV. When you serialize the upvalues, you know if the first one points to the _ENV for the given function, so just store a special table value for it, so that when you deserialize it to setup proper value, you know that this function expects _ENV as the first upvalue, so you can do whatever is appropriate in this case.
Paul.