shithub: mc

Download patch

ref: 358de40c2f56409ced4d76cd2c4201c609457dac
parent: 5844080dc4a5657a63716162272da4d26a818c76
author: Ori Bernstein <ori@eigenstate.org>
date: Thu Dec 28 18:51:32 EST 2017

Simplify tracing.

	Less noise, less code.

--- a/lib/regex/interp.myr
+++ b/lib/regex/interp.myr
@@ -203,6 +203,9 @@
 	;;
 	while re.nthr > 0
 		while re.runq != Zthr
+			if re.trace
+				std.put("switch\n")
+			;;
 			/* set up the next thread */
 			thr = re.runq
 			re.runq = thr.next
@@ -423,35 +426,20 @@
 
 const itrace = {re, thr, inst
 	match inst
-	| `Ibyte b:	trace(re, thr, "\t{}: Byte ({})\n", thr.ip, b)
-	| `Irange (lo, hi):	trace(re, thr, "\t{}: Range {}, {}\n", thr.ip, lo, hi)
-	| `Ilbra m:	trace(re, thr, "\t{}: Lbra {}\n", thr.ip, m)
-	| `Irbra m:	trace(re, thr, "\t{}: Rbra {}\n", thr.ip, m)
+	| `Ibyte b:	std.put("\t{}.{}:\tByte ({})\n", thr.tid, thr.ip, thr.tid, thr.ip, b)
+	| `Irange (lo, hi):	std.put("\t{}.{}:\tRange {}, {}\n", thr.tid, thr.ip, lo, hi)
+	| `Ilbra m:	std.put("\t{}.{}:\tLbra {}\n", thr.tid, thr.ip, m)
+	| `Irbra m:	std.put("\t{}.{}:\tRbra {}\n", thr.tid, thr.ip, m)
 	/* anchors */
-	| `Ibol:	trace(re, thr, "\t{}: Bol\n", thr.ip)
-	| `Ieol:	trace(re, thr, "\t{}: Eol\n", thr.ip)
-	| `Ibow:	trace(re, thr, "\t{}: Bow\n", thr.ip)
-	| `Ieow:	trace(re, thr, "\t{}: Eow\n", thr.ip)
+	| `Ibol:	std.put("\t{}.{}:\tBol\n", thr.tid, thr.ip)
+	| `Ieol:	std.put("\t{}.{}:\tEol\n", thr.tid, thr.ip)
+	| `Ibow:	std.put("\t{}.{}:\tBow\n", thr.tid, thr.ip)
+	| `Ieow:	std.put("\t{}.{}:\tEow\n", thr.tid, thr.ip)
 
 	/* control flow */
-	| `Ifork (l, r):	trace(re, thr, "\t{}: Fork {}, {}\n", thr.ip, l, r)
-	| `Ijmp	ip:	trace(re, thr, "\t{}: Jmp {}\n", thr.ip, ip)
-	| `Imatch m:	trace(re, thr, "\t{}: Match {}\n", thr.ip, m)
-	;;
-}
-
-const trace : (re : regex#, thr : rethread#, msg : byte[:], args : ... -> void) = {re, thr, msg, args
-	var ap
-
-	if re.trace && thr != Zthr
-		ap = std.vastart(&args)
-		std.putv(msg, &ap)
-		std.put("\t{}\n", re.pat)
-		std.put("\t")
-		for var i = 0; i < re.pcidx[thr.ip] - 1; i++
-			std.put(" ")
-		;;
-		std.put("^\n")
+	| `Ifork (l, r):	std.put("\t{}.{}:\tFork {}, {}\n", thr.tid, thr.ip, l, r)
+	| `Ijmp	ip:	std.put("\t{}.{}:\tJmp {}\n", thr.tid, thr.ip, ip)
+	| `Imatch m:	std.put("\t{}.{}:\tMatch {}\n", thr.tid, thr.ip, m)
 	;;
 }