Commit Graph

667 Commits

Author SHA1 Message Date
Alexey Andreev
da27628e19 C: fix bug in conversion from char16 C string to Java string 2019-06-26 15:26:13 +03:00
Alexey Andreev
a2b6c2be58 Fix bug in liveness analysis 2019-06-26 13:41:21 +03:00
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
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
Alexey Andreev
1dd379551c Produce less names in top level scope in dev server mode in order to improve debugging performance in Chrome 2019-01-23 13:28:39 +03:00
Alexey Andreev
48227b24a0 Fix bootstrap mode 2019-01-20 17:50:46 +03:00
Alexey Andreev
74997d277b Fix bugs in try/catch decompilation 2019-01-15 21:49:33 +03:00
Alexey Andreev
3c8184c3b7 Fix bug in nullness analysis when variable graph has irreducible loops 2019-01-14 14:08:12 +03:00
Alexey Andreev
1fabe4c5b9 Fix passing checkstyle 2019-01-09 12:54:38 +03:00
Alexey Andreev
9305a532bb Replace ArrayList with array to store arguments of InvokeInstruction 2019-01-09 12:51:52 +03:00
Alexey Andreev
f589b0035a Decrease memory consumption 2018-12-29 19:02:03 +03:00
Alexey Andreev
58c19e3abc Minor fixes in development toolchain 2018-12-25 18:45:26 +03:00
Alexey Andreev
4ffe74296d Limit max line size of generated JS code 2018-12-21 14:28:30 +03:00
Alexey Andreev
96f77b2f08 Fix stack overflow when decoding large Java strings 2018-12-20 17:25:02 +03:00
Alexey Andreev
43cda1223c Fix class initialization when writing to its static field 2018-12-20 16:59:15 +03:00
Alexey Andreev
a4b61bac19 Fix bugs in debugger 2018-12-19 19:28:35 +03:00
Alexey Andreev
75295f50e5 Make debugging API asynchronous 2018-12-19 18:13:15 +03:00
Alexey Andreev
d7d4dc1571 Add IDEA run configuration that runs dev server 2018-12-16 20:42:21 +03:00
Alexey Andreev
bab0cd59a6 Improve performance and stability of development server and incremental compilation 2018-12-13 18:45:44 +03:00
Alexey Andreev
c9c9c15dfe Fix Class.initialize. Fix html4j tests 2018-12-11 23:47:47 +03:00
Alexey Andreev
d968b20e4c Fix generation of integer multiplication in minified mode. Fix String.intern() (see #370) 2018-12-11 17:42:14 +03:00
Alexey Andreev
eec458089f Implement development server 2018-12-10 19:03:18 +03:00
Alexey Andreev
952ed3f193 Fix diagnostics no printed from teavm-cli. Fix diagnostics of unavailable classes and methods 2018-12-09 19:54:04 +03:00
Alexey Andreev
d74bcbe2b9 Fast dependency analyzer, fix bugs in incremental compiler 2018-12-07 17:41:21 +03:00
Alexey Andreev
eaf0f5a24e Fix bootstrap compiler 2018-12-07 17:41:20 +03:00
Alexey Andreev
3209909c8b Fix build 2018-12-07 01:30:13 +03:00
Alexey Andreev
1b83519280 Reduce minumus JS runtime a little 2018-12-07 00:52:05 +03:00
Alexey Andreev
2bb146af47 Improve float to string conversion 2018-12-07 00:21:18 +03:00
Alexey Andreev
f23c71cd97 Improve double to string conversion 2018-12-02 16:12:59 +03:00
Alexey Andreev
1cf3cce076 Reduce minimum runtime size 2018-12-01 23:07:03 +03:00
Alexey Andreev
45d0a13c9b In HtmlUnit, decode stack traces for all constructed exceptions 2018-11-26 15:58:51 +03:00
Alexey Andreev
0c03379206 Fix inability to catch exception when calling just created lambda 2018-11-26 14:49:03 +03:00
Alexey Andreev
85f901362f Wrap native JS exceptions as java.lang.RuntimeException 2018-11-26 14:01:50 +03:00
Alexey Andreev
b018e61615 Fix converting method to state machine in some cases. Fix #366 2018-11-25 18:46:45 +03:00
Alexey Andreev
a3dfc0c486 Add API to catch native JS exceptions 2018-11-23 19:54:37 +03:00
Alexey Andreev
cf9090e0fa Use JS typed arrays to reinterpret floats and ints.
Also, drop IE9 support
2018-11-23 17:14:06 +03:00
Alexey Andreev
0376a46c06 Fix extra space added after new expression 2018-11-23 12:13:13 +03:00
Alexey Andreev
d50189ea3a Add decoding of stack trace in JUnit adapter 2018-11-23 12:09:26 +03:00
Alexey Andreev
6d2815bc5c Support running JUnit3 tests and improve support of JUnit4 2018-11-22 19:51:33 +03:00
Alexey Andreev
cd7a702c31 Trying to fix Travis build 2018-11-22 15:40:32 +03:00
Alexey Andreev
753755918d Update build config to avoid jar hell 2018-11-22 14:49:30 +03:00
Alexey Andreev
0f951f8c86 Fix calculating class name in debugger 2018-11-19 15:29:02 +03:00
Alexey Andreev
f2dd398719 Fix bug in source map generation
This bug caused metadata lines that follow after the code
generated from Java bytecode, to be mapped to the line in
Java bytecode of the method that appears last in the generated
JavaScript
2018-11-18 02:11:28 +03:00
Alexey Andreev
148c07336c Generate entire code inside wrapper IIF 2018-11-15 12:47:25 +03:00
Alexey Andreev
fe151d525a Prevent generation of function names that clash with standard objects 2018-11-14 13:55:36 +03:00
Alexey Andreev
064888c9a1 Support Java 11 2018-11-12 18:59:28 +03:00