diff --git a/release_notes/release_notes.stex b/release_notes/release_notes.stex index 9242d7121..01948fb99 100644 --- a/release_notes/release_notes.stex +++ b/release_notes/release_notes.stex @@ -2993,6 +2993,17 @@ in fasl files does not generally make sense. %----------------------------------------------------------------------------- \section{Bug Fixes}\label{section:bugfixes} +\subsection{Repair allocation in \scheme{logtest} (10.4.1)} + +In Version 10.4.0, the \scheme{logtest} procedure could allocate incorrectly when given a +mixture of fixnum and bignum arguments. The problem has been fixed by adding a missing +\scheme{__alloc} annotation on the internal implementation. + +\subsection{Repair \scheme{__alloc} mode for ppc32 (10.4.1)} + +In Version 10.4.0 on ppc32, an \scheme{__atomic __alloc} foreign-procedure annotation was +not handled correctly. The problem has been fixed by migrating the end-of-allocation +pointer between a register and the thread context during an allocating foreign call. \subsection{Declare \scheme{Spopcount} in scheme.h (10.4.0)} diff --git a/s/cpnanopass.ss b/s/cpnanopass.ss index 9c95753b2..7c7851bde 100644 --- a/s/cpnanopass.ss +++ b/s/cpnanopass.ss @@ -4718,6 +4718,9 @@ (or (meta-cond [(real-register? '%ap) (eq? reg %ap)] [else #f]) + (meta-cond + [(real-register? '%eap) (eq? reg %eap)] + [else #f]) (meta-cond [(real-register? '%trap) (eq? reg %trap)] [else #f]))))) diff --git a/s/prims.ss b/s/prims.ss index cb7dc66ea..bd2322447 100644 --- a/s/prims.ss +++ b/s/prims.ss @@ -2416,7 +2416,7 @@ scheme-object)) (define $logtest - (foreign-procedure __atomic "(cs)logtest" + (foreign-procedure __atomic __alloc "(cs)logtest" (scheme-object scheme-object) scheme-object))