Add LVM.traceback() function

Wed, 24 Nov 2010 02:52:01 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Wed, 24 Nov 2010 02:52:01 +0000
changeset 137
6872878601d9
parent 136
0b31998aad53
child 138
f9bb0e212d28

Add LVM.traceback() function

lvm.js file | annotate | diff | comparison | revisions
--- a/lvm.js	Wed Nov 24 02:51:38 2010 +0000
+++ b/lvm.js	Wed Nov 24 02:52:01 2010 +0000
@@ -776,6 +776,21 @@
 		var c = new LBinaryChunk(this, chunk);
 		var f = new LFunction(this, c, env);
 		return new LValue(this, "function", f);
+	},
+	traceback: function ()
+	{
+		var trace = [];
+		for(var i=this.callstack.length-1; i>=0; i--)
+		{
+			var currframe = testvm.callstack[i];
+			var currfunc = currframe.f;
+			var sourceName = (currfunc.sourceName||"=?").substr(1);
+			var line = "?";
+			if(currfunc.sourceLines && currfunc.sourceLines[currframe.pc-1])
+				line = currfunc.sourceLines[currframe.pc-1];
+			trace.push({ sourceName: sourceName, line: line });
+		}
+		return trace;
 	}
 };
 

mercurial