Commit Graph

660 Commits

Author SHA1 Message Date
Alexey Andreev
7a2cd6ae4f Fix more bugs in devirtualization 2020-01-24 16:23:28 +03:00
Alexey Andreev
2d2ef642a3 Fix virtual method resolution in code server mode 2020-01-23 19:03:47 +03:00
Alexey Andreev
c53a563e96 Fix bug in devirtualization while inlining 2020-01-23 15:53:11 +03:00
Alexey Andreev
4776bebe8e C/Wasm: fix incorrect removal of GC root in optimizer 2020-01-22 17:16:44 +03:00
Alexey Andreev
a35a10bbc6 Reduce GC region size 2020-01-22 13:15:57 +03:00
Alexey Andreev
1ac0f7156c C/Wasm: fix OOME from compiled application 2020-01-22 13:15:57 +03:00
adamjryan
34aed76714 Add write replace method to lambdas that implement java.io.Serializable (#453)
Add write replace method to lambdas that implement java.io.Serializable

* Peripheral java library classes added as part of the toString method
of SerializedLambda to align functionality with the standard library.
* Test added that checks the SerializedLambda can be returned and that
it is populated with the correct values including it's toString method.
2020-01-15 11:11:48 +03:00
Alexey Andreev
9d0a53175a Do not insert GC write barriers when value assigned to field is known to be null or constant literal 2019-12-05 15:36:32 +03:00
Alexey Andreev
72fc62f082 Fix bug that causes heap to grow without need 2019-12-05 15:07:18 +03:00
Alexey Andreev
a7df41d41d Fix debugging when script is included with additional query string 2019-12-04 15:28:40 +03:00
Alexey Andreev
e147a998e5 Remove performance optimization that causes bug when modifying class hierarchy within class transformers 2019-12-04 12:41:41 +03:00
Alexey Andreev
16f4d2571b Support generations in GC 2019-12-03 12:10:55 +03:00
Alexey Andreev
d71aec7c40 Fix bug when boxing primitive value inside lambda to supertype (e.g. java.lang.Object) of corresponding wrapper type 2019-11-18 12:34:55 +03:00
Alexey Andreev
631111bdb3 Fix potential NPEs in compiler and native runtime 2019-11-18 11:24:47 +03:00
Alexey Andreev
099b9c5827 C: add stack trace deobfuscation tool 2019-11-06 14:02:56 +03:00
Alexey Andreev
e164015bfa C: another fix for GC when passing strings from native to Java 2019-11-06 11:19:02 +03:00
Alexey Andreev
3335b86619 C: fix exception when marshalling string from native code to Java and GC is triggered 2019-11-05 18:14:09 +03:00
Alexey Andreev
c05f40cc6a C: improve performance of heap dump to hprof converter 2019-11-05 14:01:56 +03:00
Alexey Andreev
9bdec1fdb2 C: fix the way how UWP env is detected in preprocessor 2019-10-31 14:37:49 +03:00
Alexey Andreev
fb78377db8 Fix various issues reported by PVS Studio and LGTM 2019-10-31 14:36:37 +03:00
Alexey Andreev
beef9e09ca C: fix bug in exception handling 2019-10-31 14:18:29 +03:00
Alexey Andreev
81cc3c156e Add optimization that eliminates repeated access to fields 2019-10-30 16:09:17 +03:00
Alexey Andreev
511160935f C: add missing include 2019-10-30 16:08:11 +03:00
Alexey Andreev
2bfc5b5305 JS: fix error in strict mode when NPE is never instantiated directly 2019-10-30 15:40:28 +03:00
Alexey Andreev
6bfbd38e22 Fix bug in decompiler that causes expression statement containing || or && with side effects to be removed 2019-10-30 13:38:47 +03:00
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