From e62ae6be360fc3ead8e5312d97b587c730bb532b Mon Sep 17 00:00:00 2001 From: Vitor Santos Costa Date: Fri, 14 Nov 2008 14:54:25 +0000 Subject: [PATCH] improve handling of local stack expansion. --- H/sshift.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/H/sshift.h b/H/sshift.h index f1b0f982a..66507a880 100644 --- a/H/sshift.h +++ b/H/sshift.h @@ -62,7 +62,10 @@ inline EXTERN CELL *PtoDelayAdjust (CELL *); inline EXTERN CELL * PtoDelayAdjust (CELL * ptr) { - return (CELL *) (((CELL *) (CharP (ptr) + DelayDiff))); + if (!GSplit || ptr < GSplit) + return (CELL *) (((CELL *) (CharP (ptr) + DelayDiff))); + else + return (CELL *) (((CELL *) (CharP (ptr) + GDiff0))); } @@ -149,7 +152,10 @@ inline EXTERN CELL DelayAdjust (CELL); inline EXTERN CELL DelayAdjust (CELL val) { - return (CELL) (val + DelayDiff); + if (!GSplit || (CELL *)val < GSplit) + return (CELL) (val + DelayDiff); + else + return (CELL) (val + GDiff0); } @@ -173,7 +179,10 @@ inline EXTERN ADDR DelayAddrAdjust (ADDR); inline EXTERN ADDR DelayAddrAdjust (ADDR ptr) { - return (ADDR) ((ptr + DelayDiff)); + if (!GSplit || (CELL *)ptr < GSplit) + return (ADDR) ((ptr + DelayDiff)); + else + return (ADDR) ((ptr + GDiff0)); }