From 104e70bf659e9eb59fc3439ad229bf61fdde2a8b Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 8 Apr 2012 17:16:11 -0600 Subject: [PATCH] fix JIT bug related to `list-ref' and `list-tail' Closes PR 12688 --- collects/tests/racket/optimize.rktl | 15 +++++++++++++++ src/racket/src/jitinline.c | 1 + 2 files changed, 16 insertions(+) diff --git a/collects/tests/racket/optimize.rktl b/collects/tests/racket/optimize.rktl index 3f92c26615..3b603b51bc 100644 --- a/collects/tests/racket/optimize.rktl +++ b/collects/tests/racket/optimize.rktl @@ -1930,6 +1930,21 @@ (err/rt-test (call/cc (lambda (k) (/ 1 2 0)))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Check slow path on `list-tail', where +;; index is > 10000: + +(test 4.8 + 'list-ref-test + (let loop ((line 0)) + (let* ((numlist (build-list 20004 (lambda (x) 2.4))) + (n (length numlist))) + (let* ((mid (/ n 2)) + (n1 (car numlist)) + (n2 (list-ref numlist mid))) + (for-each values numlist) + (+ n1 n2))))) + ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (report-errs) diff --git a/src/racket/src/jitinline.c b/src/racket/src/jitinline.c index 48b6f1d779..1bb7f87cae 100644 --- a/src/racket/src/jitinline.c +++ b/src/racket/src/jitinline.c @@ -2424,6 +2424,7 @@ int scheme_generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i || IS_NAMED_PRIM(rator, "list-tail")) { generate_two_args(app->rand1, app->rand2, jitter, 1, 2); + mz_rs_sync(); if (IS_NAMED_PRIM(rator, "list-ref")) (void)jit_calli(sjc.list_ref_code); else