From 22a7c413b9d2570aaf275c9e082df642bcb434bd Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 9 May 2026 17:55:05 -0600 Subject: [PATCH 1/3] ppc32 and logtest repairs --- s/cpnanopass.ss | 3 +++ s/prims.ss | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) 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)) From c4f682fa8cb9dfa216f6b43d408e8fab9bd7a2e3 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 11 May 2026 09:46:34 -0600 Subject: [PATCH 2/3] update release notes for bug fixes --- release_notes/release_notes.stex | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/release_notes/release_notes.stex b/release_notes/release_notes.stex index 9242d7121..b6902260a 100644 --- a/release_notes/release_notes.stex +++ b/release_notes/release_notes.stex @@ -2993,6 +2993,19 @@ in fasl files does not generally make sense. %----------------------------------------------------------------------------- \section{Bug Fixes}\label{section:bugfixes} +\subsection{Repair allocation in \scheme{logtest} (10.4.1)} + +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)} + +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)} From 5f0e8d4a50f14b77fbfca2fb2ee0421af3bc7070 Mon Sep 17 00:00:00 2001 From: Bob Burger Date: Mon, 11 May 2026 13:18:25 -0400 Subject: [PATCH 3/3] specify which version introduced the bugs fixed --- release_notes/release_notes.stex | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/release_notes/release_notes.stex b/release_notes/release_notes.stex index b6902260a..01948fb99 100644 --- a/release_notes/release_notes.stex +++ b/release_notes/release_notes.stex @@ -2995,17 +2995,15 @@ in fasl files does not generally make sense. \subsection{Repair allocation in \scheme{logtest} (10.4.1)} -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. +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)} -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. +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)}