From 1daa2649f02b56390b9934bc923aa9f22e9340f8 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 5 Jul 2011 06:29:32 -0600 Subject: [PATCH] another fix for `vector-{ref,set!}' on chaperone/impersonator --- fixes a81917a2692; drop this commit if that one is dropped --- collects/tests/racket/optimize.rktl | 9 ++++++++- src/racket/src/jitcommon.c | 2 -- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/collects/tests/racket/optimize.rktl b/collects/tests/racket/optimize.rktl index 151edc2e50..f893c33778 100644 --- a/collects/tests/racket/optimize.rktl +++ b/collects/tests/racket/optimize.rktl @@ -636,7 +636,14 @@ (test-setter make-bytes 0 7 'bytes-set! bytes-set! bytes-ref #f) (test-setter make-string #\a #\7 'string-set! string-set! string-ref #f) (test-setter make-flvector 1.0 7.0 'flvector-set! flvector-set! flvector-ref #f) - (test-setter make-fxvector 1 7 'fxvector-set! fxvector-set! fxvector-ref #f)) + (test-setter make-fxvector 1 7 'fxvector-set! fxvector-set! fxvector-ref #f) + + (let ([chap-vec (lambda (vec) + (chaperone-vector vec (lambda (vec i val) val) (lambda (vec i val) val)))]) + (test-setter (lambda (n v) (chap-vec (make-vector n v))) + #f 7 'vector-set! vector-set! vector-ref #t) + (test-setter (lambda (n v) (chap-vec (chap-vec (make-vector n v)))) + #f 7 'vector-set! vector-set! vector-ref #t))) (err/rt-test (apply (list-ref (list (lambda (v) (vector-set! v 0 #t))) (random 1)) (list (vector-immutable 1 2 3)))) diff --git a/src/racket/src/jitcommon.c b/src/racket/src/jitcommon.c index 472a5116b7..9b3d9e51a1 100644 --- a/src/racket/src/jitcommon.c +++ b/src/racket/src/jitcommon.c @@ -1121,8 +1121,6 @@ static int common3(mz_jit_state *jitter, void *_data) } CHECK_LIMIT(); /* Might return, if arg was chaperone */ - if (ii == -1) - jit_addi_p(JIT_RUNSTACK, JIT_RUNSTACK, WORDS_TO_BYTES(2)); jit_addi_p(JIT_RUNSTACK, JIT_RUNSTACK, WORDS_TO_BYTES(2)); JIT_UPDATE_THREAD_RSPTR(); if (!iii)