Commit Graph

1001 Commits

Author SHA1 Message Date
Alexey Andreev
1b412073b9 wasm: support exception handling via native exception handling spec 2024-05-09 20:38:17 +02:00
Alexey Andreev
e48dfb27b0 Improve inlining performance by caching method complexity 2024-04-29 16:32:24 +02:00
Alexey Andreev
188d189407 js: improve performance of instanceof against interfaces 2024-04-26 10:37:12 +02:00
Alexey Andreev
a1d711d069 jso: when casting to JS objects, don't fail cast when cast object is null 2024-04-16 20:03:19 +02:00
Alexey Andreev
931f0f1f4a jso: support varargs in exported classes and modules 2024-04-15 20:53:24 +02:00
Alexey Andreev
6a09f181c7 js: add JSTopLevel annotation that allows to import top-level declarations 2024-04-11 20:29:57 +02:00
Alexey Andreev
a6fb67817c jso: improve support of instanceof and cast against JS wrapper types
Fix #808
2024-04-04 21:18:54 +02:00
Alexey Andreev
e069bc3a44 classlib: implement WeakHashMap
Fix #799
2024-04-03 19:11:48 +02:00
Alexey Andreev
bbd02b0067 gradle: implement dev server task 2024-03-20 20:41:10 +01:00
Alexey Andreev
7341fb38a6 Reduce memory consumption 2024-03-18 18:05:06 +01:00
Alexey Andreev
622006de0e Reduce memory consumption 2024-03-18 17:02:42 +01:00
Alexey Andreev
6e416c11d7 Reduce memory consumption in dependency analyzer 2024-03-18 16:21:12 +01:00
Alexey Andreev
055d5df367 js: fix emitting line number to debug info 2024-03-13 12:36:33 +01:00
Alexey Andreev
582fcf904c jso: implement vararg support for method calls 2024-03-12 18:56:19 +01:00
Alexey Andreev
ccfe19994b js: refactor and simplify AstWriter, properly fix case with variable in catch block 2024-03-06 20:24:35 +01:00
Alexey Andreev
393cd7f807 c: don't generate while(condition) loops due to UB in C spec
See https://www.iso-9899.info/n1570.html#6.8.5p6

