~ chicken-core (chicken-5) fc329c3b28dfaffcd8a288391b7eff1839ad8149
commit fc329c3b28dfaffcd8a288391b7eff1839ad8149 Author: Evan Hanson <evhan@foldling.org> AuthorDate: Sun Mar 6 17:37:13 2016 +1300 Commit: Peter Bex <peter@more-magic.net> CommitDate: Tue Mar 8 19:37:42 2016 +0100 Preserve destination name when inserting C_DEBUG_GLOBAL_ASSIGN events Using a gensym for the let binding inserted by C_DEBUG_GLOBAL_ASSIGN events causes a different "dest" to be used when walking the assigned value, which (for procedures) means that the value's accompanying C_DEBUG_ENTRY event will use that temporary name rather than the procedure's real, assigned one. Signed-off-by: Peter Bex <peter@more-magic.net> diff --git a/compiler.scm b/compiler.scm index c91e21c2..80928f25 100644 --- a/compiler.scm +++ b/compiler.scm @@ -981,11 +981,10 @@ (mark-variable var '##compiler#always-bound-to-procedure) (mark-variable var '##compiler#always-bound)) (when emit-debug-info - (let ((tmp (gensym))) - (set! val - `(let ((,tmp ,val)) - (##core#debug-event "C_DEBUG_GLOBAL_ASSIGN" ',var) - ,tmp))))) + (set! val + `(let ((,var ,val)) + (##core#debug-event "C_DEBUG_GLOBAL_ASSIGN" ',var) + ,var)))) (cond ((##sys#macro? var) (warning (sprintf "assigned global variable `~S' is syntax ~A"Trap