~ chicken-core (chicken-5) bd3a68b105f20f0643d2f5d10c53409a82ae0ef2
commit bd3a68b105f20f0643d2f5d10c53409a82ae0ef2 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Fri Dec 30 12:39:56 2011 +0100 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Fri Jan 20 08:51:29 2012 +0100 -debug e shows specializations, sorted output of -debug h diff --git a/scrutinizer.scm b/scrutinizer.scm index a0ac015a..e3a91715 100755 --- a/scrutinizer.scm +++ b/scrutinizer.scm @@ -799,7 +799,7 @@ (let ((rn (walk (first (node-subexpressions node)) '() '() #f #f (list (tag)) #f))) (when (pair? specialization-statistics) (with-debugging-output - 'o + '(o e) (lambda () (print "specializations:") (for-each @@ -807,9 +807,9 @@ (printf " ~a ~s~%" (cdr ss) (car ss))) specialization-statistics)))) (when (positive? safe-calls) - (debugging 'o "safe calls" safe-calls)) + (debugging '(o e) "safe calls" safe-calls)) (when (positive? dropped-branches) - (debugging 'o "dropped branches" dropped-branches)) + (debugging '(o e) "dropped branches" dropped-branches)) (when errors (quit "some variable types do not satisfy strictness")) rn))) diff --git a/support.scm b/support.scm index c02dc893..38fa20c7 100644 --- a/support.scm +++ b/support.scm @@ -84,15 +84,20 @@ (for-each (lambda (ln) (fprintf collected-debugging-output "~a|~a~%" - mode ln)) + (if (pair? mode) (car mode) mode) + ln)) (string-split text "\n"))) - (cond ((memq mode debugging-chicken) + (define (test-mode mode set) + (if (symbol? mode) + (memq mode set) + (pair? (lset-intersection eq? mode set)))) + (cond ((test-mode mode debugging-chicken) (let ((txt (with-output-to-string thunk))) (display txt) (flush-output) - (when (memq mode +logged-debugging-modes+) + (when (test-mode mode +logged-debugging-modes+) (collect txt)))) - ((memq mode +logged-debugging-modes+) + ((test-mode mode +logged-debugging-modes+) (collect (with-output-to-string thunk))))) (define (quit msg . args) @@ -1719,27 +1724,29 @@ EOF Available debugging options: - t show time needed for compilation + a show node-matching during simplification b show breakdown of time needed for each compiler pass - o show performed optimizations + c print every expression before macro-expansion + d lists all assigned global variables + e show information about specializations + h you already figured that out i show information about inlining - r show invocation parameters - s show program-size information and other statistics - a show node-matching during simplification - p display information about what the compiler is currently doing m show GC statistics during compilation n print the line-number database - c print every expression before macro-expansion + o show performed optimizations + p display information about what the compiler is currently doing + r show invocation parameters + s show program-size information and other statistics + t show time needed for compilation u lists all unassigned global variable references - d lists all assigned global variables - I show inferred type information for unexported globals x display information about experimental features D when printing nodes, use node-tree output + I show inferred type information for unexported globals + M show syntax-/runtime-requirements N show the real-name mapping table + P show expressions after specialization S show applications of compiler syntax T show expressions after converting to node tree - P show expressions after specialization - M show syntax-/runtime-requirements 1 show source expressions 2 show canonicalized expressions 3 show expressions converted into CPS @@ -1749,7 +1756,6 @@ Available debugging options: 7 show expressions after complete optimization 8 show database after final analysis 9 show expressions after closure conversion - h you already figured that out EOFTrap