Fix #885
2024-02-19 20:35:21 +01:00
Alexey Andreev
c1b3deedff Support @Inherited annotation on annotations
Fix #883
2024-02-19 20:14:00 +01:00
Bernd Busse
d067b986df JS: fix catch variable not getting minified 2024-02-17 21:05:06 +03:00
Alexey Andreev
ab253fd34a Fix class initializer compilation for WASI target 2024-02-17 19:04:37 +01:00
Alexey Andreev
8db406c603 jso: implement exporting Java methods to JS
Fix #785
2024-02-15 21:00:10 +01:00
Alexey Andreev
6ac598b927 js: add limit for top-level declarations
Rationale: turns out that V8 utilizes stack even to represent module-level functions.
This can cause SOE when there's too many classes and methods in source JVM
2024-02-01 09:41:50 +01:00
Alexey Andreev
ca273390ef Remove outdated file 2024-01-30 15:46:20 +01:00
Alexey Andreev
4049bc529e js: introduce setting to choose module type 2023-12-23 16:32:55 +01:00
Alexey Andreev
1c292f3fbe Fix calculating comparison in constant propagation 2023-11-25 17:23:50 +01:00
Alexey Andreev
6695103f49 Increase upper complexity threshold for inlining 2023-11-25 15:58:00 +01:00
Alexey Andreev
ac2c084290 js: add ability so refer to local files in source maps. Add copying of source files to Gradle plugin. 2023-11-24 21:28:37 +01:00
Alexey Andreev
6543e68f8a JS: fix naming of variables in no-obfuscation mode 2023-11-24 17:38:50 +01:00
Alexey Andreev
86efdb0809 JS: remove legacy way to generate names, fix issue with duplication of some top-level names in no-optimization mode
Fix #860
2023-11-23 17:22:03 +01:00
Alexey Andreev
57c22ab2c8 JS: fix some runtime function names not being mangled 2023-11-22 18:49:37 +01:00
Alexey Andreev
3282ae3b59 Refactor mechanism that resolves methods and fields parsed from bytecode and reports errors about missing items 2023-11-20 19:50:20 +01:00
Alexey Andreev
89661e52fb JS: fix output to console in obfuscated mode 2023-11-20 18:57:51 +01:00
Alexey Andreev
e877cc86e4 JS: remove unused runtime function 2023-11-13 10:46:06 +01:00
Alexey Andreev
1955973c3b JS: fix removal of unused functions in handwritten JS 2023-11-13 10:37:30 +01:00
Alexey Andreev
083ecbdad2 wasm/c: add support for class flags 2023-11-08 21:02:31 +01:00
Alexey Andreev
726702dd7f wasm: fix programmatic initialization of a class that is statically initialized by optimizer 2023-11-08 19:59:24 +01:00
Alexey Andreev
f6e38e94f7 c: fix typo in macro name 2023-11-08 09:52:27 +01:00
Alexey Andreev
8f8b33c0b1 js: split runtime into smaller parts 2023-11-07 20:26:10 +01:00
Alexey Andreev
9c6f23d280 classlib: optimize console output in JS backend 2023-11-07 20:00:33 +01:00
Alexey Andreev
0ee994e913 Improve class initializer elimination 2023-11-07 18:46:01 +01:00
Alexey Andreev
eca3dc61f5 junit: fix exception reporting 2023-11-07 18:01:33 +01:00
Alexey Andreev
21137c57a3 JS: merge let statements to get better minification; rewrite some Array methods to generate less dependencies on runtime 2023-11-06 19:18:18 +01:00
Alexey Andreev
717bbf4a57 JS: strip unused functions from hand-written runtime 2023-11-05 22:41:57 +01:00
Alexey Andreev
485d23d675 JS: fix native toString in Java String class
Fix #847
2023-11-05 10:20:49 +01:00
Alexey Andreev
8b6c6a5ca9 Fix checkstyle error 2023-11-05 10:05:45 +01:00
Alexey Andreev
5ec4450bf8 JS: render all declarations into one remembered fragment, then output this fragment to real output 2023-11-05 08:55:24 +01:00
Alexey Andreev
ceffde38f3 JS: use ES6 arrow functions and let where possible 2023-11-02 21:10:35 +01:00
Alexey Andreev
6738d6f1f8 JS: add remembering source writer, refactor PreparedMethod and Renderer to use it, get rid of $rt_globals 2023-11-02 19:03:10 +01:00
Alexey Andreev
8024d84ed5 JS: split SourceWriter into interface and implementation part 2023-10-31 20:58:56 +01:00
Alexey Andreev
23ad999bbd JS: get rid of IOException in SourceWriter and related classes 2023-10-31 20:09:55 +01:00
Alexey Andreev
32ee8943c1 JS: rewrite more natives with templates, get rid of runtime aliases in minification mode 2023-10-31 19:29:32 +01:00
Alexey Andreev
a1cc817504 JS: rewrite more native generators with templates, fix issues in template engine 2023-10-29 20:17:18 +01:00
Alexey Andreev
eb0f4fb090 Improve JS templating so that it could be used in native generators 2023-10-29 17:16:55 +01:00
Alexey Andreev
5d5fb47ca8 JS: add conditional intrinsic to JS template engine, use it to get rid of remaining generated methods in runtime 2023-10-26 21:17:24 +02:00
Alexey Andreev
16cd0aaab2 JS: introduce JS template engine to write runtime, rewrite several functions using this engine 2023-10-24 21:20:27 +02:00
Alexey Andreev
7acc81ce4d JS: remove lazy creation of primitive classes 2023-10-21 20:07:49 +02:00
Alexey Andreev
60d0b07f83 JS: refactor array implementation in native JS 2023-10-21 19:42:55 +02:00
Alexey Andreev
bb0d4a4fc6 JS: remove old polyfill 2023-10-21 19:30:16 +02:00
Alexey Andreev
02b3c92912 JS: use native string to represent internals of java.lang.String 2023-10-21 19:30:16 +02:00
Alexey Andreev
0e2052d91c C: fix compiler warning 2023-10-21 19:28:42 +02:00
Alexey Andreev
8b1732d442 JS: fix issue in minified mode 2023-10-17 19:13:14 +02:00
Alexey Andreev
a78eec93d6 metaprogramming: use unprocessed class source to get program templates
This should prevent class transformations from applying twice, which can cause some errors.
2023-10-17 07:55:01 +02:00
Alexey Andreev
cd9db17d73 JS: improve performance float<->int reinterpretation conversion, improve performance of Double.equals. 2023-10-16 17:27:12 +02:00
Alexey Andreev
5bc398415d classlib: implement Atomic*FieldUpdater classes
Fix #750
2023-10-15 19:51:44 +02:00
Alexey Andreev
70540b2df0 JS: fix UMD wrapper for case when 'exports' exists, but is null 2023-10-11 14:01:24 +02:00
Alexey Andreev
d33c491a33 Gradle: report build progress from build tasks 2023-10-10 19:01:24 +02:00
Alexey Andreev
3d65d38375 Massive refactoring around Wasm support
1. Get rid of old exception handling IR transformer in favor of generation of EH code inside BE
2. Get rid of no-setjmp/longjmp support in C BE
3. Fix various bugs in WebAssembly BE
4. Suppress remaining failing tests for Wasm
5. Enable running Wasm tests by default
2023-10-08 10:36:03 +02:00
Alexey Andreev
2c00df288f wasm: fix ServiceLoader 2023-10-02 14:05:25 +02:00
Alexey Andreev
7806a699c5 wasm: fixing debug C generator 2023-09-30 20:19:22 +02:00
Alexey Andreev
47973face1 Simplify test runner, remove parallel run, remove HtmlUnit runner, fix Wasm tests 2023-09-29 21:11:23 +02:00
Alexey Andreev
d4113a6744 classlib: improve Math min/max implementations in C and Wasm
Follow-up to ihromant's "fix Math min/max functions in JS"
2023-09-28 17:02:18 +02:00
Alexey Andreev
ab507bb22b wasm: fix bugs in coroutine support 2023-09-27 20:28:09 +02:00
Alexey Andreev
219de85e24 Improve performance of PhiUpdater 2023-09-27 19:36:02 +02:00
Alexey Andreev
7fd3166f9b wasm: support Date.toString 2023-09-27 14:30:20 +02:00
Alexey Andreev
348b71685d js: fix object id generator 2023-09-27 13:51:37 +02:00
Alexey Andreev
9c0e3b5e59 Remove unnecessary test file 2023-09-26 23:02:34 +02:00
Alexey Andreev
b7cf7b593c wasm: when building tests, resolve absolute paths to source files in DWARF 2023-09-26 23:02:16 +02:00
Alexey Andreev
e84a1a8531 wasm: fix raw conversion of float and double to int and long 2023-09-25 20:25:49 +02:00
Alexey Andreev
c2c1d78f13 wasm: fix issue in exception handling transformer 2023-09-25 20:25:49 +02:00
Alexey Andreev
fa2e003dd6 classlib: fix crash in WeakReference constructor
It occurred when ReferenceQueue.remove method was never used

