* Optimize-closure-size is done. Code reduced to 1.686MB from
1.82MB. Bootstrap time down to 2.185s.
This commit is contained in:
		
							parent
							
								
									3906f165ff
								
							
						
					
					
						commit
						ea44b68b7c
					
				
							
								
								
									
										
											BIN
										
									
								
								lib/ikarus.boot
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/ikarus.boot
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -1218,11 +1218,9 @@ | |||
|            (set! all-codes | ||||
|              (cons (make-clambda-code label cls* free*) all-codes)) | ||||
|            g))])) | ||||
|   (define (optimize-one-closure x) | ||||
|     (record-case x  | ||||
|       [(closure code free*) | ||||
|        (let ([free* (trim-vars free*)]) | ||||
|          (make-closure (trim/lift-code code free*) free*))])) | ||||
|   (define (optimize-one-closure code free) | ||||
|     (let ([free (trim-vars free)]) | ||||
|       (make-closure (trim/lift-code code free) free))) | ||||
|   (define (trim p? ls) | ||||
|     (cond | ||||
|       [(null? ls) '()] | ||||
|  | @ -1247,7 +1245,7 @@ | |||
|       (define-record node (name code deps whacked free)) | ||||
|       (let ([node* (map (lambda (lhs rhs)  | ||||
|                           (let ([n (make-node lhs (closure-code rhs) '() #f '())]) | ||||
|                             (make-thunk-var x n) | ||||
|                             (make-thunk-var lhs n) | ||||
|                             n)) | ||||
|                         lhs* rhs*)]) | ||||
|         ;;; if x is free in y, then whenever x becomes a non-thunk, | ||||
|  | @ -1297,7 +1295,9 @@ | |||
|           (for-each  | ||||
|             (lambda (x) | ||||
|               (set-closure-code! x | ||||
|                 (trim/lift-code (closure-code x)))) | ||||
|                 (trim/lift-code  | ||||
|                   (closure-code x) | ||||
|                   (closure-free* x)))) | ||||
|             rhs*) | ||||
|           ;;; | ||||
|           (make-fix (trim-vars lhs*) | ||||
|  | @ -1871,6 +1871,7 @@ | |||
|   (define (check? x) | ||||
|     (cond | ||||
|       [(primref? x) #f]  ;;;; PRIMREF CHECK | ||||
|       [(closure? x) #f] | ||||
|       [else         #t])) | ||||
|   (define (do-new-frame op rand* si r call-convention rp-convention orig-live) | ||||
|     (make-new-frame (fxadd1 si) (fx+ (length rand*) 2) | ||||
|  | @ -4030,8 +4031,8 @@ | |||
|          [p (copy-propagate p)] | ||||
|          [p (rewrite-assignments p)] | ||||
|          [p (convert-closures p)] | ||||
|          ;[p (optimize-closures p)] | ||||
|          [p (lift-codes p)] | ||||
|          [p (optimize-closures/lift-codes p)] | ||||
|          ;[p (lift-codes p)] | ||||
|          [p (introduce-primcalls p)] | ||||
|          [p (simplify-operands p)] | ||||
|          [p (insert-stack-overflow-checks p)] | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Abdulaziz Ghuloum
						Abdulaziz Ghuloum