On Sat, Jul 15, 2017 at 04:16:47PM +0200, Jakob Eriksson wrote:
> Oh, that was quite mundane - as most bugs are when found. :)
> 
> Huge props to you for finding it so very fast.

Thanks to Jimmie. His program produced the effect relatively
often, so I could trace it down. Before I never observed it.

It only occurs if garbage collection happens just when 'adduAE_A' is running.

> >    2460a2461
> >    >       push ZERO  # <L III> Safe
> >    2489,2490c2490,2491
> >    <       ld E (L I)  # Get product
> >    <       ld (L I) A  # Save halved argument
> >            call adduAE_A  # Add for rounding
> >    ---
> >    >       ld (L III) A  # Save halved argument
> >    >       ld E (L I)  # Get product, keep in safe
> >            call adduAE_A  # Add for rounding
> > 
> > Register E was not saved before the call to 'adduAE_A', because the stack
> > entry (L I) was overwritten with register A. Now A is saved in a separate
> > entry (L III).
> > 
> > ♪♫ Alex
> > 
> 
> -- 
> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to