You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This change steps away from maximising the terms we send to the LLVM
backend for evaluation, and only sends terms with an unevaluated
function call at the top. It addresses a particular constellation that
has been observed in downstream semantics/proofs:
* a configuration containing large data structures in cells that remain
unchanged
* a long-running sequence of rewrites that keep inserting concrete
function applications into cells required for the next rewrite step,
* and therefore require frequent configuration simplifications
Each time the configuration is simplified, the large unchanged data
structure is sent to the LLVM backend, which incurs considerable
overhead.
On the flip side, we will send each function that needs to be evaluated
individually. However, rewrites or equations will usually not create
more than a handful of new unevaluated function calls at one time, and
we will still send _nested_ unevaluated expressions together.
Also includes a logging call to measure the duration of LLVM
interactions (including argument/result conversion), and necessary code
restructuring.
---------
Co-authored-by: github-actions <[email protected]>
0 commit comments