-O1 disables call precoloring
authorAndy Wingo <wingo@pobox.com>
Thu, 30 Nov 2017 15:58:58 +0000 (16:58 +0100)
committerAndy Wingo <wingo@igalia.com>
Thu, 30 Nov 2017 16:02:27 +0000 (17:02 +0100)
* module/language/cps/compile-bytecode.scm (compile-function)
  (emit-bytecode):
* module/language/cps/slot-allocation.scm (allocate-slots):
* module/language/cps/optimize.scm (cps-default-optimization-options):
  Allow the "lazy vars" optimization, a form of slot precoloring, to be
  disabled.  It will be disabled at -O0 or -O1, to speed compilation
  times.

module/language/cps/compile-bytecode.scm
module/language/cps/optimize.scm
module/language/cps/slot-allocation.scm

index c283eb614d3252048be788bbdbc29ee080f8406f..f6805f38d605d09714551e9245c63cf145266cbf 100644 (file)
@@ -81,8 +81,9 @@
                     (_ forwarding-labels)))
                 cps empty-intmap)))
 
-(define (compile-function cps asm)
-  (let* ((allocation (allocate-slots cps))
+(define (compile-function cps asm opts)
+  (let* ((allocation (allocate-slots cps #:precolor-calls?
+                                     (kw-arg-ref opts #:precolor-calls? #t)))
          (forwarding-labels (compute-forwarding-labels cps allocation))
          (frame-size (lookup-nlocals allocation)))
     (define (forward-label k)
 (define (emit-bytecode exp env opts)
   (let ((asm (make-assembler)))
     (intmap-for-each (lambda (kfun body)
-                       (compile-function (intmap-select exp body) asm))
+                       (compile-function (intmap-select exp body) asm opts))
                      (compute-reachable-functions exp 0))
     (values (link-assembly asm #:page-aligned? (kw-arg-ref opts #:to-file? #f))
             env
index b1cbc89a7b473522513d38a8d0eb4684cce9ad28..522de512438129b504ee8ee6e5bef3d46225f5ad 100644 (file)
    #:resolve-self-references? #t
    #:specialize-numbers? #t
    #:licm? #t
-   #:rotate-loops? #t))
+   #:rotate-loops? #t
+   ;; This one is used by the slot allocator.
+   #:precolor-calls? #t))
index fe20303cc0dd5e627a940cccc00594bfde349675..2d95f42625d435ba5d23eeb7810c2a41ccffbb6b 100644 (file)
@@ -856,14 +856,16 @@ are comparable with eqv?.  A tmp slot may be used."
    cps
    empty-intmap))
 
-(define (allocate-slots cps)
+(define* (allocate-slots cps #:key (precolor-calls? #t))
   (let*-values (((defs uses) (compute-defs-and-uses cps))
                 ((representations) (compute-var-representations cps))
                 ((live-in live-out) (compute-live-variables cps defs uses))
                 ((constants) (compute-constant-values cps))
                 ((needs-slot) (compute-needs-slot cps defs uses))
-                ((lazy) (compute-lazy-vars cps live-in live-out defs
-                                           needs-slot)))
+                ((lazy) (if precolor-calls?
+                            (compute-lazy-vars cps live-in live-out defs
+                                               needs-slot)
+                            empty-intset)))
 
     (define (empty-live-slots)
       #b0)