~ chicken-core (chicken-5) 3228f4737fc4584888be0f77794a960518b168de


commit 3228f4737fc4584888be0f77794a960518b168de
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Sep 17 23:09:09 2010 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Fri Sep 17 23:09:09 2010 +0200

    don't C_mutate if slot already holds identical val

diff --git a/runtime.c b/runtime.c
index 0ce1ce64..6113b573 100644
--- a/runtime.c
+++ b/runtime.c
@@ -2573,7 +2573,8 @@ C_regparm C_word C_fcall C_mutate(C_word *slot, C_word val)
 {
   int mssize;
 
-  if(!C_immediatep(val)) {
+  if(*slot == val) return val;
+  else if(!C_immediatep(val)) {
 #ifdef C_GC_HOOKS
     if(C_gc_mutation_hook != NULL && C_gc_mutation_hook(slot, val)) return val;
 #endif
Trap