Commit Graph

615 Commits

Author SHA1 Message Date
Alexey Andreev
b6cfbe7f5b TeaVM(C): fix unnecessary call to Fiber.isResuming 2019-06-25 14:03:02 +03:00
Alexey Andreev
c430578426 Improve GVN 2019-06-23 23:39:40 +03:00
Alexey Andreev
2c6068b36a JS: reduce the probability of colliding local variable name with a keyword 2019-06-22 23:56:32 +03:00
Alexey Andreev
62b3c68a5b Don't report compile-0time error when there's possible way to reach suspension point. Generate runtime error instead. 2019-06-22 23:30:05 +03:00
Alexey Andreev
c28d9ef68d C: fix GC hanging when main function receives 0 for argc 2019-06-20 17:41:35 +03:00
Alexey Andreev
aeb5f44922 C: allow to change main function name 2019-06-20 17:13:08 +03:00
Alexey Andreev
a65f8fdcd9 C: reduce number of warnings, redirect console to debugger in Windows 2019-06-20 15:06:15 +03:00
Alexey Andreev
9e4c3010b0 C: fix compilation on UWP 2019-06-18 19:17:09 +03:00
Alexey Andreev
b72e4f01e2 C: fix coroutine generation 2019-06-17 17:45:34 +03:00
Alexey Andreev
00ca2c1064 C: fix compilation in Linux 2019-06-17 15:58:19 +03:00
Alexey Andreev
9642eeec0a C: support passing strings as char16_t*, fix bugs under msvc 2019-06-17 15:16:44 +03:00
Alexey Andreev
6e71fa7e87 C: implement file IO in Windows 2019-06-14 15:32:20 +03:00
Alexey Andreev
2c67cc3eb9 C: fix initialization order of system classes 2019-06-10 13:16:27 +03:00
Alexey Andreev
7831fd328f C: allow to put 'struct' keyword before references to native structures 2019-06-06 18:37:37 +03:00
Alexey Andreev
c84ae57b3a C: native structures 2019-06-03 18:27:08 +03:00
Alexey Andreev
3fe3aa5847 C: fix NPE when building application with errors 2019-05-31 17:37:05 +03:00
Alexey Andreev
91de1f6ca7 C: implement native file system 2019-05-31 15:05:23 +03:00
Alexey Andreev
2ba4ce0977 Fix inability to synchronize using array object
See #393
2019-05-29 22:49:13 +03:00
Alexey Andreev
1ca635fac6 JS: fix rethrowing uncaught exception
See #394
2019-05-29 21:37:34 +03:00
Alexey Andreev
d17b459ecc C: fix MSVC support 2019-05-28 20:13:14 +03:00
Alexey Andreev
1899641f63 C: when converting between C and Java strings, properly handle illegal characters 2019-05-27 17:39:10 +03:00
Alexey Andreev
d818b62686 C: fix bug in virtual table builder 2019-05-27 11:57:57 +03:00
Alexey Andreev
fdb3f5edb1 C: improve incremental compiler performance. Generate text file with list of c files to compile 2019-05-24 12:10:18 +03:00
Alexey Andreev
28c0cc6ef2 Wasm: fix bugs 2019-05-23 23:38:10 +03:00
Alexey Andreev
871e9a0113 C: reduce size occupied by call site descriptors 2019-05-23 18:43:31 +03:00
Alexey Andreev
9de7df6fdf C: pack virtual tables 2019-05-23 17:34:08 +03:00
Alexey Andreev
063a9f049e C: less code for virtual calls 2019-05-23 15:26:35 +03:00
Alexey Andreev
8b3df6f730 C: fix bugs, introduce new virtual table builder 2019-05-23 15:18:25 +03:00
Alexey Andreev
7f875aa568 C: support methods of Date class 2019-05-21 15:17:58 +03:00
Alexey Andreev
bb9ca77349 JS: fix bug in debugger 2019-05-17 18:51:34 +03:00
Alexey Andreev
2eafb902f4 C: support weak references 2019-05-17 17:40:45 +03:00
Alexey Andreev
4c50ed8714 C: fix generation of '#line' directive 2019-05-17 17:39:29 +03:00
Alexey Andreev
86b5daa3cf Add annotations to mark classes and methods supported on some platforms 2019-05-17 11:44:35 +03:00
Alexey Andreev
816434500c C: fix virtual tables 2019-05-16 18:58:36 +03:00
Alexey Andreev
f5c2cf0fa3 C: fix generation of virtual tables inheriting interface default methods 2019-05-16 18:50:03 +03:00
Alexey Andreev
b3b324d73c C: add missing include to all.c 2019-05-16 17:08:50 +03:00
Alexey Andreev
8e08cf6dcd C: improve generation of string pool for incremental mode 2019-05-16 16:53:40 +03:00
Alexey Andreev
0003ed0bb2 C: generate '#line' preprocessor directive 2019-05-16 11:12:35 +03:00
Alexey Andreev
054db3e8d1 C: incremental code generator 2019-05-15 15:16:18 +03:00
Alexey Andreev
ca50f72fe9 Fix displaying diagnostics in out-of-process mode 2019-05-14 14:46:44 +03:00
Alexey Andreev
3d96616761 JS: reduce precision of float constants 2019-05-13 17:39:18 +03:00
Alexey Andreev
a1aa25afa0 C: fix generation of relative path in 'include' directive 2019-05-13 10:49:36 +03:00
Alexey Andreev
da22256c1f C: compile into multiple .c and .h files 2019-05-08 17:36:46 +03:00
Alexey Andreev
7ef639ec8a Fix bug in GC 2019-04-29 16:24:07 +03:00
Alexey Andreev
ea5dd80199 C/Wasm: fix bugs in GC root detector 2019-04-29 16:24:07 +03:00
Alexey Andreev
5a346fd3a4 Fix issue in inliner 2019-04-29 16:24:07 +03:00
Alexey Andreev
093b506c9a Improve resolution of System.nanoTime 2019-04-29 16:24:07 +03:00
Alexey Andreev
8a45dc300c C backend: fix bug Class implementation. Don't emit unnecessary Object.monitor field 2019-04-26 18:26:23 +03:00
Alexey Andreev
da68fa0083 Wasm backend: fix 2019-04-26 17:10:28 +03:00
Alexey Andreev
20866637e7 C backend: exit application and print stack when getting out of memory error 2019-04-26 14:04:07 +03:00
Alexey Andreev
87656a3e9a C backend: fix array of of bounds access in fibers 2019-04-26 12:41:17 +03:00
Alexey Andreev
8cd96d2da2 C backend: fix passing NULL arrays to native methods 2019-04-26 12:40:51 +03:00
Alexey Andreev
f828d049c4 C backend: bugfixes 2019-04-23 19:56:16 +03:00
Alexey Andreev
cbc8d3f638 C backend: bugfixes 2019-04-22 19:03:37 +03:00
Alexey Andreev
2a6ca2d0d8 C backend: bug fixes and interop improvements 2019-04-19 18:41:02 +03:00
Alexey Andreev
cfd6b64899 Remove debugging code 2019-04-15 16:47:46 +03:00
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