1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 11:50:28 +02:00

Fix cached-module-box cache keys

* module/language/cps/reify-primitives.scm (cached-module-box): Include
public? in cache key, so we don't accidentally alias private and
exported names.  Also include bound?, to avoid a window in which thread
A resolves and caches var V in preparation for setting it, but thread B
sees V for ref before it was initialized.
This commit is contained in:
Andy Wingo 2021-04-25 20:27:34 +02:00
parent 5809279b99
commit 976433d667

View file

@ -1,6 +1,6 @@
;;; Continuation-passing style (CPS) intermediate language (IL) ;;; Continuation-passing style (CPS) intermediate language (IL)
;; Copyright (C) 2013-2020 Free Software Foundation, Inc. ;; Copyright (C) 2013-2021 Free Software Foundation, Inc.
;;;; This library is free software; you can redistribute it and/or ;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public ;;;; modify it under the terms of the GNU Lesser General Public
@ -224,7 +224,7 @@
(define-ephemeral (cached-module-box cps k src param) (define-ephemeral (cached-module-box cps k src param)
(match param (match param
((module name public? bound?) ((module name public? bound?)
(let ((cache-key (cons module name))) (let ((cache-key param))
(with-cps cps (with-cps cps
(letv mod cached) (letv mod cached)
(let$ lookup (let$ lookup