debug/squish.debug.lua

1
local cs = require "minichunkspy"
2
 
3
local function ___adjust_chunk(chunk, newname, lineshift)
4
	local c = cs.disassemble(string.dump(chunk));
5
	c.body.name = newname;
6
 
7
	lineshift = -c.body.line;
8
	local function shiftlines(c)
9
		c.line = c.line + lineshift;
10
		c.last_line = c.last_line + lineshift;
11
		for i, line in ipairs(c.source_lines) do
12
			c.source_lines[i] = line+lineshift;
13
		end
14
		for i, f in ipairs(c.prototypes) do
15
			shiftlines(f);
16
		end
17
	end
18
	shiftlines(c.body);
19
 
20
	return assert(loadstring(cs.assemble(c), newname))();
21
end