kr.angelov
4db6e30b54
a more efficient tail call by using the new TUCK instruction
2014-10-30 13:09:50 +00:00
kr.angelov
77d3775385
an explicit SAVE instruction
2014-10-26 11:40:12 +00:00
kr.angelov
0da379f97b
an explicit PUSH_FRAME instruction
2014-10-22 14:11:41 +00:00
kr.angelov
76a448e26f
finally proper stack unwind in the evaluator
2014-10-16 10:00:32 +00:00
kr.angelov
6aa0fd2590
the compiler now allows + to be used as a floating point addition in the abstract syntax
2014-10-14 11:15:18 +00:00
kr.angelov
e8b81c145b
bugfix in the bytecode generator
2014-10-14 09:27:24 +00:00
kr.angelov
0e91de3b5f
simplify jit_bare_ret
2014-10-14 09:09:26 +00:00
kr.angelov
57f7b61c6b
throw away the long obsolete runtime type information in the C runtime
2014-10-09 13:44:26 +00:00
kr.angelov
4ac5902fc9
replace the hash maps in the abstract syntax with binary search tables
2014-10-09 08:38:55 +00:00
kr.angelov
23642fbb90
now we statically allocate closures for all top-level functions and all nullary constructors. closures are dynamically allocated only for CAFs. this reduces memory use and time to allocate dynamic closures
2014-10-08 12:57:29 +00:00
kr.angelov
e9a871db7f
a missing case in instruction SET
2014-10-07 20:05:05 +00:00
kr.angelov
e7404c8f7a
added a missing case for PUSH instruction with a global closure
2014-10-07 11:46:38 +00:00
kr.angelov
9e493031b2
the indirection should be done in the evaluate_expr_thunk gate instead of in the pgf_evaluate_expr_thunk function. this ensures lazyness
2014-10-07 07:12:40 +00:00
kr.angelov
8d09f62efc
using instruction RET was wrong; now use EVAL
2014-10-06 15:57:42 +00:00
kr.angelov
2bc0734b6e
fix the order in which arguments are stored in the mk_const gate
2014-10-06 12:31:39 +00:00
kr.angelov
f5041fa67b
push a stack frame around recursive calls to guarantee that a nested call to a failing function will not crash
2014-10-06 09:21:08 +00:00
kr.angelov
b07a2652d8
partial implementation for the FAIL instruction
2014-10-06 09:04:25 +00:00
kr.angelov
8801915523
enough fixes to get the JIT compiler compile for ARM. It is still broken if you try to use it
2014-09-30 12:39:31 +00:00
kr.angelov
9fd8d5d019
bugfix in the gate evaluate_value_lambda
2014-09-30 08:42:06 +00:00
kr.angelov
698329f469
bugfix in the pattern matching compiler and a number of other fixes that I somehow did not push before
2014-09-29 15:00:04 +00:00
kr.angelov
0d08417efe
bugfix in the RET instruction
2014-09-29 13:04:49 +00:00
kr.angelov
1d7e976560
enlarge the code window in pgf_jit_gates to ensure enough space on 64-bit machines
2014-09-29 07:34:32 +00:00
kr.angelov
3064fc737e
switch off the debugging of the JIT compiler which I had turned on accidentally. silence two harmless warnings
2014-09-25 11:44:45 +00:00
kr.angelov
25e8e4ce5a
now a complete JIT compiler and ByteCode compiler for the def rules in the abstract syntax. there might be some bugs yet to be found, meta variables and computation under lambda is only partially supported
2014-09-25 10:35:06 +00:00
kr.angelov
923ad6b3c0
a major revision of the bytecode generator and JIT compiler. the effect is that now we can compute with lambda functions and with true tail recursion
2014-09-11 15:39:39 +00:00
kr.angelov
d7dc541f74
the code for def rules now uses proper graph update to preserve lazyness
2014-09-05 11:53:02 +00:00
kr.angelov
5e5ad8f2db
full support for recursive def rules in the C runtime
2014-09-05 10:09:43 +00:00
kr.angelov
442dadf100
partial implementation for recursive def rules
2014-09-01 14:51:20 +00:00
kr.angelov
9adf01a91e
bug fixes in the JIT compiler
2014-09-01 12:53:14 +00:00
kr.angelov
912225a5dd
pattern matching in def rules is now supported
2014-08-11 15:53:41 +00:00
kr.angelov
03b067782c
a partial support for def rules in the C runtime
...
The def rules are now compiled to byte code by the compiler and then to
native code by the JIT compiler in the runtime. Not all constructions
are implemented yet. The partial implementation is now in the repository
but it is not activated by default since this requires changes in the
PGF format. I will enable it only after it is complete.
2014-08-11 10:59:10 +00:00
kr.angelov
fe41356a9d
fix for the memory allocation in the jitter which should work for Windows.
2013-11-07 08:47:35 +00:00
kr.angelov
d2186b71e3
fix the debug mode of the JIT compiler after the refactoring in libgu
2013-11-04 19:33:29 +00:00
kr.angelov
b05f61e6c6
remove the include to mman.h in jit.c since it doesn't seem to be used
2013-11-01 07:46:24 +00:00
kr.angelov
2f78333e28
GuString is now an ordinary C string - it makes live easier. In addition PgfSymbolKS, PgfExprFun and PgfLiteralStr now keep their strings as embedded flexible arrays. The latest change gives us the same compactness as the old representation but it is a lot easier to use.
2013-10-04 12:04:39 +00:00
kr.angelov
be8bf64eb2
added assertion in the JIT compiler which checks that we are not going outside of the compilation window
2013-09-25 07:53:10 +00:00
kr.angelov
d88084a2d5
enable the PGF JIT compiler for Android
2013-09-12 09:05:43 +00:00
kr.angelov
b08925fd3d
fixes in the C and Python API to make them closer to the Haskell API
2013-08-16 12:44:37 +00:00
kr.angelov
03690ccc4b
we no longer maintain an explicit list of functions per category since now it is implicitly kept in the JIT compiled code
2013-06-26 09:35:50 +00:00
kr.angelov
c873531172
an optimization in the jitter for generating more compact code
2013-06-26 09:03:51 +00:00
kr.angelov
966d3aee3f
compatibility issue for MacOS X
2013-06-26 07:03:32 +00:00
kr.angelov
38b3dfcad6
fix for x86_64
2013-06-26 06:43:33 +00:00
kr.angelov
16584d4368
Now there is a just-in-time compiler which generates native code for proof search. This is already used by the exhaustive generator. The time to generate 10000 abstract trees with ParseEng went down from 4.43 sec to 0.29 sec.
2013-06-25 19:22:42 +00:00