Commit Graph

523 Commits

Author SHA1 Message Date
Alexey Andreev
83d041d55b Improve compilation performance of low-level backends 2019-04-05 14:37:02 +03:00
Alexey Andreev
7551cd1ec6 C: fix bugs in GC 2019-04-05 13:08:16 +03:00
Alexey Andreev
ec8bae1d40 C: fix bugs in RTTI. Support args parameter of main method 2019-04-04 18:34:30 +03:00
Alexey Andreev
91cf9917c7 JS: fix deobfuscated parameter names. Generate less local variables 2019-04-02 19:15:48 +03:00
Alexey Andreev
e6bb91bfb0 JS: fix coroutines 2019-04-02 17:12:53 +03:00
Alexey Andreev
fe68bf700b Improve performance of array creation 2019-04-02 17:04:51 +03:00
Alexey Andreev
a9c4ab6aa4 Support generic type signatures in IR 2019-03-31 21:32:41 +03:00
Alexey Andreev
45d31da85c Make clinit optimization weaker in order to properly handle case
when clinit method reads state that was set somewhere in main method
2019-03-27 19:34:30 +03:00
Alexey Andreev
d2a7e31eca Proper fix for recent bug in C backend. Fix Thread.daemon flag 2019-03-27 18:29:02 +03:00
Alexey Andreev
0dc170dad2 Fix bugs in C backend 2019-03-26 19:09:25 +03:00
Alexey Andreev
46d76f7acf Fix <clinit> optimization issues 2019-03-25 15:09:23 +03:00
Alexey Andreev
103affa392 Partially revert previous <clinit> commit.
Generate calls to <clinit> methods, since corresponding analyzer
guarantees proper initialization order.
2019-03-24 22:51:17 +03:00
Alexey Andreev
f33c90f778 Improve <clinit> elimination:
* Generate clinit instruction instead of calling <clinit>
  directly
* Rename annotation that indicates absence of side effects
* Don't apply this annotation automatically to all JSBody methods
2019-03-24 12:54:06 +03:00
Alexey Andreev
de84105241 Call <clinit> methods before main method when possible, eliminate
lazy class initialization for these <clinit> methods.
2019-03-22 19:40:56 +03:00
Alexey Andreev
955ac92035 Get rid of reflection code 2019-03-22 11:32:48 +03:00
Alexey Andreev
f664d94d74 Allow to exclude certain classes, fields and methods from compilation 2019-03-21 17:00:22 +03:00
Alexey Andreev
36041b4107 Fix issues with call graph serialization 2019-03-13 19:19:05 +03:00
Alexey Andreev
731beb5cd5 Fix bugs in threading in C backend 2019-03-13 18:47:30 +03:00
Alexey Andreev
eeaa71072a Fix IR serialization issue 2019-03-11 18:36:10 +03:00
Alexey Andreev
a8226ef6a3 Decrease memory consumption 2019-03-11 17:27:51 +03:00
Alexey Andreev
94322e5f6e Get rid of Mapper interface in favour of Function 2019-03-11 13:27:34 +03:00
Alexey Andreev
3acf1f9538 Fix issues with new IR serialization format 2019-03-11 12:14:10 +03:00
Alexey Andreev
abdd9b3270 C backend: support coroutines 2019-03-10 14:04:04 +03:00
Alexey Andreev
578912056b Reduce memory used by initial class reader 2019-03-07 19:27:07 +03:00
Alexey Andreev
fcfa998e1c Reduce memory used by call graph in dev server mode 2019-03-07 16:51:00 +03:00
Alexey Andreev
88dca1bd02 Decrease memory consumption during compilation 2019-03-06 16:51:01 +03:00
Alexey Andreev
2a1aca98da Use shared ReferenceCache between different stages of compilation 2019-03-05 19:32:50 +03:00
Alexey Andreev
3c9a3bb359 Store AST cash in binary format. Introduce more compact
AST serialization format.

Reduce memory consumption of incremental compilation on dev server
2019-03-05 19:06:21 +03:00
Alexey Andreev
573c5f6064 Reduce memory consumption of incremental compilation on dev server 2019-03-05 16:50:16 +03:00
Alexey Andreev
35730d665f Decrease memory consumption 2019-02-27 13:24:50 +03:00
Alexey Andreev
ade00cc984 C backend: fix bugs 2019-02-26 00:10:22 +03:00
Alexey Andreev
2c40c7d56e Trying to decrease compiler memory consumption 2019-02-25 18:31:34 +03:00
Alexey Andreev
95092c4d82 Refactor things around decompiler, JS backend and control flow debug info 2019-02-25 16:10:35 +03:00
Alexey Andreev
3be32a5851 JS: don't generate square brackets in 'if' bodies, when possible.
Generate mangled name for $rt_wrapException
2019-02-25 11:30:30 +03:00
Alexey Andreev
a8f1940df3 Fix bugs in debugger 2019-02-22 17:19:19 +03:00
Alexey Andreev
4a325a192e Update inlining thresholds due to changes in scoring algorithm 2019-02-13 19:31:57 +03:00
Alexey Andreev
ce13c05342 JS: add ability to set limit for top-level names.
The purpose of this option is JS engines are too sensible for number
of methods in closure, while they don't care about methods
in an object.
2019-02-13 17:03:13 +03:00
Alexey Andreev
6790d724c7 Further improvements to inliner 2019-02-13 13:42:44 +03:00
Alexey Andreev
4de1c51e1a Improve inliner: use simlified heuristics in advanced optimization mode, remove methods that were fully inlined 2019-02-12 19:30:57 +03:00
Alexey Andreev
89189c7454 Fix bugs in debugger 2019-02-12 12:10:33 +03:00
Alexey Andreev
bc41b12f0e JS: fix bug in generating async functions in minified mode 2019-02-07 17:15:32 +03:00
Alexey Andreev
1b2c47407f Place classes to a single object in development server to improve debugger performance 2019-02-07 16:29:55 +03:00
Alexey Andreev
95a3a30a6e Fix html4j tests 2019-01-31 19:20:14 +03:00
Alexey Andreev
7d2c76f711 Fix compiler crash when using incremental pipeline 2019-01-30 19:36:00 +03:00
Alexey Andreev
35ca7fd152 Add lazy compilation pipeline that can work a little bit faster in incremental compiler 2019-01-30 19:00:07 +03:00
Alexey Andreev
5be34dcf44 Proper fix for virtual table issue.
C: prevent from generating identifiers that clash with keywords
2019-01-30 15:00:49 +03:00
Alexey Andreev
daeaa502d6 JS: deobfuscate stack traces for wrapped native exceptions 2019-01-30 14:32:43 +03:00
Alexey Andreev
42aedf770b Fix bugs in C backend 2019-01-28 14:57:34 +03:00
Alexey Andreev
f734603255 JS: prevent TeaVM from generating URL function 2019-01-27 23:42:05 +03:00
Alexey Andreev
78c55437e3 Add stack deobfuscation to dev server 2019-01-24 16:28:30 +03:00