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
Sebastian Ullrich
2110da4784
chore(tests/bench/speedcenter.exec.yaml): fix deriv speedcenter benchmark
2019-09-03 21:43:50 +02:00
Sebastian Ullrich
7b7f1d2cac
test(tests/bench): add benchmarks as regular ctests with lowered inputs
2019-09-02 10:52:24 +02:00
Sebastian Ullrich
94b3de0130
chore(tests/bench): parameterize all benchmarks
2019-08-29 18:38:39 +02:00
Leonardo de Moura
4ac235212a
fix(runtime/lean): incorrect assertion
2019-08-28 15:50:11 -03:00
Leonardo de Moura
dc82c5cc70
chore(runtime/object): fix compilation error in debug mode on OSX
2019-08-28 15:43:21 -03:00
Leonardo de Moura
f40617d8dd
feat(CMakeLists, runtime): add CHECK_RC_OVERFLOW cmake option
2019-08-28 15:35:46 -03:00
Leonardo de Moura
a944d158a3
feat(CMakeLists.txt): add SMALL_RC cmake option
...
When used with `COMPRESSED_OBJECT_HEADER`, Lean uses a compressed
object header where only 32-bits are reserved for the RC.
The motivation is performance, in our experiments, it is faster to
access a 32-bit counter than a 45-bit one.
With a smaller RC, we can use 8-bits for the memory kind information,
and speedup its access.
2019-08-28 14:54:08 -03:00
Sebastian Ullrich
dbdae550ea
chore(*.nix): pin nixpkgs version, use clang/llvm 8, reorganize
2019-08-28 13:04:59 +02:00
Sebastian Ullrich
572926f5ce
perf(shell/CMakeLists.txt, tests/): define NDEBUG in leanc release builds
...
`assert` is now being used by the C runtime
2019-08-27 16:54:29 +02:00
Leonardo de Moura
cb1680e096
chore(runtime/object): use same idiom we used at del_core
2019-08-24 12:02:09 -07:00
Leonardo de Moura
2bde205a20
chore(CMakeLists): enable COMPRESSED_OBJECT_HEADER
2019-08-24 11:58:38 -07:00
Leonardo de Moura
88e44d9fdd
fix(runtime/compact): memory leak
2019-08-24 11:21:19 -07:00
Leonardo de Moura
9d09325d1e
fix(runtime): ensure we can disable LEAN_SMALL_ALLOCATOR
2019-08-24 11:18:07 -07:00
Leonardo de Moura
8f4684df32
chore(CMakeLists): temporarily disable COMPRESSED_OBJECT_HEADER
2019-08-24 11:06:20 -07:00
Leonardo de Moura
2d103caa76
perf(runtime/lean): use the low level hack we used in the previous runtime
2019-08-24 11:05:28 -07:00
Leonardo de Moura
86c2c32810
fix(runtime/object): memory leak
2019-08-24 10:24:39 -07:00
Leonardo de Moura
fb4e2daf74
fix(runtime/object): debug build
2019-08-24 09:51:37 -07:00
Leonardo de Moura
79d4addabd
chore(runtime): fix style
2019-08-24 09:33:09 -07:00
Leonardo de Moura
720c3ca3e4
fix(runtime): size_t issue OSX vs Linux
2019-08-24 09:30:12 -07:00