~ chicken-core (chicken-5) 3bbdbf47f3888b56bd1fd76ea0071870502c6aa3
commit 3bbdbf47f3888b56bd1fd76ea0071870502c6aa3 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Sat May 7 12:48:07 2011 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Sat May 7 12:48:07 2011 +0200 added specialize declaration diff --git a/batch-driver.scm b/batch-driver.scm index dfb115cf..4905f15b 100644 --- a/batch-driver.scm +++ b/batch-driver.scm @@ -94,7 +94,6 @@ (dynamic (memq 'dynamic options)) (unbox (memq 'unboxing options)) (do-scrutinize (memq 'scrutinize options)) - (do-specialize (memq 'specialize options)) (dumpnodes #f) (start-time #f) (upap #f) @@ -172,6 +171,7 @@ (when (memq 'ignore-repository options) (set! ##sys#dload-disabled #t) (repository-path #f)) + (set! enable-specialization (memq 'specialize options)) (set! debugging-chicken (append-map (lambda (do) @@ -534,7 +534,7 @@ (load-inline-file ilf) ) ifs))) - (when (or strict-variable-types do-scrutinize do-specialize) + (when (or strict-variable-types do-scrutinize nablöe-) ;;XXX hardcoded database file name (unless (memq 'ignore-repository options) (load-type-database "types.db")) @@ -550,9 +550,9 @@ (end-time "pre-analysis (scrutiny)") (begin-time) (debugging 'p "performing scrutiny") - (scrutinize node0 db do-scrutinize do-specialize) + (scrutinize node0 db do-scrutinize enable-specialization) (end-time "scrutiny") - (when do-specialize + (when enable-specialization (print-node "specialization" '|P| node0)) (set! first-analysis #t) ) ) diff --git a/compiler-namespace.scm b/compiler-namespace.scm index 2af152bc..a8cacfa4 100644 --- a/compiler-namespace.scm +++ b/compiler-namespace.scm @@ -97,11 +97,6 @@ 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 @@ -114,6 +109,7 @@ emit-trace-info emit-type-file enable-inline-files + enable-specialization encode-literal eq-inline-operator error-is-extended-binding diff --git a/compiler.scm b/compiler.scm index 88a84f7e..c1e18837 100644 --- a/compiler.scm +++ b/compiler.scm @@ -72,6 +72,7 @@ ; (unused <symbol> ...) ; (uses {<unitname>}) ; (unsafe-specialized-arithmetic) +; (specialize) ; ; <type> = fixnum | generic @@ -336,6 +337,7 @@ (define unchecked-specialized-arithmetic #f) (define bootstrap-mode #f) (define struct-variable-types #f) +(define enable-specialization #f) ;;; These are here so that the backend can access them: @@ -1522,6 +1524,8 @@ (else (warning "illegal `predicate' declaration" spec)))) (cdr spec))) + ((specialize) + (set! enable-specialization #t)) ((unsafe-specialized-arithmetic) (set! unchecked-specialized-arithmetic #t)) (else (warning "illegal declaration specifier" spec)) ) diff --git a/manual/Declarations b/manual/Declarations index 489630cb..0bec4e45 100644 --- a/manual/Declarations +++ b/manual/Declarations @@ -264,6 +264,13 @@ procedures. Enables scrutiny. This is equivalent to passing the {{-scrutinize}} option to the compiler. +=== specializat + + [declaration specifier] (specialize) + +Enables specialization. This is equivalent to passing the {{-specialize}} option to the compiler. + + === standard-bindings [declaration specifier] (standard-bindings SYMBOL ...)Trap