debug/squish.debug.lua

changeset 34
0e34461ab2a6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debug/squish.debug.lua	Mon Jul 27 03:32:13 2009 +0100
@@ -0,0 +1,22 @@
+
+local cs = require "minichunkspy"
+
+local function ___adjust_chunk(chunk, newname, lineshift)
+	local c = cs.disassemble(string.dump(chunk));
+	c.body.name = newname;
+
+	lineshift = -c.body.line;
+	local function shiftlines(c)
+		c.line = c.line + lineshift;
+		c.last_line = c.last_line + lineshift;
+		for i, line in ipairs(c.source_lines) do
+			c.source_lines[i] = line+lineshift;
+		end
+		for i, f in ipairs(c.prototypes) do
+			shiftlines(f);
+		end
+	end
+	shiftlines(c.body);
+
+	return assert(loadstring(cs.assemble(c), newname))();
+end

mercurial