Commit graph

29801 commits

Author SHA1 Message Date
Sebastian Ullrich
944de141d3 perf(library/compiler/ir_interpreter): use specialized stubs 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
693fc63702 fix(library/compiler/ir_interpreter): constants do not have to be persistent anymore, so stop leaking them 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
8da203b91a perf(compiler/ir_interpreter): do not allocate temp closure for saturated partial applications 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
e5ef6eae1f chore(tests/playground/task_testX): update syntax 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
237e4a4489 feat(library/compiler/ir_interpreter): multi-threading support 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
daae0f67bb fix(library/compiler/ir_interpreter): --run ignored first argument 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
c23e6829c0 refactor(library/compiler/ir_interpreter): move constant caching into load 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
2d04ecc704 refactor(util/object_ref): move and adjust cnstr_get_ref_t 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
560e7af128 fix(library/init/lean/compiler/ir/compilerm): borrow annotations on extern decls do not do anything right now 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
3ee59aa17f feat(library/compiler/ir_interpreter): add Windows support 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
1732461a66 doc(library/compiler/ir_interpreter): add a few comments 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
d27cbe2dc5 perf(library/compiler/ir_interpreter): cache symbol lookup 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
2d4276e819 feat(library/compiler/ir_interpreter): tail recursion 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
5194f90afc chore(util/kvmap): make constructors explicit
C++ decided to compare a `size_t` and a `nat` by converting them both to `data_value`...
2019-09-12 18:26:15 +02:00
Sebastian Ullrich
bdb7152768 feat(library/compiler/ir_interpreter): cache constants 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
9015fc1e34 chore(library/compiler/ir_interpreter): add step-level trace 2019-09-12 18:26:15 +02:00
Sebastian Ullrich
558d9ad837 feat(library/compiler/ir_interpreter): add call-level trace 2019-09-12 18:22:02 +02:00
Sebastian Ullrich
d5737d0713 test(shell/CMakeLists.txt): add compiler tests as interpreter tests 2019-09-12 18:22:02 +02:00
Sebastian Ullrich
795359ee49 feat(shell/lean): re-add --run flag 2019-09-12 18:22:02 +02:00
Sebastian Ullrich
99bc069fdd feat(library/compiler/ir_interpreter): implement IR interpreter 2019-09-12 18:22:02 +02:00
Sebastian Ullrich
401a4536a8 feat(CMakeLists.txt): export all symbols for dlsym()
We'll see about other platforms
2019-09-12 18:22:02 +02:00
Sebastian Ullrich
9b8300657a refactor(util/option_ref): match other wrapper classes 2019-09-12 18:22:02 +02:00
Sebastian Ullrich
6f59bec057 fix(shell/CMakeLists.txt): update-stage0 should not try to build the stage1 executable, only its sources 2019-09-12 18:22:02 +02:00
Sebastian Ullrich
1a99fc5c5d feat(init/lean/compiler): export some internals 2019-09-12 18:22:02 +02:00
Sebastian Ullrich
af6eb0bcdd chore(bin/lean-gdb.py): update to compressed headers 2019-09-12 18:22:02 +02:00
Sebastian Ullrich
4aa4a4d5f1 chore(runtime/object,util/object_ref): missing assertions 2019-09-12 18:22:02 +02:00
Leonardo de Moura
8e47b6396f chore(library/init/lean/compiler/ir): simplify mkCase, the xType field is set by explicitBoxing 2019-09-12 08:55:09 -07:00
Leonardo de Moura
ca54240843 fix(library/init/lean/compiler/ir): the xType field at FnBody.case must be set by explicitBoxing 2019-09-12 08:47:58 -07:00
Leonardo de Moura
0284d4a7a2 chore(library/compiler/ir): use new mkCase 2019-09-12 08:23:29 -07:00
Leonardo de Moura
aa890907db chore(stage0): update 2019-09-12 08:20:05 -07:00
Leonardo de Moura
a16d3f09cf feat(library/init/lean/compiler/ir): store scrutinee type at FnBody.case 2019-09-12 08:07:47 -07:00
Leonardo de Moura
e5846934e6 chore(tests/bench/rbmap500k): add new test 2019-09-11 18:01:56 -07:00
Leonardo de Moura
bad7ca2791 chore(stage0): update 2019-09-11 13:43:50 -07:00
Leonardo de Moura
3e6736b374 feat(library/compiler/util): add support for trivial structures at mk_runtime_type 2019-09-11 13:41:41 -07:00
Leonardo de Moura
1062dcbbea refactor(src/library/compiler/erase_irrelevant): move has_trivial_structure to util 2019-09-11 13:04:08 -07:00
Leonardo de Moura
9acd19fe0f chore(stage0): update 2019-09-11 11:58:49 -07:00
Leonardo de Moura
56e0c0efae chore(library/init/lean/compiler/ir/boxing): apply elimDead 2019-09-11 11:55:38 -07:00
Leonardo de Moura
3aeeadd255 chore(library/init/lean/compiler/ir/boxing): cleanup 2019-09-11 11:11:33 -07:00
Leonardo de Moura
459ab7f448 chore(stage0): update 2019-09-11 10:56:37 -07:00
Leonardo de Moura
f39220ac01 feat(library/init/lean/compiler/ir/boxing): ignore "cheap" cases when caching boxing operations 2019-09-11 10:56:37 -07:00
Sebastian Ullrich
fdc30e3097 chore(library/type_context): revert "simple instance pre-filtering"
This reverts commit ab2e66e4a3.

This hack is not immediately needed anymore and will hopefully be
replaced with a much better design in the future
2019-09-11 19:51:25 +02:00
Leonardo de Moura
2901195790 chore(stage0): update 2019-09-11 10:42:42 -07:00
Leonardo de Moura
61a3ea61c4 perf(library/init/lean/compiler/ir/boxing): create auxiliary constants for caching the value of boxed/unboxed literals and constants
For example, in the new test `qsort64.lean`, the new optimization
prevents the repeated execution of `box UInt64.inhabited`.
On my machine
```
./run.sh qsort64.lean 2000000
```
Goes from 1.22s to 0.355s
2019-09-11 10:37:35 -07:00
Leonardo de Moura
9e2200d0de chore(stage0): update 2019-09-09 10:56:53 -07:00
Leonardo de Moura
e8cdd2b29f fix(library/init/lean/compiler/ir/default): missing explicitRC 2019-09-09 10:53:34 -07:00
Leonardo de Moura
f7af9a73bd chore(library/init/lean/compiler/ir): move addBoxedVersion to entry point file 2019-09-09 10:35:52 -07:00
Leonardo de Moura
7dfec3c724 feat(library/init/lean/compiler/ir): add persistent field to inc/dec
If `persistent == true`, then object is known to be persistent at
compilation time. `emitc` omits `inc/dec` operations to
persistent objects. The interpreter does not to avoid memory leaks.
2019-09-09 07:42:06 -07:00
Leonardo de Moura
f5062b6d71 chore(stage0): update 2019-09-07 19:47:33 -07:00
Leonardo de Moura
a188bb8497 chore(library/init/lean/compiler/ir): remove emitcpp 2019-09-07 19:46:22 -07:00
Sebastian Ullrich
e23eded178 fix(bin/leanc.in): use C compiler only when not linking 2019-09-04 17:53:53 +02:00