guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: srfi-18 and the vm


From: Ludovic Courtès
Subject: Re: srfi-18 and the vm
Date: Sat, 23 May 2009 00:04:48 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.90 (gnu/linux)

Andy Wingo <address@hidden> writes:

> On Fri 22 May 2009 17:10, address@hidden (Ludovic Courtès) writes:
>> Andy Wingo <address@hidden> writes:
>>
>>> I'm catching up with mail. On my syncase-in-boot-9 branch, I enabled
>>> compilation of srfi-18 and fixed a bug in it regarding multiple-value
>>> returns. Now I just ran the srfi-18 test like 100 times in a row and it
>>> didn't show any strange errors. Yaaaay!
>>
>> What kind of "strange errors" would it lead to before?
>
> Random ones based on races, as code was lazily memoized from multiple
> threads at once.

OK (I thought you were referring to errors related to multiple-value
returns.)  Then, indeed, yaay!

> Indeed. The VM truncates multiple values, but here we were doing a (let
> ((x (values))) something x), which returned 0 values to a continuation
> needing a value, raising a valid error. Fixed that in the original
> source code.
>
> In addition, we were sometimes getting 0 values in a for-effect context,
> which the GHIL->GLIL compiler didn't support. Like this:
>
>   (begin (call/cc (lambda (k) (k))) 10)
>
> I've fixed this in the tree-il->glil compiler.

Thanks for the explanation.

Ludo'.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]