Commit Graph

36 Commits

Author SHA1 Message Date
kr.angelov
86e9acc7a7 throw away the long obsolete runtime type information in the C runtime 2014-10-09 13:44:26 +00:00
kr.angelov
6c86e7fa91 replace the hash maps in the abstract syntax with binary search tables 2014-10-09 08:38:55 +00:00
kr.angelov
9c2f71b07a 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
67781996b6 a missing case in instruction SET 2014-10-07 20:05:05 +00:00
kr.angelov
e98d61b7b7 added a missing case for PUSH instruction with a global closure 2014-10-07 11:46:38 +00:00
kr.angelov
de1b372ef7 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
13c7721bc5 using instruction RET was wrong; now use EVAL 2014-10-06 15:57:42 +00:00
kr.angelov
af7feea385 fix the order in which arguments are stored in the mk_const gate 2014-10-06 12:31:39 +00:00
kr.angelov
a50315396f 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
889c0f3df4 partial implementation for the FAIL instruction 2014-10-06 09:04:25 +00:00
kr.angelov
312d4ff52e 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
70455b88a7 bugfix in the gate evaluate_value_lambda 2014-09-30 08:42:06 +00:00
kr.angelov
80acad4447 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
1ecd61f7f5 bugfix in the RET instruction 2014-09-29 13:04:49 +00:00
kr.angelov
87c5c4b0cc 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
8e64fc6e7e 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
14e6eec5ec 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
621d748bac 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
4d28c7632e the code for def rules now uses proper graph update to preserve lazyness 2014-09-05 11:53:02 +00:00
kr.angelov
86b5f78c57 full support for recursive def rules in the C runtime 2014-09-05 10:09:43 +00:00
kr.angelov
bfd414554d partial implementation for recursive def rules 2014-09-01 14:51:20 +00:00
kr.angelov
342f6e3797 bug fixes in the JIT compiler 2014-09-01 12:53:14 +00:00
kr.angelov
c30e2df228 pattern matching in def rules is now supported 2014-08-11 15:53:41 +00:00
kr.angelov
584d589041 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
71744f7642 fix for the memory allocation in the jitter which should work for Windows. 2013-11-07 08:47:35 +00:00
kr.angelov
6e1451e142 fix the debug mode of the JIT compiler after the refactoring in libgu 2013-11-04 19:33:29 +00:00
kr.angelov
a0505da063 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
e8335806af 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
4f05852b22 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
2105188bd0 enable the PGF JIT compiler for Android 2013-09-12 09:05:43 +00:00
kr.angelov
1e44fdb3d3 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
d1410aba22 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
a2af8e216f an optimization in the jitter for generating more compact code 2013-06-26 09:03:51 +00:00
kr.angelov
d94b6146f2 compatibility issue for MacOS X 2013-06-26 07:03:32 +00:00
kr.angelov
3a22258109 fix for x86_64 2013-06-26 06:43:33 +00:00
kr.angelov
d553cb165a 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