~ chicken-core (chicken-5) 17f79a6647636b0ddfe5bc3302af2cb844f34792
commit 17f79a6647636b0ddfe5bc3302af2cb844f34792
Merge: dc683fc0 ad16d1de
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Wed Mar 23 07:09:54 2011 -0400
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Wed Mar 23 07:09:54 2011 -0400
resolved conflicts§
diff --cc batch-driver.scm
index ba0280bf,0946f4ce..8ad64d8d
--- a/batch-driver.scm
+++ b/batch-driver.scm
@@@ -540,42 -535,13 +541,15 @@@
(set! first-analysis #f)
(set! db (analyze 'scrutiny node0))
(print-db "analysis" '|0| db 0)
- (end-time "pre-analysis")
+ (end-time "pre-analysis (scrutiny)")
(begin-time)
(debugging 'p "performing scrutiny")
- (scrutinize node0 db)
+ (scrutinize node0 db do-scrutinize do-specialize)
(end-time "scrutiny")
+ (when do-specialize
+ (print-node "specialization" '|P| node0))
(set! first-analysis #t) ) )
- (when do-lambda-lifting
- (begin-time)
- (unless do-scrutinize ; no need to do analysis if already done
- (set! first-analysis #f) ; (and not specialized)
- (set! db (analyze 'lift node0))
- (print-db "analysis" '|0| db 0)
- (end-time "pre-analysis (lambda-lift)"))
- (begin-time)
- (perform-lambda-lifting! node0 db)
- (end-time "lambda lifting")
- (print-node "lambda lifted" '|L| node0)
- (set! first-analysis #t) )
-
- ;; lambda-lifting
- (when do-lambda-lifting
- (begin-time)
- (unless do-scrutinize ; no need to do analysis if already done above
- (set! first-analysis #f)
- (set! db (analyze 'lift node0))
- (print-db "analysis" '|0| db 0)
- (end-time "pre-analysis (lambda-lift)"))
- (begin-time)
- (perform-lambda-lifting! node0 db)
- (end-time "lambda lifting")
- (print-node "lambda lifted" '|L| node0)
- (set! first-analysis #t) )
-
(set! ##sys#line-number-database #f)
(set! constant-table #f)
(set! inline-table #f)
diff --cc c-platform.scm
index 12e86254,cc1e8f48..b3546c49
--- a/c-platform.scm
+++ b/c-platform.scm
@@@ -84,8 -84,8 +84,8 @@@
check-syntax to-stdout no-usual-integrations case-insensitive no-lambda-info
profile inline keep-shadowed-macros ignore-repository
fixnum-arithmetic disable-interrupts optimize-leaf-routines
- lambda-lift compile-syntax tag-pointers accumulate-profile
+ compile-syntax tag-pointers accumulate-profile
- disable-stack-overflow-checks raw
+ disable-stack-overflow-checks raw specialize
emit-external-prototypes-first release local inline-global
analyze-only dynamic scrutinize no-argc-checks no-procedure-checks
no-procedure-checks-for-toplevel-bindings module
diff --cc chicken.scm
index 8b35e7cc,fa65cbea..72c17a99
--- a/chicken.scm
+++ b/chicken.scm
@@@ -85,29 -85,23 +85,42 @@@
(set! options (cons 'optimize-leaf-routines options)) )
((2)
(set! options
-- (cons* 'optimize-leaf-routines 'inline 'unboxing
++ (cons* 'optimize-leaf-routines
++ 'inline
++ 'unboxing
options)) )
((3)
(set! options
- (cons* 'optimize-leaf-routines 'inline 'inline-global
- (cons* 'optimize-leaf-routines 'inline 'inline-global 'unboxing 'local
++ (cons* 'optimize-leaf-routines
++ 'inline
++ 'inline-global
+ 'unboxing 'local
+ 'specialize
options) ) )
((4)
(set! options
- (cons* 'optimize-leaf-routines 'inline 'inline-global
- (cons* 'optimize-leaf-routines 'inline 'inline-global 'unboxing
++ (cons* 'optimize-leaf-routines
++ 'inline
++ 'inline-global
+ 'unboxing
+ 'specialize
'local 'unsafe
options) ) )
(else
(when (>= level 5)
(set! options
-- (cons* 'disable-interrupts 'no-trace 'unsafe 'block
- 'optimize-leaf-routines 'lambda-lift
- 'optimize-leaf-routines 'no-lambda-info
- 'inline 'inline-global 'unboxing
++ (cons* 'disable-interrupts
++ 'no-trace
++ 'unsafe
++ 'block
++ 'optimize-leaf-routines
+ 'no-lambda-info
+ 'specialize
- 'inline 'inline-global 'unboxing
++ 'optimize-leaf-routines
++ 'no-lambda-info
++ 'inline
++ 'inline-global
++ 'unboxing
options) ) ) ) )
(loop (cdr rest)) ) )
((eq? 'debug-level o)
diff --cc compiler-namespace.scm
index 6246570f,b158a2dd..de3869ad
--- a/compiler-namespace.scm
+++ b/compiler-namespace.scm
@@@ -97,7 -97,7 +97,11 @@@
display-analysis-database
display-line-number-database
display-real-name-table
++<<<<<<< HEAD
+ do-lambda-lifting
++=======
+ do-scrutinize
++>>>>>>> experimental
dump-defined-globals
dump-global-refs
dump-nodes
diff --cc manual/Using the compiler
index c42e25be,00d8c079..ea782275
--- a/manual/Using the compiler
+++ b/manual/Using the compiler
@@@ -50,11 -49,8 +49,9 @@@ the source text should be read from sta
x display information about experimental features
D when printing nodes, use node-tree output
N show the real-name mapping table
- 0 show database before lambda-lifting pass
S show applications of compiler syntax
T show expressions after converting to node tree
+ P show expressions after specialization
- L show expressions after lambda-lifting
U show expressions after unboxing
M show syntax-/runtime-requirements
1 show source expressions
@@@ -161,9 -155,9 +156,9 @@@
-optimize-level 0 is equivalent to -no-usual-integrations -no-compiler-syntax
-optimize-level 1 is equivalent to -optimize-leaf-routines
-optimize-level 2 is equivalent to -optimize-leaf-routines -inline -unboxing
- -optimize-level 3 is equivalent to -optimize-leaf-routines -local -inline -inline-global -unboxing
- -optimize-level 4 is equivalent to -optimize-leaf-routines -local -inline -inline-global -unboxing -unsafe
- -optimize-level 5 is equivalent to -optimize-leaf-routines -block -inline -inline-global -unsafe -unboxing -disable-interrupts -no-trace -no-lambda-info
+ -optimize-level 3 is equivalent to -optimize-leaf-routines -local -inline -inline-global -unboxing -specialize
+ -optimize-level 4 is equivalent to -optimize-leaf-routines -local -inline -inline-global -unboxing -specialize -unsafe
- -optimize-level 5 is equivalent to -optimize-leaf-routines -block -inline -inline-global -unboxing -specialize -unsafe -lambda-lift -disable-interrupts -no-trace -no-lambda-info
++ -optimize-level 5 is equivalent to -optimize-leaf-routines -block -inline -inline-global -unboxing -specialize -unsafe -disable-interrupts -no-trace -no-lambda-info
; -output-file FILENAME : Specifies the pathname of the generated C file. Default is {{FILENAME.c}}.
Trap