diff --git a/collects/tests/typed-scheme/optimizer/tests/known-length-lists.rkt b/collects/tests/typed-scheme/optimizer/tests/known-length-lists.rkt index 34e3fa03..9522a91e 100644 --- a/collects/tests/typed-scheme/optimizer/tests/known-length-lists.rkt +++ b/collects/tests/typed-scheme/optimizer/tests/known-length-lists.rkt @@ -1,18 +1,18 @@ #; ( -TR opt: known-length-lists.rkt 39:1 length -- known-length list length -TR opt: known-length-lists.rkt 40:1 list-ref -- known-length list op -TR opt: known-length-lists.rkt 41:1 list-ref -- known-length list op -TR opt: known-length-lists.rkt 42:1 list-ref -- known-length list op -TR opt: known-length-lists.rkt 43:1 list-tail -- known-length list op -TR opt: known-length-lists.rkt 44:1 list-tail -- known-length list op -TR opt: known-length-lists.rkt 45:1 list-tail -- known-length list op -TR opt: known-length-lists.rkt 46:1 list-ref -- known-length list op -TR opt: known-length-lists.rkt 47:1 list-ref -- known-length list op -TR opt: known-length-lists.rkt 48:1 list-ref -- known-length list op -TR opt: known-length-lists.rkt 49:1 list-tail -- known-length list op -TR opt: known-length-lists.rkt 50:1 list-tail -- known-length list op -TR opt: known-length-lists.rkt 51:1 list-tail -- known-length list op +TR opt: known-length-lists.rkt 39:0 (length l) -- known-length list length +TR opt: known-length-lists.rkt 40:0 (list-ref l i) -- known-length list op +TR opt: known-length-lists.rkt 41:0 (list-ref l j) -- known-length list op +TR opt: known-length-lists.rkt 42:0 (list-ref l k) -- known-length list op +TR opt: known-length-lists.rkt 43:0 (list-tail l i) -- known-length list op +TR opt: known-length-lists.rkt 44:0 (list-tail l j) -- known-length list op +TR opt: known-length-lists.rkt 45:0 (list-tail l k) -- known-length list op +TR opt: known-length-lists.rkt 46:0 (list-ref l 0) -- known-length list op +TR opt: known-length-lists.rkt 47:0 (list-ref l 1) -- known-length list op +TR opt: known-length-lists.rkt 48:0 (list-ref l 2) -- known-length list op +TR opt: known-length-lists.rkt 49:0 (list-tail l 0) -- known-length list op +TR opt: known-length-lists.rkt 50:0 (list-tail l 1) -- known-length list op +TR opt: known-length-lists.rkt 51:0 (list-tail l 2) -- known-length list op '(1 2 3) 3 1 diff --git a/collects/tests/typed-scheme/optimizer/tests/unary-fixnum-nested.rkt b/collects/tests/typed-scheme/optimizer/tests/unary-fixnum-nested.rkt index ab6a8f8c..411b86c6 100644 --- a/collects/tests/typed-scheme/optimizer/tests/unary-fixnum-nested.rkt +++ b/collects/tests/typed-scheme/optimizer/tests/unary-fixnum-nested.rkt @@ -1,7 +1,8 @@ #; ( -TR opt: unary-fixnum-nested.rkt 11:0 (bitwise-not (bitwise-not (length (quote (1 2 3))))) -- unary fixnum -TR opt: unary-fixnum-nested.rkt 11:13 (bitwise-not (length (quote (1 2 3)))) -- unary fixnum +TR opt: unary-fixnum-nested.rkt 12:0 (bitwise-not (bitwise-not (length (quote (1 2 3))))) -- unary fixnum +TR opt: unary-fixnum-nested.rkt 12:13 (bitwise-not (length (quote (1 2 3)))) -- unary fixnum +TR opt: unary-fixnum-nested.rkt 12:26 (length (quote (1 2 3))) -- known-length list length 3 ) diff --git a/collects/typed-scheme/optimizer/list.rkt b/collects/typed-scheme/optimizer/list.rkt index f00166e3..fb822759 100644 --- a/collects/typed-scheme/optimizer/list.rkt +++ b/collects/typed-scheme/optimizer/list.rkt @@ -41,12 +41,16 @@ [_ -1])))) ; sure to fail the next check (<= 0 ival (sub1 len))) #:with opt - (begin (log-optimization "known-length list op" #'op) + (begin (log-optimization "known-length list op" + "List access specialization." + this-syntax) #`(op.unsafe l.opt #,((optimize) #'i)))) ;; We know the length of known-length lists statically. (pattern (#%plain-app (~and op (~literal length)) l:known-length-list-expr) #:with opt - (begin (log-optimization "known-length list length" #'op) + (begin (log-optimization "known-length list length" + "Static list length computation." + this-syntax) (match (type-of #'l) [(tc-result1: (List: es)) #`(begin l.opt #,(length es))]))))