aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2020-07-12 16:48:56 +0300
committerArnold D. Robbins <arnold@skeeve.com>2020-07-12 16:48:56 +0300
commit8f54bef8fb8293b376d17eb872be3d64ed4125dc (patch)
tree2dd59400fe8967e0eab892318fa0898218821f67
parent7a7a86db7f6294a72f4ec8758f50c4646e2c6aef (diff)
downloadegawk-8f54bef8fb8293b376d17eb872be3d64ed4125dc.tar.gz
egawk-8f54bef8fb8293b376d17eb872be3d64ed4125dc.tar.bz2
egawk-8f54bef8fb8293b376d17eb872be3d64ed4125dc.zip
Improve instruction tracing.
-rw-r--r--ChangeLog4
-rw-r--r--mpfr.c41
2 files changed, 35 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 74c81252..761ef63c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2020-07-12 Arnold D. Robbins <arnold@skeeve.com>
+
+ * mpfr.c (mpg_interpret): Make the instruction tracing more sane.
+
2020-07-10 Arnold D. Robbins <arnold@skeeve.com>
Fix printf issues. Thanks to Michal Jaegermann for the report.
diff --git a/mpfr.c b/mpfr.c
index 6959e4cd..f581aba8 100644
--- a/mpfr.c
+++ b/mpfr.c
@@ -1527,8 +1527,37 @@ mpg_interpret(INSTRUCTION **cp)
op = pc->opcode;
if (do_itrace) {
- fprintf(stderr, "+ mpg_interpret: %s: ", opcode2str(op));
- fflush(stderr);
+ switch (op) {
+ case Op_plus_i:
+ case Op_plus:
+ case Op_minus_i:
+ case Op_minus:
+ case Op_times_i:
+ case Op_times:
+ case Op_exp_i:
+ case Op_exp:
+ case Op_quotient_i:
+ case Op_quotient:
+ case Op_mod_i:
+ case Op_mod:
+ case Op_preincrement:
+ case Op_predecrement:
+ case Op_postincrement:
+ case Op_postdecrement:
+ case Op_unary_minus:
+ case Op_unary_plus:
+ case Op_assign_plus:
+ case Op_assign_minus:
+ case Op_assign_times:
+ case Op_assign_quotient:
+ case Op_assign_mod:
+ case Op_assign_exp:
+ fprintf(stderr, "++ %s: mpg_interpret\n", opcode2str(op));
+ fflush(stderr);
+ // fall thru to break
+ default:
+ break;
+ }
}
switch (op) {
@@ -1756,18 +1785,10 @@ mod:
break;
default:
- if (do_itrace) {
- fprintf(stderr, "unhandled\n");
- fflush(stderr);
- }
return true; /* unhandled */
}
*cp = pc->nexti; /* next instruction to execute */
- if (do_itrace) {
- fprintf(stderr, "handled\n");
- fflush(stderr);
- }
return false;
}