Fix #756
2023-09-24 13:47:15 +02:00
Alexey Andreev
390861f835 wasm: fix producing programs with detached basic blocks 2023-09-22 21:26:34 +02:00
Alexey Andreev
98ec4597d6 Fix dominator tree algorithm 2023-09-22 21:26:34 +02:00
Alexey Andreev
1cd635afa5 Fix node splitting in irreducible CFG 2023-09-22 07:51:49 +02:00
Ivan Hetman
8277671376
classlib: make difference between raw and normal floating points to int conversion 2023-09-20 23:51:55 +03:00
Alexey Andreev
edf2d33f84 js: optimize long operations 2023-09-20 19:28:01 +02:00
Alexey Andreev
2e7e11292b C: implement Long.compareUnsigned 2023-09-19 11:34:50 +02:00
Alexey Andreev
e2ee9f1dbb classlib: improve precision of float/double parsing and formatting 2023-09-13 19:40:00 +02:00
Alexey Andreev
401fcabeae wasm: support ServiceLoader 2023-08-28 19:32:22 +02:00
Alexey Andreev
70d0658b47 wasm/c: fix bugs in coroutine transformation 2023-08-28 17:16:31 +02:00
Alexey Andreev
40c4f03e3b Coroutine transformation: minor improvements 2023-08-28 14:10:34 +02:00
Alexey Andreev
bd2d2cb49b wasm: fix exceptions in DWARF generator 2023-08-28 13:18:26 +02:00
Alexey Andreev
36060b37e3 wasm: another attempt to make class reference visible in chrome dev tools 2023-08-27 00:26:03 +02:00
Alexey Andreev
cacf09dca8 wasm: generate field description in DWARF 2023-08-26 20:48:29 +02:00
Alexey Andreev
fed6a2d0ef wasm: change language in DWARF from Java to C++
This is due to weird issue in lldb (from which Chrome dev tools
are derived), which does not parse DWARF functions if there's
no support for language "type system"
2023-08-25 20:43:34 +02:00
Alexey Andreev
e576a985dd wasm: don't generate separate declarations for methods in DWARF 2023-08-24 06:45:41 +02:00
Alexey Andreev
49485efdff wasm: fix line section in DWARF 2023-08-23 21:10:42 +02:00
Alexey Andreev
e3bbf12f49 wasm: use bulk memory operations when necessary 2023-08-22 17:13:06 +02:00
Alexey Andreev
e291128948 wasm: support Long.compareUnsigned 2023-08-22 17:11:26 +02:00
Alexey Andreev
f6131a8248 wasm: fix Array.get with enabled inlining 2023-08-22 17:11:04 +02:00
Alexey Andreev
9ecb3ad817 classlib: support ReferenceQueue.remove 2023-08-21 20:13:06 +02:00
Alexey Andreev
e9d206eed0 wasm: fix NPE 2023-08-19 17:10:53 +02:00