[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: guile 3 update, september edition
From: |
Andy Wingo |
Subject: |
Re: guile 3 update, september edition |
Date: |
Tue, 18 Sep 2018 09:50:35 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) |
Greets :)
On Mon 17 Sep 2018 11:35, address@hidden (Ludovic Courtès) writes:
>> The threshold at which Guile will automatically JIT-compile is set from
>> the GUILE_JIT_THRESHOLD environment variable. By default it is 50000.
>> If you set it to -1, you disable the JIT. If you set it to 0, *all*
>> code will be JIT-compiled. The test suite passes at
>> GUILE_JIT_THRESHOLD=0, indicating that all features in Guile are
>> supported by the JIT. Set the GUILE_JIT_LOG environment variable to 1
>> or 2 to see JIT progress.
>
> Just to be clear, does GUILE_JIT_THRESHOLD represents the number of
> times a given instruction pointer is hit?
No. It is an abstract "hotness" counter associated with a function's
code. (I say "function's code" because many closures can share the same
code and thus the same counter. It's not in the scm_tc7_program object
because some procedures don't have these.)
All counters start at 0 when Guile starts. A function's counters
increment by 30 when a function is called, currently, and 2 on every
loop back-edge. I have not attempted to tweak these values yet.
>> Using GNU Lightning has been useful but in the long term I don't think
>> it's the library that we need, for a few reasons:
>
> [...]
>
> It might be that the lightning 1.x branch would be a better fit (it was
> exactly as you describe.) I think that’s what Racket was (is?) using.
Could be! I will have a look.
Cheers,
Andy