added a parameter to switch between different letrec handling routines
This commit is contained in:
parent
832fe616d2
commit
cda06eba58
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
|
|
||||||
(module (debug-scc optimize-letrec)
|
(module (debug-scc optimize-letrec current-letrec-pass)
|
||||||
|
|
||||||
|
|
||||||
(define (unique-prelex x)
|
(define (unique-prelex x)
|
||||||
|
@ -468,10 +468,20 @@
|
||||||
(define debug-scc (make-parameter #f))
|
(define debug-scc (make-parameter #f))
|
||||||
|
|
||||||
(define current-letrec-pass
|
(define current-letrec-pass
|
||||||
(make-parameter optimize-letrec/scc))
|
(make-parameter 'scc
|
||||||
|
(lambda (x)
|
||||||
|
(if (memq x '(scc waddell basic))
|
||||||
|
x
|
||||||
|
(die 'current-letrec-pass "invalid" x)))))
|
||||||
|
|
||||||
|
|
||||||
(define (optimize-letrec x)
|
(define (optimize-letrec x)
|
||||||
((current-letrec-pass) x)))
|
(case (current-letrec-pass)
|
||||||
|
[(scc) (optimize-letrec/scc x)]
|
||||||
|
[(waddell) (optimize-letrec/waddell x)]
|
||||||
|
[(basic) (optimize-letrec/basic x)]
|
||||||
|
[else (die 'optimize-letrec "invalid" (current-letrec-pass))]))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
expand expand/optimize expand/scc-letrec optimizer-output
|
expand expand/optimize expand/scc-letrec optimizer-output
|
||||||
cp0-effort-limit cp0-size-limit optimize-level
|
cp0-effort-limit cp0-size-limit optimize-level
|
||||||
perform-tag-analysis tag-analysis-output
|
perform-tag-analysis tag-analysis-output
|
||||||
strip-source-info generate-debug-calls)
|
strip-source-info generate-debug-calls current-letrec-pass)
|
||||||
(import
|
(import
|
||||||
(rnrs hashtables)
|
(rnrs hashtables)
|
||||||
(ikarus system $fx)
|
(ikarus system $fx)
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
cp0-size-limit cp0-effort-limit
|
cp0-size-limit cp0-effort-limit
|
||||||
expand/optimize expand/scc-letrec expand optimizer-output
|
expand/optimize expand/scc-letrec expand optimizer-output
|
||||||
tag-analysis-output perform-tag-analysis
|
tag-analysis-output perform-tag-analysis
|
||||||
current-core-eval)
|
current-core-eval current-letrec-pass)
|
||||||
(ikarus include)
|
(ikarus include)
|
||||||
(ikarus.fasl.write)
|
(ikarus.fasl.write)
|
||||||
(ikarus.intel-assembler))
|
(ikarus.intel-assembler))
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
1823
|
1824
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
;;; vim:syntax=scheme
|
;;; vim:syntax=scheme
|
||||||
(import (only (ikarus) import))
|
(import (only (ikarus) import))
|
||||||
(import (except (ikarus)
|
(import (except (ikarus)
|
||||||
|
current-letrec-pass
|
||||||
current-core-eval
|
current-core-eval
|
||||||
assembler-output optimize-cp optimize-level
|
assembler-output optimize-cp optimize-level
|
||||||
cp0-size-limit cp0-effort-limit expand/optimize
|
cp0-size-limit cp0-effort-limit expand/optimize
|
||||||
|
@ -1502,6 +1503,7 @@
|
||||||
[cp0-effort-limit i]
|
[cp0-effort-limit i]
|
||||||
[tag-analysis-output i]
|
[tag-analysis-output i]
|
||||||
[perform-tag-analysis i]
|
[perform-tag-analysis i]
|
||||||
|
[current-letrec-pass i]
|
||||||
[pointer? $for]
|
[pointer? $for]
|
||||||
[pointer->integer $for]
|
[pointer->integer $for]
|
||||||
[integer->pointer $for]
|
[integer->pointer $for]
|
||||||
|
|
Loading…
Reference in New Issue