racket/pkgs/racket-test/tests/future/slow-getter.rkt
Matthew Flatt 2d4f3e2ac9 remove the "racket-pkgs" directory layer
The layer is now redundant, since everything left in "pkgs" is in the
"racket-pkgs" category.
2014-12-08 05:22:59 -07:00

25 lines
500 B
Racket

#lang racket/base
(require racket/future)
(let ()
(struct a (x))
(define an-a (a 10))
(define iter 10000)
(define (f x)
(set! iter (sub1 iter))
(unless (zero? iter)
;; This call to `x` is JITted optimistically
;; as a struct-getter call, so non-getter `x`
;; fill fall back to a slow path:
(x an-a)))
(set! f f)
(void (f a-x))
(define f1 (future (lambda ()
(f f))))
(for/fold ([x #f]) ([i (in-range 1000)])
(cons 1 2)))