Sebastian Ullrich
a8f668a3d2
feat(runtime/object): add LEAN_FAKE_FREE option to disable freeing runtime objects while debugging
2019-02-01 16:33:18 +01:00
Sebastian Ullrich
c162ec9583
fix(runtime/object): mk_option_some
2019-02-01 16:33:13 +01:00
Sebastian Ullrich
e3afa47c9e
fix(runtime/object): fix some string primitives
2019-02-01 16:33:11 +01:00
Sebastian Ullrich
e0fc2a7812
feat(runtime/object): string_to_std
2019-02-01 16:32:52 +01:00
Leonardo de Moura
150555e03f
chore(library/compiler/emit_cpp): temporarily comment line
...
See new comment to understand motivation for the change.
2019-01-31 18:24:31 -08:00
Leonardo de Moura
3af0d91bbb
fix(library/compiler/llnf): missing cases at explicit_boxing_fn
2019-01-31 18:16:36 -08:00
Leonardo de Moura
ddc5cf05c4
fix(library/compiler/llnf): user numeric literals to store enum type values in LLNF
2019-01-31 17:58:03 -08:00
Leonardo de Moura
7a322340cb
fix(library/compiler/llnf): in LLNF, the _box.n argument must be a variable
2019-01-31 17:54:06 -08:00
Leonardo de Moura
39f45beec0
chore(library/compiler/llnf): fix typo
2019-01-31 17:52:59 -08:00
Leonardo de Moura
0f47787a06
fix(library/compiler/llnf): remove bad optimization
...
It may destroy boxed value information. Moreover, we want
terminals to be jmp, variable or cases.
2019-01-31 17:52:28 -08:00
Leonardo de Moura
94d7b4e094
fix(library/compiler/emit_cpp): support for _unreachable
2019-01-31 17:05:52 -08:00
Leonardo de Moura
a1b65acf3d
fix(library/compiler/builtin): add lean:: prefix
...
TODO: we will need to revise this for the LLVM backend.
In principle, builtins that are used by LLVM and C++ backends should be
`extern "C"` in a global namespace.
2019-01-31 16:57:25 -08:00
Leonardo de Moura
353d16f5f6
fix(library/compiler/emit_cpp): mpz ==> lean::mpz
2019-01-31 16:57:07 -08:00
Leonardo de Moura
5f29b1003b
fix(library/compiler/emit_cpp): missing enf_unreachable case
2019-01-31 16:37:02 -08:00
Leonardo de Moura
4166851574
feat(library/compiler/emit_cpp): emit_box and emit_unbox
2019-01-31 16:16:30 -08:00
Leonardo de Moura
78842d8d03
feat(library/compiler/emit_cpp): emit_proj, emit_sproj, emit_uproj, emit_sset, emit_uset
2019-01-31 15:38:53 -08:00
Leonardo de Moura
80754e84c5
feat(library/compiler/emit_cpp): emit_closure
2019-01-31 15:06:04 -08:00
Leonardo de Moura
74079cb591
feat(library/compiler/emit_cpp): emit_lit
2019-01-31 14:54:43 -08:00
Leonardo de Moura
34256795d7
feat(library/compiler/emit_cpp): emit_reuse
2019-01-31 14:54:35 -08:00
Leonardo de Moura
7c3354f15f
feat(library/compiler/emit_cpp): emit_reset
2019-01-31 12:33:17 -08:00
Leonardo de Moura
909a8d7c6d
fix(library/compiler/llnf): bug at to_llnf when boxing is enabled
2019-01-30 16:48:04 -08:00
Leonardo de Moura
d63bbb3728
feat(library/compiler/emit_cpp): emit_cnstr
2019-01-30 15:47:38 -08:00
Leonardo de Moura
9bd4a7e9b4
chore(frontends/lean): fix clang++ warnings at C++
...
@kha, it was a `class parser` vs `struct parser`.
I just fixed the warning by using `struct parser` everywhere.
It is ugly, but we will eventually delete the old parser.
2019-01-30 15:19:34 -08:00
Leonardo de Moura
d2cbf9584f
feat(library/compiler/emit_cpp): emit _apply instruction
2019-01-30 14:37:21 -08:00
Leonardo de Moura
efcc459c3b
fix(library/compiler/emit_cpp): emit_constant should handle neutral
2019-01-30 14:36:14 -08:00
Leonardo de Moura
1673775c6e
fix(library/compiler/cse): make sure cse produces correct result in LLNF expressions
...
In LLNF, we must take the type of a let-declaration into account. For
example, we cannot merge the following declarations:
```
x_1 : uint8 := _cnstr.0.0.0
x_2 : _obj := _cnstr.0.0.0
```
We were producing incorrect C++ code for
library/init/lean/parser/token.lean because of this bug.
2019-01-30 13:52:43 -08:00
Leonardo de Moura
69eea3d225
fix(library/compiler/emit_cpp): missing collect_dependencies
2019-01-29 16:41:32 -08:00
Leonardo de Moura
38172c8f1c
feat(library/compiler/emit_cpp): use if statement when cases has only 2 cases
2019-01-29 16:32:23 -08:00
Leonardo de Moura
e4c4eab48e
fix(library/compiler/emit_cpp): collect_dependencies was not handling _closure instruction
2019-01-29 16:31:29 -08:00
Leonardo de Moura
20641731e3
feat(library/compiler/emit_cpp): add emit_instr skeleton
2019-01-29 16:04:50 -08:00
Leonardo de Moura
706f4cb01b
fix(library/compiler/builtin): incorrect builtin type
2019-01-29 16:04:02 -08:00
Leonardo de Moura
bb43567273
fix(runtime/object): typos
2019-01-29 16:03:40 -08:00
Leonardo de Moura
48b03672cc
feat(library/compiler/emit_cpp): emit terminals
2019-01-29 15:15:05 -08:00
Leonardo de Moura
9f8760d936
fix(library/compiler/llnf): LLNF terminal is variable, jmp, or cases
2019-01-29 14:59:12 -08:00
Leonardo de Moura
61e51ba402
fix(library/compiler/llnf): adjust code, now type must match arity
...
We recently modified the type of closures in LLNF.
This commit fixes a mismatch.
2019-01-28 15:55:01 -08:00
Leonardo de Moura
0e8067e191
fix(library/compiler/compiler): ensure_arity bug
2019-01-28 15:42:23 -08:00
Leonardo de Moura
371baf2002
fix(library/compiler/compiler): typo
2019-01-28 15:34:58 -08:00
Leonardo de Moura
1f3201dca1
feat(library/compiler): add emit_fn_fn skeleton
2019-01-28 15:04:56 -08:00
Leonardo de Moura
d3756fd915
feat(library/compiler): add _void type for LLNF format
2019-01-28 13:06:25 -08:00
Leonardo de Moura
274aeed30f
fix(library/compiler/compiler): make sure that the type of functions that return closures match their arity
...
Before this commit, we could have a LLNF function `f` of arity 0 and
type `_obj -> _obj`. Now, this kind of function has type `_obj`.
2019-01-25 15:40:25 -08:00
Leonardo de Moura
dd30cac8aa
feat(library/compiler/emit_cpp): emit module initialization function
2019-01-25 15:24:55 -08:00
Leonardo de Moura
5d5c498d92
fix(shell/lean): module_name is not a path
2019-01-25 15:02:11 -08:00
Leonardo de Moura
5bed81078a
feat(library/compiler/emit_cpp): generate function skeletons
2019-01-25 14:26:32 -08:00
Leonardo de Moura
b36b4f0d80
feat(library/compiler/emit_cpp): emit function headers
2019-01-25 14:26:32 -08:00
Leonardo de Moura
2016e1bce5
feat(library/compiler/llnf): unique names for lambda arguments
2019-01-25 14:26:32 -08:00
Leonardo de Moura
4b66b442c9
chore(library/compiler/emit_cpp): just store a list of decls
2019-01-25 14:26:32 -08:00
Sebastian Ullrich
2d9a16fd24
refactor(library/module_mgr): remove
2019-01-25 20:12:11 +01:00
Sebastian Ullrich
4c0f836305
chore(shell/lean): reduce lean interface to taking a single file, assuming all dependencies have already been built
2019-01-25 18:27:38 +01:00
Leonardo de Moura
bb9e7aceb3
feat(library/compiler/emit_cpp): add environment extension for emit_cpp
2019-01-24 16:04:31 -08:00
Leonardo de Moura
70bb89b213
feat(library/compiler): add [cppname] attribute
2019-01-24 14:40:12 -08:00