diff --git a/racket/collects/compiler/private/xform.rkt b/racket/collects/compiler/private/xform.rkt index 56be71ab15..725be5d08d 100644 --- a/racket/collects/compiler/private/xform.rkt +++ b/racket/collects/compiler/private/xform.rkt @@ -3877,6 +3877,14 @@ "array access")) memcpy?)]) (loop (cdr e-) (cons v result) live-vars #t)))] + [(eq? '|XFORM_CURRENT_COUNT| (tok-n (car e-))) + (loop (cdr e-) + (cons (make-tok (string->symbol (format "~a_COUNT" (live-var-info-tag live-vars))) + (tok-line (car e-)) + (tok-file (car e-))) + result) + live-vars + #t)] [(and (assq (tok-n (car e-)) vars) (not (assq (tok-n (car e-)) (live-var-info-vars live-vars)))) ;; Add a live variable: diff --git a/racket/src/racket/include/scheme.h b/racket/src/racket/include/scheme.h index 40729936c5..b715e7795d 100644 --- a/racket/src/racket/include/scheme.h +++ b/racket/src/racket/include/scheme.h @@ -1701,7 +1701,7 @@ MZ_EXTERN void scheme_jit_setjmp_prepare(mz_jit_jmp_buf b); GC_variable_stack = (void **)(void*)(b).gcvs, \ scheme_jit_longjmp((b).jb, v)) # define scheme_setjmp(b) ((b).gcvs = (intptr_t)__gc_var_stack__, \ - (b).gcvs_cnt = (intptr_t)(__gc_var_stack__[1]), \ + (b).gcvs_cnt = XFORM_CURRENT_COUNT, \ scheme_jit_setjmp((b).jb)) #else # define scheme_longjmp(b, v) scheme_jit_longjmp(b, v)