|
1 | 1 | ;;; 4.ms
|
2 | 2 | ;;; Copyright 1984-2017 Cisco Systems, Inc.
|
3 |
| -;;; |
| 3 | +;;; |
4 | 4 | ;;; Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | ;;; you may not use this file except in compliance with the License.
|
6 | 6 | ;;; You may obtain a copy of the License at
|
7 |
| -;;; |
| 7 | +;;; |
8 | 8 | ;;; http://www.apache.org/licenses/LICENSE-2.0
|
9 |
| -;;; |
| 9 | +;;; |
10 | 10 | ;;; Unless required by applicable law or agreed to in writing, software
|
11 | 11 | ;;; distributed under the License is distributed on an "AS IS" BASIS,
|
12 | 12 | ;;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
293 | 293 | (if (eq? x 'a) (set! x 'c))
|
294 | 294 | (eq? x 'b))
|
295 | 295 |
|
296 |
| - (equivalent-expansion? |
| 296 | + (equivalent-expansion? |
297 | 297 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
298 | 298 | (expand/optimize '(if (not (not (f x))) e1 e2)))
|
299 | 299 | '(if (f x) e1 e2))
|
300 | 300 |
|
301 |
| - (equivalent-expansion? |
| 301 | + (equivalent-expansion? |
302 | 302 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
303 | 303 | (expand/optimize '(if (begin (set! x y) (if (begin (set! z y) (zero? h)) #f #t)) e1 e2)))
|
304 | 304 | '(begin (set! x y) (if (begin (set! z y) (#2%zero? h)) e2 e1)))
|
305 | 305 |
|
306 |
| - (equivalent-expansion? |
| 306 | + (equivalent-expansion? |
307 | 307 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
308 | 308 | (expand/optimize '(if (begin (set! x y) (if (begin (set! z y) (zero? h)) #f #f)) e1 e2)))
|
309 | 309 | '(begin (set! x y) (set! z y) (#2%zero? h) e2))
|
310 | 310 |
|
311 |
| - (equivalent-expansion? |
| 311 | + (equivalent-expansion? |
312 | 312 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
313 | 313 | (expand/optimize '(if (begin (set! x y) (if (begin (set! z y) (zero? h)) #t #t)) e1 e2)))
|
314 | 314 | '(begin (set! x y) (set! z y) (#2%zero? h) e1))
|
315 |
| - |
316 |
| - (equivalent-expansion? |
| 315 | + |
| 316 | + (equivalent-expansion? |
317 | 317 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
318 | 318 | (expand/optimize '(if (begin (set! x y) (if (begin (set! z y) (zero? h)) #t #f)) e1 e2)))
|
319 | 319 | '(if (begin (set! x y) (set! z y) (#2%zero? h)) e1 e2))
|
320 | 320 |
|
321 |
| - (equivalent-expansion? |
| 321 | + (equivalent-expansion? |
322 | 322 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
323 | 323 | (expand/optimize '(if (begin (set! x y) (if (begin (set! z y) (zero? h)) (begin (set! l z) #t) (begin (set! l y) #f))) e1 e2)))
|
324 | 324 | '(begin (set! x y) (if (begin (set! z y) (#2%zero? h)) (begin (set! l z) e1) (begin (set! l y) e2))))
|
325 | 325 |
|
326 |
| - (equivalent-expansion? |
| 326 | + (equivalent-expansion? |
327 | 327 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
328 | 328 | (expand/optimize '(if (begin (set! x y) (if (begin (set! z y) (zero? h)) (begin (set! l z) #t) (begin (set! l y) #t))) e1 e2)))
|
329 | 329 | '(begin (set! x y) (if (begin (set! z y) (#2%zero? h)) (set! l z) (set! l y)) e1))
|
|
333 | 333 | (expand/optimize '(if (begin (set! x y) (if (begin (set! z y) (zero? h)) (begin (set! l z) #f) (begin (set! l y) #f))) e1 e2)))
|
334 | 334 | '(begin (set! x y) (if (begin (set! z y) (#2%zero? h)) (set! l z) (set! l y)) e2))
|
335 | 335 |
|
336 |
| - (equivalent-expansion? |
| 336 | + (equivalent-expansion? |
337 | 337 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
338 | 338 | (expand/optimize '(if (begin (set! x y) (if (begin (set! z y) (zero? h)) (begin (set! l z) #f) (begin (set! l y) #t))) e1 e2)))
|
339 | 339 | '(begin (set! x y) (if (begin (set! z y) (#2%zero? h)) (begin (set! l z) e2) (begin (set! l y) e1))))
|
|
1205 | 1205 | (set! next 0)))
|
1206 | 1206 | (let ([m next])
|
1207 | 1207 | (unless (= m n)
|
1208 |
| - (set! next (fx+ next 1)) |
| 1208 | + (set! next (fx+ next 1)) |
1209 | 1209 | (let ([p (list-ref orig-ls m)])
|
1210 | 1210 | (unless (eqv? (cdr p) m)
|
1211 | 1211 | (errorf #f "unexpected cdr value (~s instead of ~s)" (cdr p) m))
|
|
1257 | 1257 | ;; avoid creating each list and doing the actual map
|
1258 | 1258 | (equivalent-expansion?
|
1259 | 1259 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
1260 |
| - (expand/optimize |
1261 |
| - '(map (lambda (x y z) (apply + x y z)) |
| 1260 | + (expand/optimize |
| 1261 | + '(map (lambda (x y z) (apply + x y z)) |
1262 | 1262 | (list 1 2 3)
|
1263 | 1263 | (list 4 5 6)
|
1264 | 1264 | (list '(7) '(8) '(9)))))
|
1265 | 1265 | '(#2%list 12 15 18))
|
1266 | 1266 | (equivalent-expansion?
|
1267 | 1267 | (parameterize ([optimize-level 3] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
1268 |
| - (expand/optimize |
1269 |
| - '(map (lambda (x y z) (apply + x y z)) |
| 1268 | + (expand/optimize |
| 1269 | + '(map (lambda (x y z) (apply + x y z)) |
1270 | 1270 | (list 1 2 3)
|
1271 | 1271 | (list 4 5 6)
|
1272 | 1272 | (list '(7) '(8) '(9)))))
|
1273 | 1273 | '(#3%list 12 15 18))
|
1274 | 1274 | (equivalent-expansion?
|
1275 | 1275 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
1276 |
| - (expand/optimize |
1277 |
| - '(map (lambda (x y z) (apply + x y z)) |
| 1276 | + (expand/optimize |
| 1277 | + '(map (lambda (x y z) (apply + x y z)) |
1278 | 1278 | '(1 2 3)
|
1279 | 1279 | (list 4 5 6)
|
1280 | 1280 | (list '(7) '(8) '(9)))))
|
1281 | 1281 | '(#2%list 12 15 18))
|
1282 | 1282 | (equivalent-expansion?
|
1283 | 1283 | (parameterize ([optimize-level 3] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
1284 |
| - (expand/optimize |
1285 |
| - '(map (lambda (x y z) (apply + x y z)) |
| 1284 | + (expand/optimize |
| 1285 | + '(map (lambda (x y z) (apply + x y z)) |
1286 | 1286 | '(1 2 3)
|
1287 | 1287 | (list 4 5 6)
|
1288 | 1288 | (list '(7) '(8) '(9)))))
|
1289 | 1289 | '(#3%list 12 15 18))
|
1290 | 1290 | (equivalent-expansion?
|
1291 | 1291 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
1292 |
| - (expand/optimize |
1293 |
| - '(map (lambda (x y z) (apply + x y z)) |
| 1292 | + (expand/optimize |
| 1293 | + '(map (lambda (x y z) (apply + x y z)) |
1294 | 1294 | '(1 2 3)
|
1295 | 1295 | '(4 5 6)
|
1296 | 1296 | '((7) (8) (9)))))
|
1297 | 1297 | '(#2%list 12 15 18))
|
1298 | 1298 | (equivalent-expansion?
|
1299 | 1299 | (parameterize ([optimize-level 3] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
1300 |
| - (expand/optimize |
1301 |
| - '(map (lambda (x y z) (apply + x y z)) |
| 1300 | + (expand/optimize |
| 1301 | + '(map (lambda (x y z) (apply + x y z)) |
1302 | 1302 | '(1 2 3)
|
1303 | 1303 | '(4 5 6)
|
1304 | 1304 | '((7) (8) (9)))))
|
|
1430 | 1430 | (equal?
|
1431 | 1431 | (fold-left cons '(q) '(a b c))
|
1432 | 1432 | '((((q) . a) . b) . c))
|
1433 |
| - (eqv? |
| 1433 | + (eqv? |
1434 | 1434 | (fold-left + 0 '(1 2 3) '(4 5 6))
|
1435 | 1435 | 21)
|
1436 | 1436 | (procedure? (lambda (x) (fold-left x)))
|
|
2125 | 2125 | ;; avoid creating each list and doing the actual for-each
|
2126 | 2126 | (equivalent-expansion?
|
2127 | 2127 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
2128 |
| - (expand/optimize |
2129 |
| - '(for-each (lambda (x y z) (display (apply + x y z))) |
| 2128 | + (expand/optimize |
| 2129 | + '(for-each (lambda (x y z) (display (apply + x y z))) |
2130 | 2130 | (list 1 2 3)
|
2131 | 2131 | (list 4 5 6)
|
2132 | 2132 | (list '(7) '(8) '(9)))))
|
2133 | 2133 | '(begin (#2%display 12) (#2%display 15) (#2%display 18)))
|
2134 | 2134 | (equivalent-expansion?
|
2135 | 2135 | (parameterize ([optimize-level 3] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
2136 |
| - (expand/optimize |
2137 |
| - '(for-each (lambda (x y z) (display (apply + x y z))) |
| 2136 | + (expand/optimize |
| 2137 | + '(for-each (lambda (x y z) (display (apply + x y z))) |
2138 | 2138 | (list 1 2 3)
|
2139 | 2139 | (list 4 5 6)
|
2140 | 2140 | (list '(7) '(8) '(9)))))
|
2141 | 2141 | '(begin (#3%display 12) (#3%display 15) (#3%display 18)))
|
2142 | 2142 | (equivalent-expansion?
|
2143 | 2143 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
2144 |
| - (expand/optimize |
2145 |
| - '(for-each (lambda (x y z) (display (apply + x y z))) |
| 2144 | + (expand/optimize |
| 2145 | + '(for-each (lambda (x y z) (display (apply + x y z))) |
2146 | 2146 | '(1 2 3)
|
2147 | 2147 | (list 4 5 6)
|
2148 | 2148 | (list '(7) '(8) '(9)))))
|
2149 | 2149 | '(begin (#2%display 12) (#2%display 15) (#2%display 18)))
|
2150 | 2150 | (equivalent-expansion?
|
2151 | 2151 | (parameterize ([optimize-level 3] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
2152 |
| - (expand/optimize |
2153 |
| - '(for-each (lambda (x y z) (display (apply + x y z))) |
| 2152 | + (expand/optimize |
| 2153 | + '(for-each (lambda (x y z) (display (apply + x y z))) |
2154 | 2154 | '(1 2 3)
|
2155 | 2155 | (list 4 5 6)
|
2156 | 2156 | (list '(7) '(8) '(9)))))
|
2157 | 2157 | '(begin (#3%display 12) (#3%display 15) (#3%display 18)))
|
2158 | 2158 | (equivalent-expansion?
|
2159 | 2159 | (parameterize ([optimize-level 2] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
2160 |
| - (expand/optimize |
2161 |
| - '(for-each (lambda (x y z) (display (apply + x y z))) |
| 2160 | + (expand/optimize |
| 2161 | + '(for-each (lambda (x y z) (display (apply + x y z))) |
2162 | 2162 | '(1 2 3)
|
2163 | 2163 | '(4 5 6)
|
2164 | 2164 | '((7) (8) (9)))))
|
2165 | 2165 | '(begin (#2%display 12) (#2%display 15) (#2%display 18)))
|
2166 | 2166 | (equivalent-expansion?
|
2167 | 2167 | (parameterize ([optimize-level 3] [enable-cp0 #t] [#%$suppress-primitive-inlining #f])
|
2168 |
| - (expand/optimize |
2169 |
| - '(for-each (lambda (x y z) (display (apply + x y z))) |
| 2168 | + (expand/optimize |
| 2169 | + '(for-each (lambda (x y z) (display (apply + x y z))) |
2170 | 2170 | '(1 2 3)
|
2171 | 2171 | '(4 5 6)
|
2172 | 2172 | '((7) (8) (9)))))
|
|
2684 | 2684 | (l #f))
|
2685 | 2685 | 'hi)
|
2686 | 2686 | (((call/cc call/cc) (lambda (x) x)) #t)
|
2687 |
| - (let () |
| 2687 | + (let () |
2688 | 2688 | (define f
|
2689 | 2689 | (lambda (n)
|
2690 | 2690 | (let f ((n n))
|
2691 |
| - (or (fx= n 0) |
| 2691 | + (or (fx= n 0) |
2692 | 2692 | (and (call/cc (lambda (k) k))
|
2693 | 2693 | (f (fx- n 1)))))))
|
2694 | 2694 | (f 100000))
|
2695 |
| - (let () |
| 2695 | + (let () |
2696 | 2696 | (define f
|
2697 | 2697 | (lambda (n)
|
2698 | 2698 | (let f ((n n))
|
2699 |
| - (or (fx= n 0) |
| 2699 | + (or (fx= n 0) |
2700 | 2700 | (and (call/cc (lambda (k) (k k)))
|
2701 | 2701 | (f (fx- n 1)))))))
|
2702 | 2702 | (f 100000))
|
|
2790 | 2790 | (and (eq? (leaf-eq? '(a (b (c))) '((a) b c)) #t)
|
2791 | 2791 | (eq? (leaf-eq? '(a (b (c))) '((a) b c d)) #f)))
|
2792 | 2792 | )
|
2793 |
| - |
| 2793 | + |
2794 | 2794 | (mat dynamic-wind
|
2795 | 2795 | (let ([x 3])
|
2796 | 2796 | (and (eqv? x 3)
|
|
3075 | 3075 | (case-lambda
|
3076 | 3076 | [() me]
|
3077 | 3077 | [(x) #t]))))
|
3078 |
| - (let () |
| 3078 | + (let () |
3079 | 3079 | (define f
|
3080 | 3080 | (lambda (n)
|
3081 | 3081 | (let f ((n n))
|
3082 |
| - (or (fx= n 0) |
| 3082 | + (or (fx= n 0) |
3083 | 3083 | (and (call/cc (lambda (k) (k k)))
|
3084 | 3084 | (f (fx- n 1)))))))
|
3085 | 3085 | (f 100000))
|
|
3453 | 3453 | (error? (call-with-yep (lambda () (call-with-yeah* (lambda () ((returns-not-a-procedure)))))))
|
3454 | 3454 | (error? (call-with-yep (lambda () (list (call-with-yeah* (lambda () ((returns-not-a-procedure))))))))
|
3455 | 3455 | (error? (call-with-yep (lambda () (act-like-list (call-with-yeah* (lambda () ((returns-not-a-procedure))))))))
|
3456 |
| - |
| 3456 | + |
3457 | 3457 | (equal? '() (if (call-with-yep list)
|
3458 | 3458 | (#%$current-attachments)
|
3459 | 3459 | #f))
|
|
3736 | 3736 | [(marks keys) ($mark-iter->lists (continuation-marks->iterator marks (list->vector keys)))]
|
3737 | 3737 | [(marks keys no) ($mark-iter->lists (continuation-marks->iterator marks (list->vector keys) no))]))
|
3738 | 3738 | #t)
|
3739 |
| - |
| 3739 | + |
3740 | 3740 | (equal? '((xv1 yv)) (with-continuation-mark
|
3741 | 3741 | 'x 'xv0
|
3742 | 3742 | (with-continuation-mark
|
|
3828 | 3828 | (with-continuation-mark
|
3829 | 3829 | 'other 'no
|
3830 | 3830 | (loop (sub1 depth)))))))))
|
| 3831 | +
|
| 3832 | + (with-continuation-mark |
| 3833 | + 'key #t |
| 3834 | + (guard |
| 3835 | + (c [#t (call-with-immediate-continuation-mark 'key values)]) |
| 3836 | + (raise #f))) |
| 3837 | +
|
| 3838 | + (with-continuation-mark |
| 3839 | + 'key #t |
| 3840 | + (guard |
| 3841 | + (c [#t (call-with-immediate-continuation-mark 'key values)] |
| 3842 | + [else #f]) |
| 3843 | + (raise #f))) |
| 3844 | +
|
| 3845 | + (equal? 'inner |
| 3846 | + (call/cc |
| 3847 | + (lambda (k) |
| 3848 | + (with-continuation-mark 'key 'outer |
| 3849 | + (with-exception-handler |
| 3850 | + (lambda (c) |
| 3851 | + (k (continuation-marks-first (current-continuation-marks) 'key))) |
| 3852 | + (lambda () |
| 3853 | + (guard (c [#f #f]) |
| 3854 | + (with-continuation-mark 'key 'inner |
| 3855 | + (raise #f))))))))) |
| 3856 | +
|
3831 | 3857 | )
|
3832 | 3858 |
|
3833 | 3859 | (mat call-in-continuation
|
|
3959 | 3985 | (lambda (k)
|
3960 | 3986 | (#%$call-in-continuation
|
3961 | 3987 | k
|
3962 |
| - (lambda () |
| 3988 | + (lambda () |
3963 | 3989 | (#%$call-consuming-continuation-attachment
|
3964 | 3990 | 'also-unknown
|
3965 | 3991 | (lambda (v)
|
|
4866 | 4892 | (begin
|
4867 | 4893 | (define ephemeron-key car)
|
4868 | 4894 | (define ephemeron-value cdr)
|
4869 |
| - |
| 4895 | + |
4870 | 4896 | (define gdn (make-guardian))
|
4871 | 4897 | #t)
|
4872 | 4898 |
|
|
4891 | 4917 | es))
|
4892 | 4918 | (weak-cons k1 (weak-cons k2 wps))
|
4893 | 4919 | (cons k1 saved)))])))
|
4894 |
| - |
| 4920 | + |
4895 | 4921 | (collect (collect-maximum-generation))
|
4896 | 4922 |
|
4897 | 4923 | ;; All now waiting to be reported by the guardian
|
|
4934 | 4960 | ;; behavior
|
4935 | 4961 | (let ()
|
4936 | 4962 | (define (wrapper v) (list 1 2 3 4 5 v))
|
4937 |
| - |
| 4963 | +
|
4938 | 4964 | ;; Create a chain of ephemerons where we have all
|
4939 | 4965 | ;; the the ephemerons immediately in a list,
|
4940 | 4966 | ;; but we discover the keys one at a time
|
|
5008 | 5034 |
|
5009 | 5035 | ;; ----------------------------------------
|
5010 | 5036 | ;; Check interaction of mutation and generations
|
5011 |
| - |
| 5037 | +
|
5012 | 5038 | ;; This check disables interrupts so that a garbage collection
|
5013 | 5039 | ;; happens only for the explicit `collect` request.
|
5014 | 5040 | (with-interrupts-disabled
|
|
0 commit comments