Commit Graph

452 Commits

Author SHA1 Message Date
Ivan Hetman
605628d6df
Fix issues in Random and ThreadLocalRandom (#536) 2020-10-26 13:09:50 +03:00
Ivan Hetman
baeb2a28a7
Add missing Optional methods and fix bug in equals (#533) 2020-10-26 13:04:26 +03:00
Ivan Hetman
71140135fa
Add missing toArray method from JDK 11 (#531) 2020-10-26 13:02:13 +03:00
Ivan Hetman
e95092fd43
Add static Map.Entry methods (#530) 2020-10-12 09:39:16 +03:00
Alexey Andreev
55ba9be16a Proper implementation for List.of, Set.of, Map.of/ofEntries 2020-10-07 16:32:34 +03:00
Alexey Andreev
74cc1d8d7d Fix Float.parse and Double.parse for some values 2020-10-07 16:32:34 +03:00
Ivan Hetman
1785d6ad9e
Collectors.toMap (#515)
Implement Collectors.toMap
2020-10-07 12:21:55 +03:00
Ivan Hetman
fcc1fb7690
Fix Stream.min and Stream.max (#520) 2020-09-08 19:02:45 +03:00
Alexey Andreev
d97dce4650 Fix concatenation with byte and short in JVM 9+
Fix #522
2020-09-08 15:03:19 +03:00
Ivan Hetman
3aaefdf23a
Hashmaps foreach (#513) 2020-07-06 11:29:56 +03:00
Ihromant
cf658cf57d Simplification 2020-06-13 13:56:14 +03:00
Ihromant
0c15600700 Added missing methods to Optional and ArrayList 2020-06-13 13:56:14 +03:00
hsestupin
0639acca21 add static hashCode(i) method like in java.lang.Integer 2020-06-02 18:53:14 +03:00
Jörg Hohwiller
e610c13e69 add int constructor for Java9+ compatibility 2020-06-01 11:51:58 +03:00
Vladislav Gordievskiy
6892c4f0ca
Fix of exporting a wasm function for scala objects (#498). Fix #497
Co-authored-by: VGORDIEVSKII <vgordievskii@luxoft.com>
2020-05-18 10:08:28 +03:00
Alexey Andreev
862e9b846f Exclude all classes from underlying JDK 2020-05-14 16:59:21 +03:00
Alexey Andreev
9f823ee450 Minor improvements to time zone support 2020-04-30 15:49:37 +03:00
Alexey Andreev
c7c47f63ee Implement Math.nextDown, reimplement ulp and nextUp using bit operations 2020-04-30 14:19:50 +03:00
Alexey Andreev
d50e048ea4 Add Character.toTitleCase. More efficient implementation for Character.digit 2020-04-14 18:31:19 +03:00
Alexey Andreev
0c8d93acbc Add DecimalFormat.setDecimalFormatSymbols 2020-04-14 16:40:45 +03:00
Alexey Andreev
1681aa5834 Implement some of the missing Timer methods 2020-04-14 16:10:17 +03:00
Alexey Andreev
ddf64870da Implement some of the missing methods related to streams 2020-04-14 15:06:58 +03:00
Alexey Andreev
2bc9329cf8 Implement some of the missing methods in ThreadLocalRandom 2020-04-14 14:03:15 +03:00
Alexey Andreev
061bb859d5 Implement ThreadLocalRandom, implement some of missing Random methods 2020-04-14 12:07:56 +03:00
Alexey Andreev
a074906ea7 Implement AtomicReference 2020-04-14 09:25:20 +03:00
Adam J Ryan
e0fc5d834b Add ability to fine tune transpiler class substitutions. 2020-04-01 19:32:34 +03:00
Jörg Hohwiller
b5237fb20e
Add Flow API for reactive programming (#486) 2020-03-13 11:28:36 +03:00
Jörg Hohwiller
c2d27fdb1a
Add support for String.isBlank() (#482) 2020-03-10 11:28:54 +03:00
Jörg Hohwiller
a45d1e0d07
Support for Thread.UncaughtExceptionHandler (#483) 2020-03-10 11:28:02 +03:00
Alexey Andreev
c1891a1908 Further work on decreasing generated code size 2020-03-03 12:17:39 +03:00
Alexey Andreev
ea1134d66b Trying to reduce number of classes for which name is provided in their metadata 2020-03-02 16:36:09 +03:00
Alexey Andreev
a30702aa70 Add missing import 2020-03-02 11:22:21 +03:00
Kris Scheibe
160fa2b1fa
Java 9 collection factories (#478)
Adds the collection factories List.of(...), Set.of(...), Map.of(...) and Map.ofEntries(...) which were introduced to the JDK in Java 9
2020-03-02 11:20:43 +03:00
Jörg Hohwiller
60d0ad902c added support for java.lang.reflect.Type 2020-03-02 11:15:24 +03:00
Dennis Bijlsma
cbbf7b5298 Add support for URL encode/decode methods added in Java 10. 2020-02-25 11:41:34 +03:00
Colorize
a97bda3c1a
Support Collection.removeIf (#474) 2020-02-17 11:23:24 +03:00
Alexey Andreev
fecdd6613a Use tab character to indent stack traces 2020-02-14 10:39:50 +03:00
Alexey Andreev
f1d83ad9d3 Optimize empty collections 2020-02-10 17:11:50 +03:00
Alexey Andreev
fa198244dd Fix bug in ArrayDeque implementation 2020-02-04 17:36:46 +03:00
Alexey Andreev
afa4e15846 Trying to fix #460
Actually, could not reproduce this, added some tests (they passed on initial version).
2020-01-27 16:03:51 +03:00
Colorize
c30e2d3c24 Collection spliterator that does not depend on how the list implementation implements spliterator() 2020-01-27 15:35:18 +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
Adam J Ryan
42cd4c7cb4 Missing (un)boxing for long values in reflection method value marshalling. 2020-01-12 11:01:22 +03:00
Alexey Andreev
e064457fe7 Fix issues in Spliterators code 2019-12-09 11:53:40 +03:00
Colorize
dd255f9da0 Extend the class library with the part of Spliterators that is used by Google Guava (#443)
Add class library support for the part of Spliterators that is used by Google Guava.
2019-12-09 11:29:16 +03:00
Alexey Andreev
477d8b2d69 Fix Stream.collect. Add some of the missing functional interfaces 2019-12-04 15:50:10 +03:00
Alexey Andreev
4b3a8e757b Reduce size of a Kotlin program that uses lightweight reflection 2019-12-03 20:57:31 +03:00
Alexey Andreev
fed75ef0cf Reduce size of minimal application 2019-12-03 20:56:53 +03:00
Alexey Andreev
16f4d2571b Support generations in GC 2019-12-03 12:10:55 +03:00
Alexey Andreev
780a3a8cca Fix parsing dates without delimiters using SimpleDateFormat 2019-11-18 13:58:32 +03:00
Alexey Andreev
6a196c2f32 Remove toString implementation from Kotlin lambda base class since it uses unsupported reflection API 2019-11-18 13:19:22 +03:00
Colorize
560627bfca Support for System.getenv().
This will always return that the environment variables does not exist, it is purely intended for compatibility with applications that check for optional environment variables (in those cases the TeaVM transpiler currently fails because the method does not exist).
2019-11-18 10:54:34 +03:00
Alexey Andreev
b090c2f47d Refactor stream implementation and tests, fix some bugs 2019-11-08 19:30:21 +03:00
Alexander Gusakov
74ee848e0c fix String#join, rm producing extra zero characters 2019-11-08 12:36:08 +03:00
Alexey Andreev
fb78377db8 Fix various issues reported by PVS Studio and LGTM 2019-10-31 14:36:37 +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
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
8a91605c56 Add support for Class.getCanonicalName/getEnclosingClass 2019-10-18 15:10:16 +03:00
Davin McCall
28212f70ff Correct the calculation in Math.hypot(). 2019-10-17 16:48:50 +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
Colorize
abf90e8b5f Fill in some gaps in the class library (#429)
* Fill in some gaps in the class library:
- the inner classes are marked as public in the JDK, but not in TeaVM's version
- added Color/Dimension/Point, these are defined in AWT, but also accessed from elsewhere in the JDK
- added UUID emulation
- added more logging classes so that applications don't immediately crash when trying to initialize logging
2019-10-10 11:42:20 +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
Matt McHenry
2d1bc6c956 mark certain features of Date 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
8749ecd0d1 C: fix System.nanoTime 2019-10-01 18:45:58 +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
a53f59e147 Fix build 2019-09-05 17:19:40 +03:00
Alexey Andreev
5b739238c2 More efficient filesystem implementation 2019-09-05 17:11:43 +03:00
Alexey Andreev
f47644d890 Move tool that generates JCL comparison into a separate project. Make this tool compatible with JRE9+ 2019-09-05 14:16:11 +03:00
Alexey Andreev
e33cc5a807 C: split runtime into smaller parts 2019-09-03 14:01:30 +03:00
Alexey Andreev
75e38c51de Add support for some methods in NIO buffers from Java 11 2019-08-21 13:56:39 +03:00
Alexey Andreev
1d19562c49 Fix Double.parseDouble and Float.parseFloat for some cases of illegal input 2019-08-12 16:38:52 +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
Alexey Andreev
ec9fe5471d Fix Long.bitCount. Fix #413 2019-08-07 18:48:06 +03:00
Alexey Andreev
2d3d92f9a8 Update versions of Unicode data, CLDR, tzdata, asm and Rhino 2019-07-27 22:10:56 +03:00
Alexey Andreev
b5f64fd11a Fix bug in ThreadLocal 2019-07-25 11:14:04 +03:00
Alexey Andreev
90e00f7eb4 C: add option to support exceptions via setjmp/longjmp 2019-07-22 16:53:47 +03:00
Alexey Andreev
9ad0ddd891 C: fix File.mkdirs() on Windows 2019-07-11 18:06:15 +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
a65f8fdcd9 C: reduce number of warnings, redirect console to debugger in Windows 2019-06-20 15:06:15 +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
d01ba897c0 Fix build 2019-06-14 15:38:44 +03:00
Alexey Andreev
6e71fa7e87 C: implement file IO in Windows 2019-06-14 15:32:20 +03:00
Alexey Andreev
fe6e796637 Fix bug in ArrayDeque 2019-06-11 16:21:39 +03:00
Alexey Andreev
c8676f7ffe JavaScript: fix filesystem issue 2019-05-31 17:36:32 +03:00
Alexey Andreev
91de1f6ca7 C: implement native file system 2019-05-31 15:05:23 +03:00
Alexey Andreev
6c9393548a JS: fix generation of Class.getDeclaringClass 2019-05-30 00:07:12 +03:00
Alexey Andreev
336590314c C: print stack trace in Logger class 2019-05-27 10:43:13 +03:00
Alexey Andreev
3364022313 classlib: add URLEncoder and URLDecoder 2019-05-24 17:34:33 +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
2eafb902f4 C: support weak references 2019-05-17 17:40:45 +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
3d96616761 JS: reduce precision of float constants 2019-05-13 17:39:18 +03:00
Alexey Andreev
da22256c1f C: compile into multiple .c and .h files 2019-05-08 17:36:46 +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
cbc8d3f638 C backend: bugfixes 2019-04-22 19:03:37 +03:00
Alexey Andreev
ec8bae1d40 C: fix bugs in RTTI. Support args parameter of main method 2019-04-04 18:34:30 +03:00
Dylan
d18d50a823 Add missing forEach to TIterable 2019-04-02 11:28:11 +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
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
Dylan
b8c73ae00c Fix IllegalStateException in TDeflater 2019-03-24 12:25:15 +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
731beb5cd5 Fix bugs in threading in C backend 2019-03-13 18:47:30 +03:00
Alexey Andreev
abdd9b3270 C backend: support coroutines 2019-03-10 14:04:04 +03:00
Alexey Andreev
2a1aca98da Use shared ReferenceCache between different stages of compilation 2019-03-05 19:32:50 +03:00
Alexey Andreev
2c40c7d56e Trying to decrease compiler memory consumption 2019-02-25 18:31:34 +03:00
Alexey Andreev
463f24506d Fix Throwable.toString 2019-02-13 19:30:14 +03:00
Alexey Andreev
1214534671 Reduce unnecessary usages of T-prefixed classes in classlib 2019-02-13 15:12:50 +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
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
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
f589b0035a Decrease memory consumption 2018-12-29 19:02:03 +03:00
Alexey Andreev
6900fd587c Fix Float/Double.parse for strings like '123.' 2018-12-24 18:16:05 +03:00
Alexey Andreev
4ffe74296d Limit max line size of generated JS code 2018-12-21 14:28:30 +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
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
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
cf9090e0fa Use JS typed arrays to reinterpret floats and ints.
Also, drop IE9 support
2018-11-23 17:14:06 +03:00
Alexey Andreev
b9ec21a667 Fix Long.reverse 2018-11-23 14:32:50 +03:00
Alexey Andreev
753755918d Update build config to avoid jar hell 2018-11-22 14:49:30 +03:00
Alexey Andreev
fc799afcda Add Maven option to run TeaVM in a separate process 2018-11-20 14:22:35 +03:00
Alexey Andreev
064888c9a1 Support Java 11 2018-11-12 18:59:28 +03:00
Alexey Andreev
63b2440e48 Remove $rt_global and indirect references to runtime function 2018-10-27 22:42:25 +03:00
Alexey Andreev
5035c58533 Fix Collections.reverse for non-random access lists. Make ArrayList random access. 2018-10-23 17:01:55 +03:00
Alexey Andreev
f206cbe2d1 Reorder modifiers to get less metadata size 2018-10-04 19:07:23 +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
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
614f95d376 Fix String.contains 2018-09-19 13:35:00 +03:00
Alexey Andreev
4b77a5d15f Fix String.contains. Fix crashing in rare cases or improper use of JSO 2018-09-19 12:47:32 +03:00
Alexey Andreev
b74c501fa6 Add Float/Double.isFinite 2018-09-04 17:27:54 +03:00
Alexey Andreev
d20accc20c Add support for Array.set 2018-08-29 13:20:16 +03:00
Alexey Andreev
174ac9e725 Fix translation of lambdas when class has subclass with lambdas 2018-08-27 19:44:44 +03:00
Alexey Andreev
4e20a1de18 Properly handle checkcast to array type in dependency analyzer 2018-07-03 19:11:51 +03:00