Alexey Andreev
15be89a758
JS: fix source map generation in some cases
2019-10-28 14:33:53 +03:00
Alexey Andreev
6ed00f1af2
C/Wasm: fix heap corruption when GC hits on initializing stack trace of exception
2019-10-28 13:59:03 +03:00
Alexey Andreev
4f9567561c
Fix WASM backend
2019-10-23 18:30:16 +03:00
Alexey Andreev
3b4cc43e79
C: add option to strip off information about call site locations.
...
This decreases executable size significantly. However, this produces
obfuscated stack traces which can be deobfuscated using JSON symbol table.
2019-10-23 17:34:23 +03:00
Alexey Andreev
c78874f426
C/Wasm: don't generate names for classes when possible
2019-10-23 14:11:24 +03:00
Alexey Andreev
f7620704fc
C/Wasm: fix bugs in GC
2019-10-22 19:05:37 +03:00
Alexey Andreev
70cb67c8f0
Fix bug in WASM backend
2019-10-18 17:09:57 +03:00
Alexey Andreev
8a91605c56
Add support for Class.getCanonicalName/getEnclosingClass
2019-10-18 15:10:16 +03:00
Alexey Andreev
8038f90fd8
Support new format of debug information in C and WASM
...
This allows to keep proper stack traces in FULL optimization mode,
when aggressive inlining is applied
2019-10-15 11:47:40 +03:00
Artem Godin
e46f204b4e
#431 : Add support for char annotation methods
...
Fixes #431
2019-10-14 14:06:21 +03:00
Alexey Andreev
4ef231c7fa
JS: preserve stack trace items when agressive inlining enabled
2019-10-14 14:05:06 +03:00
Alexey Andreev
e762f26a40
Keep location stack in IR when inlining methods
2019-10-08 16:09:07 +03:00
Alexey Andreev
378111d767
C: fix generation of heap dump
2019-10-07 17:43:18 +03:00
Alexey Andreev
94a96f571b
C: support array bound checking
2019-10-07 16:55:31 +03:00
Alexey Andreev
6f50eefaf9
JS: add null check in strict mode
2019-10-07 16:55:30 +03:00
Alexey Andreev
bffb50f0cd
Implement array bounds checking in JavaScript
2019-10-07 16:55:30 +03:00
Alexey Andreev
a1d7153cab
Add instruction to perform array bound check
2019-10-07 16:55:30 +03:00
Matt McHenry
ec21f2d8e1
mark threading primitives unsupported on wasm
...
this gives much clearer feedback, at build time rather than runtime,
when attempting to use TeaVM with code that uses these operations.
2019-10-06 21:10:40 +03:00
Alexey Andreev
89ea97d00f
JS: revert $rt_compare implementation since new one does not work properly
2019-10-04 16:40:41 +03:00
Alexey Andreev
3194a403b8
C/Wasm: reduce memory consumption in GC
2019-10-02 13:55:23 +03:00
Alexey Andreev
ae896f3d90
WASM: bugfixes
2019-10-01 14:52:28 +03:00
Max Graey
e23293a8af
Minor improvements for javascript runtime ( #425 )
2019-10-01 11:29:30 +03:00
Alexey Andreev
810ee0f49e
JS: fix crash on some JavaScript constructs in hand-written runtime code
2019-09-30 18:36:05 +03:00
Alexey Andreev
3b170df2ca
Fix nullness information builder
2019-09-30 18:23:38 +03:00
Alexey Andreev
a2a9dbcbe3
Improve performance of inliner in FULL optimization level
...
The former implementation suffered from class inference.
The reason was in many nodes having too many possible classes in them.
The new implementation does not handle full set of classes in each node.
Instead, it introduces concept of 'overflow', i.e. node having
more types than the given upper limit.
These nodes behave as if there were all possible classes in them,
which allows to apply certain optimization for these nodes and
omit heavy computations of large type sets.
2019-09-27 16:36:55 +03:00
Alexey Andreev
fe3436f053
C/Wasm: resizable heap
2019-09-24 17:48:17 +03:00
Alexey Andreev
f0b6cc2f30
Update version to 0.7.0
2019-09-24 16:26:14 +03:00
Alexey Andreev
5643e82a3d
C: minor fixes for Linux
2019-09-07 22:08:32 +03:00
Alexey Andreev
5b739238c2
More efficient filesystem implementation
2019-09-05 17:11:43 +03:00
Alexey Andreev
6e6783f93d
C: regenerate only as small amount of classes as possible during incremental build
2019-09-04 19:04:12 +03:00
Alexey Andreev
e33cc5a807
C: split runtime into smaller parts
2019-09-03 14:01:30 +03:00
Alexey Andreev
9e9866398b
C: generate return statement in main function
2019-08-29 14:34:06 +03:00
Alexey Andreev
6b0b30cb23
C: fix duplicate call of some <clinit> methods when using reflection
2019-08-29 14:33:23 +03:00
Alexey Andreev
5a8284222a
C: fix support of weak references in GC
2019-08-26 19:50:10 +03:00
Alexey Andreev
f028f8db37
JS: don't remove class name from metadata when it's referenced indirectly from array class
2019-08-26 16:44:10 +03:00
Alexey Andreev
7a03ad6c5e
Fix issue with <clinit> methods introduced by previous commit
2019-08-23 14:26:33 +03:00
Alexey Andreev
ed627459c8
Fix issue with async methods in code server
2019-08-23 13:44:03 +03:00
Alexey Andreev
492fd004af
C: add ability to write heap dump when application crashes
2019-08-19 15:51:41 +03:00
Alexey Andreev
97f9967153
Make SSA and non-SSA liveness analyses. Fix aliasing local variable names with special variables.
...
Fix #416
2019-08-14 12:40:58 +03:00
Alexey Andreev
6307a67f8f
C: allow to redefine directory where to write GC trace files
2019-08-13 13:40:25 +03:00
Alexey Andreev
67c86b089f
Fix bug in liveness analysis when running on non-SSA IR
2019-08-13 11:37:21 +03:00
Alexey Andreev
c5334e344d
C: add setting to generate code with lots of assertions
2019-08-12 15:12:48 +03:00
Alexey Andreev
0fdf58cbd8
C: implement heap defragmentation in GC
2019-08-12 15:12:27 +03:00
volth
d750847a19
teavm_printString: fix on linux
2019-08-07 19:11:56 +03:00
Alexey Andreev
dcd1f64c81
JS: fix instanceof T[], where T is non-primitive type
2019-08-07 18:34:06 +03:00
Alexey Andreev
e16ba8a6ca
C: don't treat primitives as subtypes of Object. Fix #411
2019-08-07 13:45:40 +03:00
volth
2e27a3c218
fix ci
2019-08-07 13:14:20 +03:00
volth
c7309c06d0
ClassGenerator.prepare: handle IsInstanceInstruction case
2019-08-07 13:14:20 +03:00
Alexey Andreev
a5ba6f247e
Fix register allocator
2019-07-30 11:23:52 +03:00
Alexey Andreev
1074293aad
C: properly print stack trace when application crashes in Windows
2019-07-30 11:23:52 +03:00
Alexey Andreev
d9361e339a
C: fix file IO in UWP
2019-07-26 17:00:13 +03:00
Alexey Andreev
c80e9ee431
C: don't add native functions to GC roots
2019-07-26 16:59:58 +03:00
Alexey Andreev
a9ba21889a
C: generate unreachable hint after throw statement to avoid compiler warnings
2019-07-23 18:19:40 +03:00
Alexey Andreev
ca3b565210
C: improve null check implementation
2019-07-23 16:33:13 +03:00
Alexey Andreev
a260067fde
C: fix bug in GC
2019-07-23 14:15:59 +03:00
Alexey Andreev
90e00f7eb4
C: add option to support exceptions via setjmp/longjmp
2019-07-22 16:53:47 +03:00
Alexey Andreev
114ad986e4
C: fix initialization code
2019-07-15 19:34:02 +03:00
Alexey Andreev
db911c6623
C: fix compilation on Linux
2019-07-15 15:22:43 +03:00
Alexey Andreev
a240537e36
C: reduce number of synthesized null checks
2019-07-12 14:07:57 +03:00
Alexey Andreev
cdcaa8947c
C: fix bugs in exception handling lowerer
2019-07-11 15:56:03 +03:00
Alexey Andreev
f264865cc1
C: fix bugs in exception handling lowerer
2019-07-09 17:57:28 +03:00
Alexey Andreev
94996a5e00
C: don't define WIN32_LEAN_AND_MEAN
2019-07-09 15:52:19 +03:00
Alexey Andreev
8a359c6434
C: fix GC
2019-07-09 14:41:53 +03:00
Alexey Andreev
3ed75a97d4
C: fix insertion of shadow stack instructions
2019-07-09 14:41:39 +03:00
Alexey Andreev
f4f80a88ea
C: fix minor compiler warnings
2019-07-09 11:40:39 +03:00
Alexey Andreev
4fa3db38a0
C: improve resolution of System.currentTimeNano in Windows
2019-07-08 14:13:56 +03:00
Alexey Andreev
8667b98af5
C: fix incorrect phi placement after some IR transformations
2019-07-05 18:24:59 +03:00
Alexey Andreev
973cdf045b
Always eliminate constant variables in AST optimizer
2019-06-28 22:23:50 +03:00
Andrey Mikhalev
5593a2c557
Fixed teavm_currentTimeNano() for MSVC
2019-06-28 12:15:01 +03:00
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
Alexey Andreev
4a7b70e1e8
Wasm: fix the way '!' expression translated. Also fix #365
2018-11-06 14:34:18 +03:00
Alexey Andreev
4d2c075c07
Always embed runtime into generated file. Remove 'runtime' build property
2018-10-28 00:15:36 +03:00
Alexey Andreev
63b2440e48
Remove $rt_global and indirect references to runtime function
2018-10-27 22:42:25 +03:00
Alexey Andreev
1b78ef99a6
Fix bugs in node splitting or irreducible graphs
2018-10-24 18:16:59 +03:00
Alexey Andreev
ef011d429d
Ignore flaky test
2018-10-19 17:20:07 +03:00
Alexey Andreev
8a55510d4f
Fix bug in dependency analyzer
2018-10-19 14:47:34 +03:00
Alexey Andreev
f206cbe2d1
Reorder modifiers to get less metadata size
2018-10-04 19:07:23 +03:00
Alexey Andreev
4c4c589172
Various code size optimizations
...
1. Generate 'a' for 'this' instead of '$t'
2. Fix frequency-based identifier optimization
3. Generate less code in <clinit> callers
4. Generate one-letter identifier in most of constructors
(instead of $r)
5. Use $ and _ chars in identifiers
2018-10-04 16:29:05 +03:00
Alexey Andreev
b66053f5ce
Don't generate virtual wrappers for methods that aren't ever called virtually
2018-10-04 11:55:34 +03:00
Alexey Andreev
681e21ecca
Store class names in metadata as a pair of package and simple name
2018-10-03 16:01:37 +03:00
Alexey Andreev
0a94c91ff2
Don't generate unused class names in metadata section
2018-10-03 14:46:52 +03:00
Alexey Andreev
be21e474c5
Generate shorter <clinit> caller names in minified mode
2018-10-03 12:48:14 +03:00
Alexey Andreev
6b063bc567
Some code size optimizations
...
1. Eliminate empty switch statements
2. Eliminate unnecessary == 0 and != 0 conditions in 'if'
2018-10-03 11:57:51 +03:00
Alexey Andreev
168bf1fa9c
Add option to print size statistics of generated JS code
2018-10-03 11:08:15 +03:00
Alexey Andreev
0473020bc8
Prevent from generating functions with NaN identifier
2018-09-04 17:28:10 +03:00
Alexey Andreev
50573f4f06
Prevent minifier from generating NaN function
2018-08-30 11:10:23 +03:00
Alexey Andreev
f5c6ac9c5d
Improve performance of dependency analyzer, decrease memory consumption
2018-08-29 13:20:16 +03:00
Alexey Andreev
365e47882a
Avoid generation of too deeply nested expressions to fit into v8 parser stack
2018-08-27 22:08:03 +03:00
Alexey Andreev
d6363c5fbf
Fix NPE in dependency analyzer. Fix excessive types propagating in dependency analyzer
2018-08-27 16:17:23 +03:00
Alexey Andreev
558c3f2f1e
Fix bugs in dependency analyzer, introduced by previous optimizations
2018-08-23 13:26:26 +03:00
Alexey Andreev
0ebf8c2f6e
Reduce memory consumption
2018-08-20 18:56:16 +03:00
Alexey Andreev
2dd145a731
Improve performance of dependency analysis
2018-08-20 18:41:08 +03:00
Alexey Andreev
7f46c301bd
IDEA: allow to configure build daemon heap size
2018-07-31 16:31:09 +03:00
Alexey Andreev
67afe6173e
Improve performance of compilation of large code bases
2018-07-31 12:14:53 +03:00
Alexey Andreev
5b5417d46b
Improve performance of dependency analysis
2018-07-04 11:53:53 +03:00
Alexey Andreev
4e20a1de18
Properly handle checkcast to array type in dependency analyzer
2018-07-03 19:11:51 +03:00
Alexey Andreev
3653e39bec
Add system property that triggers printing of dependency analyzer summary report
2018-06-29 17:32:26 +03:00
Alexey Andreev
f160ce2f2f
Use class/method names to generate lambda class names. Reduce number of types propagated by dependency analyzer
2018-06-29 16:46:36 +03:00
Alexey Andreev
097820cc2b
Wasm backend: implement remaining types of resources
2018-05-20 23:54:23 +03:00
Alexey Andreev
5ce48ce866
Wasm backend: fix issues related to instanceof expression
2018-05-19 22:56:16 +03:00
Alexey Andreev
27a4848947
Make more precise type inference. The old algorithm sometimes reported wrong results on multidimensional primitive arrays
2018-05-19 20:40:47 +03:00
Alexey Andreev
15b77ee752
Wasm backend: fix Array.get
2018-05-17 23:58:14 +03:00
Alexey Andreev
9b2e00cb9f
Wasm backend: support reinterpret conversion in C wasm emulator
2018-05-17 23:58:01 +03:00
Alexey Andreev
dbe31c43bf
Wasm backend: write function index in AST representation to make easier navigation and debugging
2018-05-17 19:39:22 +03:00
Alexey Andreev
bb3a2a22fe
C backend: add GTK version of jbox2d benchmark.
2018-05-17 01:14:37 +03:00
Alexey Andreev
c7b6544537
C backend: allow to pass Java string to C code
2018-05-16 23:20:20 +03:00
Alexey Andreev
f0d97a72ab
Wasm backend: add intrinsics for some Float and Double methods
2018-05-16 20:15:13 +03:00
Alexey Andreev
d7b57ae938
Update asm version to 6.1.1 and versions of Maven plugins that use old asm in order to support Java 10 bytecode version.
2018-05-15 16:20:20 +03:00
Alexey Andreev
d3a9f57c1c
C backend: avoid generation of deeply nested blocks and long lines (such code is rejected by MSVC).
2018-05-14 22:34:37 +03:00
Alexey Andreev konsoletyper@gmail.com
4d8f33d994
C backend: few fixes for MVSC
2018-05-14 01:15:29 +03:00
Alexey Andreev
76ca3f06cf
C backend: make compiled binary independent of load location
2018-05-13 23:27:27 +03:00
Alexey Andreev
8cf69db8bb
Wasm backend: copy wasm-runtime.js to the output directory. Fix wasm benchmark according latest changes
2018-05-13 19:45:25 +03:00
Alexey Andreev
c9ebe2e2e9
Wasm backend: fix more tests. Implement Array.get. Implement x instanceof C for all cases.
2018-05-13 19:17:45 +03:00
Alexey Andreev
f23128bb13
Wasm backend: fix many tests
2018-05-12 23:43:53 +03:00
Alexey Andreev
5e3514e5dd
Wasm backend: fix low-level memory copying function
2018-05-11 20:02:52 +03:00
Alexey Andreev
a81eeeee03
Wasm backend: fix hanging tests, make more tests pass, change name generation scheme
2018-05-10 17:41:28 +03:00
Alexey Andreev
b087610c2c
Wasm backend: make JUnit tests work
2018-05-08 23:31:51 +03:00
Alexey Andreev
f532801f38
C backend: implement support for ResourceArray and ResourceMap
2018-05-07 19:30:00 +03:00
Alexey Andreev
401a9ed212
C backend: improve representation of string literals, fix them for various corner cases
2018-05-06 00:48:27 +03:00
Alexey Andreev
37efbd742b
C backend: more bugfixes
...
* Fix cloning Object[] in 64-bit systems
* Fix generation of x instanceof Interface
* Fix a % b when a and b are float or double
* Fix generation of unreachable virtual calls
2018-05-05 23:35:17 +03:00
Michele Comignano
c11b868c0b
Add IdentityHashMap, improve distribution of identityHashCode
...
Add IdentityHashMap, improve distribution of identityHashCode
2018-05-05 22:05:22 +03:00
Alexey Andreev
ff07b28bee
C backend: fix bugs in exception handling transformer
2018-05-05 22:03:20 +03:00
Alexey Andreev
52ddd96c7d
Fix duplicate <clinit> execution in some cases when accessing class through reflection
2018-05-05 18:38:18 +03:00
Alexey Andreev
d2aa37d6a4
C backend: fix more bugs, pass more tests
2018-05-05 15:17:35 +03:00
Alexey Andreev
899725b6bd
C backend: fix bug in type inference, fix code generation for small int and long values
2018-05-04 19:05:11 +03:00
Alexey Andreev
4530167061
C backend: implement support for simple cases of resources
2018-05-01 00:54:11 +03:00
Alexey Andreev
ee2f389027
C backend: make more tests pass
2018-04-28 18:49:26 +03:00
Alexey Andreev
18eb3ee058
C backend: make more tests pass
2018-04-27 00:47:38 +03:00
Alexey Andreev
fa07100024
C backend: major improvements to interop
...
1. Function.get that allows to convert static Java method
to a C function pointer
2. Address.ofData that gets address (void*) of Java array data
3. `@Include` annotation to add `#include` to generated C
when using some method or class
2018-04-24 00:36:25 +03:00
Alexey Andreev
38267980fb
Run C test compilation in multiple threads
2018-04-21 12:24:31 +03:00
Alexey Andreev
8f0320e217
Fix bugs in C backend to make more tests pass
2018-04-21 00:55:43 +03:00
Alexey Andreev
4990dbe8e4
Add support for C backend in TeaVMTestRunner
2018-04-20 22:58:09 +03:00
Alexey Andreev
e77997c93f
Implement null check in C backend
...
Although initial purpose of this comment was null check,
it took much time to complete it and it caused many unrelated changes.
Besides just implementing null check in quite naive fashion
(I could not use the trick with memory protection, since I have to
maintain shadow stack, and support WebAssembly), I had to optimize
things. I relied on my existing nullness analysis to eliminate
as much null checks as possible. However, the whole nullness analysis
was wrong. After some thoughts I came up with solution very
close to range analysis, which required me to introduce extension
to IR sometimes called e-SSA form with so called sigma nodes.
Also, I found some bugs in few different places (by the time write this
message I could only remember escape analysis/scalar replacement and
after-inlining devirtualization) and fixed them.
2018-04-17 00:05:46 +03:00
Alexey Andreev konsoletyper@gmail.com
d9c5b3fd04
C backend: compatibility with msvc
2018-03-29 00:44:31 +03:00
Alexey Andreev konsoletyper@gmail.com
fe47fe19ce
Fix build under JDK9+
2018-03-28 22:54:55 +03:00
Alexey Andreev
0d1cb85067
C backend: generate code to buffer, simplify generator
2018-03-27 23:16:38 +03:00
Alexey Andreev
dc227e1e42
C backend: add support for Array.get
2018-03-21 22:44:22 +03:00
Alexey Andreev
05d0220dcd
C backend: initial commit
2018-03-20 23:18:52 +03:00
Alexey Andreev
540ad7f694
Uprage HPPC to 0.7.3
2018-03-20 19:10:36 +03:00
Alexey Andreev
de88541b64
Another fix for evaluation order in AST optimizer
...
See #330
2018-02-17 10:29:33 +03:00
Alexey Andreev
788e506175
Fix evaluation order when eliminating redundant variables from AST
...
See #330
2018-02-17 01:29:26 +03:00
Alexey Andreev
4f9110f7b1
Make graph.toString return dot representation of graph
2018-02-04 22:51:25 +03:00
Alexey Andreev
6d68010416
Improve speed of class inference during inlining
2018-02-04 22:29:51 +03:00
Alexander Gundermann
f548fc964c
WASM: fix opcodes
2018-01-28 19:21:45 +03:00
Alexey Andreev
ff7232ac3e
Improvements in reflection:
...
1. During dependency analysis, propagate class literals from
Class.forName return node
2. Use original class source to generate reflection metadata
3. Link classes when they appear in signature of reflectable methods
4. Turn Class.forName(string_literal) into class literal.
2018-01-27 00:21:50 +03:00
Alexey Andreev
f49ec16021
Replace non-strict equality comparisons with strict in runtime.js
2018-01-25 22:08:19 +03:00
Alexey Andreev
caaf2114bf
Fix error when superclass has final String fields
2018-01-25 21:53:28 +03:00
Alexey Andreev
85c686c72a
Remove outdated methodAliases build parameter
...
Replace classAliases with classesToPreserve
2018-01-09 23:38:30 +03:00
Alexey Andreev
10c706077a
When a value in debugger represents plain JavaScript object, show its native fields in watch window
2018-01-08 14:45:46 +03:00
Alexey Andreev
0c8013dfcf
When splitting async program, don't process same blocks twice
...
The old assumption was: if a block has instructions, it was already processed. However, that might be not true in some cases. This led to duplication of exception handlers in some blocks which in turn broken decompiler. From now on processed blocks are stored in a set.
2018-01-07 16:04:11 +03:00
Alexey Andreev
c15709994f
Fix bug in decompiling nested catch blocks with complex control flow
2017-12-03 18:39:57 +03:00