Leonardo de Moura
7c76a19885
chore: fix includes
2020-05-22 14:17:25 -07:00
Leonardo de Moura
8bdca35282
chore: use #include <lean/runtime/...> for runtime .h files
2020-05-18 11:30:07 -07:00
Sebastian Ullrich
ec9f4b579d
chore: improve precision of compilation time profiling
2020-04-24 15:11:36 +02:00
Leonardo de Moura
bc57faff08
fix: ensure compiler representation invariants are preserved
2020-04-23 13:54:14 -07:00
Leonardo de Moura
e22af8d1ef
feat: add FloatArray
...
cc @dselsam
2020-04-07 18:05:54 -07:00
Sebastian Ullrich
e971c8dd7a
feat: support Float in the interpreter
...
/cc @leodemoura @dselsam
2020-04-05 10:50:30 +02:00
Leonardo de Moura
485034bbba
fix: bug at ir.cpp
2020-04-03 17:39:28 -07:00
Leonardo de Moura
0e2ebd36ff
feat: make sure Float is in WHNF
2020-04-03 17:07:29 -07:00
Leonardo de Moura
60d84660e6
feat: add support for Float in the compiler
2020-04-03 16:39:29 -07:00
Sebastian Ullrich
d7170df527
feat: interpreter: print stacktrace on stack overflow
2020-03-14 15:08:03 -07:00
Sebastian Ullrich
e30717a85a
fix: interpreter::call_boxed on unboxed constants
2020-03-14 15:04:38 -07:00
Leonardo de Moura
271b753f30
feat: optimization for Bool+Decidable code
2020-02-27 16:59:18 -08:00
Leonardo de Moura
021d906542
fix: remove filler fields (part 2)
2020-02-27 10:02:26 -08:00
Leonardo de Moura
966e5bc60d
perf: remove "filler" fields
...
See previous commit.
2020-02-27 10:02:26 -08:00
Leonardo de Moura
1fb7a3a208
fix: position of first Bool field
2020-02-25 14:05:53 -08:00
Leonardo de Moura
9095f3caa0
chore: update stage0
2020-02-25 13:53:08 -08:00
Leonardo de Moura
7496296c1e
fix: "filler" fields
2020-02-25 13:49:18 -08:00
Leonardo de Moura
6a19069021
feat: add "filler" fields
2020-02-25 13:49:11 -08:00
Leonardo de Moura
1305824b03
chore: add get_bool_field helper function
...
Motivation: help us to adjust the code when we modify the position of
scalar fields.
2020-02-25 13:43:06 -08:00
Leonardo de Moura
148c0324c4
fix: do not extract closed terms from join point applications
2020-02-15 15:43:24 -08:00
Leonardo de Moura
0cf226220c
fix: remove incorrect assertion
...
Note that `get_cases_on_minors_range` is now parametric on `m_before_erasure`:
`get_cases_on_minors_range(env(), const_name(fn), m_before_erasure)`
2020-02-13 18:26:12 -08:00
Sebastian Ullrich
47f3d54acb
fix: interpreter: do not consume values in explicit unbox instructions
2020-02-06 09:36:19 -08:00
Leonardo de Moura
38e6961003
feat: MutQuot by implementedBy
2020-02-04 16:51:08 -08:00
Leonardo de Moura
850b1c90a0
feat: mark as irrelevant functions that return types
2020-02-04 15:55:21 -08:00
Leonardo de Moura
8628b52b21
feat: missing support for Empty.rec
2020-01-03 18:23:52 -08:00
Sebastian Ullrich
2791cdf326
fix: interpreter::call_boxed: support under-application
...
/cc @leodemoura
2020-01-01 21:15:05 +01:00
Leonardo de Moura
73e114c6a2
chore: remove unnecessary argument
2020-01-01 09:19:00 -08:00
Sebastian Ullrich
b439de68a5
feat: support nested interpreter executions and make sure closures are run in compatible environments
...
/cc @leodemoura
2019-12-31 00:07:45 +01:00
Leonardo de Moura
28a4859832
feat: expose evalConst
...
@Kha Could you please check `lean_eval_const`?
2019-12-30 11:41:36 -08:00
Sebastian Ullrich
a2d668ec99
fix: leaks
2019-12-22 17:24:57 -08:00
Sebastian Ullrich
3b37737c8a
fix: leaks
2019-12-22 15:09:19 -08:00
Sebastian Ullrich
948b0bf1f1
fix: interpreter::call_boxed: support over-application
...
MetaHasEval instances were not fully eta-expanded
2019-12-05 13:21:08 +01:00
Sebastian Ullrich
1afd3b9d01
refactor: interpreter::run_main: use call_boxed
2019-12-05 13:21:08 +01:00
Sebastian Ullrich
44ce73ced9
refactor: call generated boxed wrapper instead of reinventing it in the interpreter
2019-12-05 13:21:08 +01:00
Sebastian Ullrich
e3e50b7940
chore: rename confusing interpreter function
2019-12-05 13:21:08 +01:00
Sebastian Ullrich
c93fb5c4b2
chore: interpreter: rename misleading accessor
2019-11-19 09:36:59 +01:00
Leonardo de Moura
46adfcfdb6
refactor: Name fully implemented in Lean
2019-11-18 19:54:05 -08:00
Leonardo de Moura
043e011b72
fix: bug at USet
...
@Kha: I found the bug. The issue was at `USet`. The argument is a
usize scalar. So, we should use `var` instead of `eval_arg`.
2019-11-18 19:51:53 -08:00
Leonardo de Moura
b78ac59523
refactor: Level fully implemented in Lean
2019-11-17 08:24:09 -08:00
Leonardo de Moura
a3ccbe66cf
refactor: Expr fully implemented in Lean
...
No hidden fields.
2019-11-16 12:10:49 -08:00
Leonardo de Moura
85092412c7
refactor: remove Expr.FVar hack
...
@Kha @dselsam:
This hack was preventing us from making `Expr` a "real" Lean type.
This was bad for a few reasons:
- It was hard to extend/modify `Expr` in Lean since we would also have
to modify the C++ code that creates the `Expr` objects with the hidden
fields.
- `Expr.lam` and `Expr.forallE` were not following the Lean layout
standard where we sort fields by size. @Kha: recall we used that to
avoid a UB. The issue with `Expr.lam` and `Expr.forallE` is that they
have a "visible" field (`BinderInfo`), which is smaller than
hidden fields such as hash code.
- `Expr.fvar` had only one field at `Expr.lean,` but four behind the
scenes.
I added a new constructor `Local` that is only accessible from C++.
It is only used in legacy code we inherited from Lean2.
We will eventually delete it.
This refactoring was quite painful since many parts of the codebase
were mixing the new `Expr.fvar` with the old `Expr.local`.
I doubt I would be able to do it without the new staging framework
@Kha built.
BTW, some of the patches are horrible. I didn't care much since we
are going to deleted the super ugly files. That being said,
you should expect new weird bevaior due to `Expr.fvar` vs `Expr.local`.
Next step: use the new `ExprCachedData` to make all `Expr` hidden visibles
accessible from Lean.
checkpoint
2019-11-15 14:04:26 -08:00
Leonardo de Moura
beac2a1af5
fix: treat panic as unreachable at ll_infer_type_fn
...
Motivation: ensure the correct type `IRType` is inferred for definitions
such as
```
def f (n : UInt32) : UInt32 :=
if n == 0 then panic! "foo"
else n+1
```
2019-11-14 21:56:09 -08:00
Leonardo de Moura
aa9080e9e7
feat: do not specialize functions inside functions marked with @[specialize]
2019-11-13 13:32:52 -08:00
Leonardo de Moura
b709979102
feat: improve arity guesser for IO extern primitives
2019-10-23 17:29:41 -07:00
Leonardo de Moura
39e8499c7b
fix: new offset at param_borrow
2019-10-11 16:27:29 -07:00
Leonardo de Moura
02ab51505c
fix: adjust ir_interpreter
...
IRType is not a scalar type anymore.
2019-10-11 15:00:26 -07:00
Leonardo de Moura
7adf00666b
feat: expose getCtorLayout
2019-10-11 14:34:30 -07:00
Leonardo de Moura
321d9a8a89
chore: update stage0
2019-10-11 10:57:51 -07:00
Leonardo de Moura
c81ab9759f
feat: add elimDeadBranches
2019-10-07 13:59:00 -07:00
Leonardo de Moura
81847302a7
feat(library/compiler): replace @[effectful] with @[neverExtract]
2019-10-01 14:06:08 -07:00