Alexey Andreev
e9d206eed0
wasm: fix NPE
2023-08-19 17:10:53 +02:00
Alexey Andreev
0e7d6b65b4
wasm: add stats generator
2023-08-19 16:59:49 +02:00
Alexey Andreev
a7f115a541
classlib: implement Integer.compareUnsigned in Wasm and C
2023-08-18 17:55:01 +02:00
Alexey Andreev
22864c88f2
js: support WeakReference
2023-08-10 20:47:01 +02:00
Alexey Andreev
b9f5e9be1c
JS: optimize case when JS method returns java.lang.Object and then treated as JS object
2023-08-04 20:40:57 +02:00
Alexey Andreev
334e2829b3
JS: supports module imports in JSBody
2023-08-03 15:42:15 +02:00
Alexey Andreev
a97e0ef45c
JS: generate code in UMD wrapper (to be compatible with node.js, webpack, etc).
2023-08-01 20:11:32 +02:00
Alexey Andreev
059281a25c
Fix issue in optimization
2023-07-31 19:29:41 +02:00
Alexey Andreev
ef2e887d06
Avoid duplicate application of class transformations
2023-07-31 13:21:33 +02:00
Alexey Andreev
948244cbf4
JS: marshall JS object to Java in a wrapper
2023-07-29 18:54:23 +02:00
Alexey Andreev
61eb666503
classlib: faster implementation of System.arraycopy
2023-07-19 21:11:27 +02:00
Alexey Andreev
b1ddf163d7
Don't crash when reporting some cases of missing standard APIs
2023-07-17 18:41:28 +02:00
Alexey Andreev
c39efdc6d7
classlib: fix issue with integer unsigned right shift
2023-05-16 09:56:24 +02:00
Alexey Andreev
b927b28e7d
js: fix extracting exception message from Java
2023-04-11 13:42:28 +02:00
Alexey Andreev
79df39fca0
minor: remove unused fields
2023-04-03 17:19:13 +02:00
Alexey Andreev
a70251fe83
classlib: add Integer/Long.compareUnsigned
2023-03-25 09:37:44 +01:00
Alexey Andreev
ca76ea45cf
Get rid of Gson library
2023-03-10 21:19:30 +01:00
Alexey Andreev
0f8d36a080
JS: display Java exception message in uncaught exceptions in console
2023-03-02 20:22:33 +01:00
Alexey Andreev
971fa9a1f3
Bump versions of dependencies
2023-02-24 19:55:35 +01:00
Alexey Andreev
4fdb05905d
js: increase default top level name limit, since browsers now fixed issues in their dev tools
2023-02-18 08:14:28 +01:00
Alexey Andreev
f2ae748705
wasm: display inherited fields in debugger
2023-02-17 21:04:51 +01:00
Alexey Andreev
df7b3957e9
Fix issue in graph splitter
...
Fix #657
2023-02-17 20:42:27 +01:00
Alexey Andreev
900f95c1ed
js: make names of variables in minified mode never interfering with JS keywords
2023-02-17 19:36:33 +01:00
Ivan Hetman
fdfd923ac6
Add info about Java 14 record to IR. Add support to Metaprogramming API
2023-02-11 23:05:07 +03:00
Alexey Andreev
8014c038c0
Migrate to gradle
2023-01-23 17:16:07 +01:00
Alexey Andreev
2a0f6f206e
New IDEA module kind based on Gradle
2022-12-20 20:48:16 +01:00
Alexey Andreev
013ba237b0
Wasm: fix issues when building with debugging information and optimizations enabled
2022-12-20 18:01:38 +01:00
Alexey Andreev
9a9e7561b7
Wasm: support displaying objects in debugger
2022-12-20 10:01:47 +01:00
Alexey Andreev
7b3905246b
Wasm: support class layout in debug information
2022-12-18 17:45:35 +01:00
Alexey Andreev
506a9bd8c5
Wasm: fix bugs in debugger
2022-12-15 17:27:14 +01:00
Alexey Andreev
6c91192794
Wasm: fix issues in debugger
2022-12-14 16:50:18 +01:00
Alexey Andreev
6808d9e517
Wasm: support local variables in debugger
2022-12-13 21:18:41 +01:00
Alexey Andreev
313e4ed87f
Wasm: fix issues with debugger
2022-12-13 18:51:19 +01:00
Alexey Andreev
a6add26aaa
Wasm: working on step-in and step-over in debugger
2022-12-09 19:13:20 +01:00
Alexey Andreev
87d63168d2
Wasm: working on control flow analyzer for debugger
2022-12-05 20:03:57 +01:00
Alexey Andreev
44204b952d
Wasm: working on binary parser
2022-12-04 20:43:32 +01:00
Alexey Andreev
53dbb72c53
Wasm: working on binary parser
2022-12-02 21:35:07 +01:00
Alexey Andreev
aaed8e312a
Wasm: working on parser
2022-12-02 18:07:56 +01:00
Alexey Andreev
b58dd1a37b
Wasm: refactor debug info parser and fix debugger errors
2022-12-02 17:15:38 +01:00
Alexey Andreev
548ded7c75
Wasm: fix debug info generation
2022-12-02 07:49:07 +01:00
Alexey Andreev
57e0227a02
Wasm: trying to improve debug information emitter
2022-12-01 17:33:35 +01:00
Alexey Andreev
930a57fdd6
Wasm: fix compiler crash when compiling without debug info
2022-11-30 14:01:46 +01:00
Alexey Andreev
4453bba33b
Wasm: fix issues in debugger
2022-11-30 13:38:34 +01:00
Alexey Andreev
a2715f2c79
Wasm: working on Chrome RDP debugger
2022-11-29 21:30:41 +01:00
Alexey Andreev
9d3927e196
Wasm: working on Chrome RDP debugger
2022-11-29 18:14:13 +01:00
Alexey Andreev
d1feec7ae6
Wasm: add parser for own debug information
2022-11-28 17:30:34 +01:00
Alexey Andreev
56929b2085
Wasm: generate debugging information for own debugger
2022-11-25 17:50:39 +01:00
Alexey Andreev
7e95e935d1
Wasm: write more info about classes in DWARF
2022-11-23 22:04:26 +01:00
Alexey Andreev
646c8ec488
Wasm: fix issue with forward references in DWARF, generate class references as pointer types
2022-11-23 11:20:07 +01:00
Alexey Andreev
f938db798b
Wasm: add information about parameters and local variables to DWARF
2022-11-22 17:53:12 +01:00
Alexey Andreev
13cc56feb5
Wasm: split declarations and specifications of methods in DWARF
2022-11-21 16:00:27 +01:00
Alexey Andreev
8fac3237ba
Wasm: generate nested DIEs for namespaces/classes/methods
2022-11-20 16:12:00 +01:00
Alexey Andreev
6222241651
Wasm: update loader to use instantiateStreaming method
2022-11-20 14:05:35 +01:00
Alexey Andreev
1399045ff6
Wasm: fix issues in DWARF generator
2022-11-20 08:42:32 +01:00
Alexey Andreev
7f38697d50
Wasm: don't emit DW_LNE_end_sequence when there were no previous command emitted
2022-11-19 20:15:54 +01:00
Alexey Andreev
f7768efd51
Wasm: fix bugs in DWARF generator, emit DW_LNE_end_sequence after each function
2022-11-19 15:14:21 +01:00
Alexey Andreev
06bcaec1e5
Wasm: emit simple DW_TAG_subprogram DIEs (however, no success with debuggers).
2022-11-19 13:00:52 +01:00
Alexey Andreev
f06ba832d7
Wasm: generate DWARF line numbers
...
Despite generated DWARF sections pass different verifications, they don't work in chrome or wasmtime.
2022-11-19 11:52:43 +01:00
Alexey Andreev
c5011ebf69
Wasm: initial skeleton implementation of DWARF generator
2022-11-18 22:07:23 +01:00
Alexey Andreev
a543b91b84
Wasm: fix error when parsing command line args
2022-11-17 16:35:28 +01:00
Alexey Andreev
238873cbe7
Apply Java 11 syntax
2022-11-17 14:36:55 +01:00
Alexey Andreev
06748fa12b
Fix class initializer optimization.
...
Assume that class initializer is dynamic if it initializes another class with dynamic initializer
2022-11-17 14:35:37 +01:00
Alexey Andreev
df98b411d0
Wasm: fix issue with attempt to shrink heap after GC
2022-11-17 12:02:46 +01:00
Alexey Andreev
64ae44ee01
JS: store global object in a variable to avoid name clashes between generated declarations (in minified mode) and global declarations
2022-11-17 12:02:46 +01:00
Alexey Andreev
70e37dfed9
Wasi: fix bugs in IO implementation
2022-11-12 21:52:29 +01:00
Alexey Andreev
d9fb2bc159
Fix bugs in Wasi support. Fix GC issue in Wasm
2022-11-11 21:01:22 +01:00
Alexey Andreev
1b6acc9eb1
Update Java version to 11
2022-11-11 14:37:12 +01:00
Alexey Andreev
4a025f2605
Wasm: trying to revive GC debugger in wasm2c generator and implement emulation for WASI
2022-11-11 14:04:56 +01:00
Alexey Andreev
1fb70b0903
Fix private method call resolution in Java 11
2022-11-11 10:56:20 +01:00
Alexey Andreev
5fb83ca2ac
Remove unnecessary Wasm runtime imports, implement isFinite method
2022-11-11 09:38:21 +01:00
Alexey Andreev
485f8ac902
Wasi: fix file system issues, add support for Math.pow
2022-11-10 17:08:58 +01:00
Alexey Andreev
224810d0ab
Wasm: support file IO and random generator in WASI
2022-11-08 19:44:56 +01:00
Alexey Andreev
e428e2ac7a
Wasm: implement file IO in WASI
2022-11-08 17:24:58 +01:00
Alexey Andreev
3eb4b742ea
Move FS support to teavm-core module
2022-11-07 09:53:46 +01:00
Alexey Andreev
8f4e4e811f
Wasm: don't emit wasm-runtime.js file in WASI mode
2022-11-06 21:41:09 +01:00
Alexey Andreev
34eb06f5f0
Wasm: support command line args in WASI
2022-11-06 21:21:49 +01:00
Alexey Andreev
1ca2c75e1c
Wasm: initial WASI support
2022-11-06 11:53:52 +01:00
Alexey Andreev
d5cdd740f5
Fix incorrect behaviour of Class.getInterfaces
...
fix #635
2022-11-04 16:15:30 +01:00
Alexey Andreev
752ec040b0
Wasm: fix resource files getting into garbage collection metadata
2022-11-04 14:48:53 +01:00
Alexey Andreev
6c6d440ebb
С/wasm: don't include references metadata resource into GC stack roots and into class layout for GC.
2022-11-01 09:38:10 +01:00
Alexey Andreev
d097350787
Bump ASM version, use common ASM API version everywhere, bump ASM API version to 9
2022-10-05 11:09:53 +02:00
Alexey Andreev
2b671b8088
Fix issue with precedence of % operator
2022-08-25 12:48:59 +02:00
Alexey Andreev
ddddfcf217
Add option to disable assertions
2022-07-15 19:51:47 +03:00
Alexey Andreev
f0d805fda8
Support Java 17 records
2022-07-10 20:40:24 +03:00
Alexey Andreev
29fd95be95
Fix bugs related to MULTINEWARRAY in various backends
2022-07-10 18:16:16 +03:00
Alexey Andreev
b03518c493
Remove unnecessary hppc artifact versions from pom.xml
2022-06-01 17:25:33 +03:00
Alexey Andreev
98490e92f6
JS: fix strict mode null pointer check with inlining
2022-05-19 12:24:02 +03:00
Alexey Andreev
be259f1667
Fix false negatives when checking missing methods
2022-05-19 10:25:40 +03:00
Alexey Andreev
31f91bc63c
C: fix overlapping file names
2022-05-16 11:59:25 +03:00
Alexey Andreev
5e37e2a45b
Fix reporting missing static field if containing class is never referenced directly
2022-03-25 10:27:15 +03:00
Alexey Andreev
ce5e3bfeb7
C/Wasm: fix issue in GC
2021-12-16 18:39:26 +03:00
Alexey Andreev
15466bad93
C: fix heap dump generator
2021-12-16 14:54:23 +03:00
Alexey Andreev
1fa48560c6
C: add option to generate shorter output file names to workaround msvc bug
2021-12-10 18:51:12 +03:00
Alexey Andreev
08aa642fe5
C: prevent from casting to native function type
2021-08-31 15:11:17 +03:00
Alexey Andreev
c2f90d3cfc
fix ClassInference for arrays
2021-08-30 17:53:14 +03:00
Alexey Andreev
c65a9e1c97
Fix bug in irreducible graph splitting algorithm
2021-07-15 19:17:11 +03:00
Alexey Andreev
220537d984
C: fix behaviour of nested try/catch statements
2021-04-15 20:55:52 +03:00
Alexey Andreev
73bd139b7e
C: implement ServiceLoader
2021-04-14 23:02:09 +03:00
Alexey Andreev
4a62b58f82
Bug fixes in optimizer
2021-04-02 19:54:38 +03:00
Alexey Andreev
7058a195b7
JS: fix class of object created by multianewarray instruction
2021-04-01 12:05:18 +03:00
Alexey Andreev
c89bc11d02
Fix dominator tree builder, make it possible to choose starting node
2021-04-01 09:29:18 +03:00
Alexey Andreev
d710870c65
Fix possible NPE
2021-03-31 12:53:12 +03:00
Alexey Andreev
9972fe0c29
Rewrite node splitting algorithm
2021-03-30 12:07:14 +03:00
Alexey Andreev
b34e25414e
C: fix support for resources
2021-03-24 18:52:54 +03:00
Alexey Andreev
00fba54d7b
C: fix exception handling semantics with longjmp
2021-03-24 17:30:49 +03:00
Alexey Andreev
bb4315e486
C: fix missing files when casting to arrays
2021-03-24 16:09:01 +03:00
Alexey Andreev
6de830d5bd
wasm: fix initialization order of system classes
2021-03-22 23:22:34 +03:00
Alexey Andreev
f2bac088f1
Fix more complex cases of irreducible CFGs during coroutine transformation
2021-03-22 22:09:41 +03:00
Alexey Andreev
9df897d298
Fix coroutine transformation. Make emulated threads work in Wasm
2021-03-22 21:28:50 +03:00
Alexey Andreev
eb495182d2
JS: fix runtime for Safari
2021-03-22 15:13:40 +03:00
Alexey Andreev
38cbd7e80b
JS: fix async methods
2021-03-22 14:17:50 +03:00
Alexey Andreev
d6780ea637
Fix bug in global value numbering optimization
2021-03-22 14:17:50 +03:00
Alexey Andreev
bd53c1a5a2
wasm: trying to implement coroutines
2021-03-21 22:13:09 +03:00
Alexey Andreev
c4c1408160
wasm: fix running tests, add in-browser test runners
2021-03-20 19:52:45 +03:00
Alexey Andreev
b2b7a603b4
JS: fix array optimization
2021-03-19 14:16:29 +03:00
Alexey Andreev
75d06bebbf
JS: fix bug in compilation of monitorenter instruction
2021-03-18 14:20:29 +03:00
JohannesS
f97484365c
JS: fix overrides with default methods
2021-03-18 12:26:33 +03:00
Alexey Andreev
81bfe3f6e2
Improve pom.xml configuration
2021-03-18 11:16:41 +03:00
Alexey Andreev
2c7b5be62e
JS: fix long emulation in JS engines that don't support BigInt
2021-03-18 10:14:18 +03:00
Alexey Andreev
3779520389
C: fix after introducing CCE support
2021-03-18 01:03:01 +03:00
Alexey Andreev
67c639b875
JS: fix stack trace decoder with new CCE support
2021-03-17 21:49:06 +03:00
Alexey Andreev
4c0c7872a1
JS: add support for CCE in strict mode
2021-03-17 21:11:18 +03:00
Alexey Andreev
02e8955abc
JS: fix overflow behaviour of unary minus
2021-03-17 10:16:07 +03:00
Alexey Andreev
71f87d79a5
JUnit: add support for TestNG annotations
2021-03-16 21:47:05 +03:00
Alexey Andreev
40ecb0938d
Fix issue with BigInt64Array in Safari
2021-03-12 19:13:29 +03:00
Alexey Andreev
35f025d7da
JS: fix bug in fallback long implementation
2021-03-10 16:22:19 +03:00
Alexey Andreev
ca23da939a
JS: represent long as BigInt if available
2021-03-08 22:59:45 +03:00
Alexey Andreev
e4c808c324
Add switch to log devirtualization process
2021-02-26 12:26:13 +03:00
Alexey Andreev
0eca9d95e1
Fix missing virtual call detector
2021-02-26 11:52:10 +03:00
Alexey Andreev
d1fa57210e
Copy parameter annotations when renaming a class
2021-02-01 14:41:18 +03:00
Alexey Andreev
969ad17b6a
C: workaround for regression in MSVC compiler
2020-11-27 18:54:24 +03:00
Octavia Togami
a8641de39b
Correct problem severity for warning
2020-11-26 14:59:13 +03:00
Alexey Andreev
306c78459c
JS: use symbol instead of string property to represent Java exception wrapper
2020-09-09 19:28:32 +03:00
Alexey Andreev
17098495f2
JS: fix compilation of class files that contain methods and field names containing non-identifier characters
2020-07-06 12:11:17 +03:00
Alexey Andreev
9cf21825fc
Fix wrong evaluation when optimizer sees array initialization that looks like array initializer expression, but has access to array variable on its elements, i.e. on a case like this:
...
Object[] array = new Object[1];
array[0] = array;
That can't be optimized to
Object[] array = new Object[] { array };
2020-06-16 19:24:45 +03:00
Alexey Andreev
5ee332c771
Fix crash when lambda is not used. Fix #500
2020-06-01 12:19:37 +03:00
Alexey Andreev
6f7c2dff2b
Fix copying source files in simple optimization mode. Fix #501
2020-06-01 12:07:42 +03:00
Alexey Andreev
ecc4be2d25
Fix class initialization optimization
2020-05-19 13:27:26 +03:00
Alexey Andreev
eebe16157b
C: further workaround for msvc bug
2020-05-19 09:56:47 +03:00
Alexey Andreev
8f68c64193
Fix bug in repeated field read elimination.
...
There's a case that was missing in this optimization. We install invalidation
points on a block's dominance frontiers when the block contains som
invalidation instructions. However, if a block is an entry to exception
handler, state is always invalidated. This should be done
since exception handler may recover and proceed with some code that
follows try/catch block. Without this change code after try/catch inherits
state of `try` block, which is invalid, since `catch` is another
source from where we can get there. We can't rely on regular instruction
analysis in `catch` blocks, since we get into `catch` from an unpredictable
point.
2020-05-18 17:24:21 +03:00
Alexey Andreev
333ee95604
C: in addition to deece78dec
...
Fix generation of heap dump metadata
2020-05-15 18:05:50 +03:00
Alexey Andreev
deece78dec
C: workaround msvc C1054 error while compiling virtual table initializers of classes with deep inheritance hierarchy
2020-05-15 17:55:26 +03:00
Alexey Andreev
862e9b846f
Exclude all classes from underlying JDK
2020-05-14 16:59:21 +03:00
Alexey Andreev
6a4da94f2e
Get rid of irreducible CFGs in input bytecode
2020-05-14 16:18:33 +03:00
Alexey Andreev
4284bb2a6c
C: fix naming when bytecode contains method names with special characters
2020-05-14 14:31:48 +03:00
Alexey Andreev
7313b2bb62
Don't fail on environments that miss console object in global scope
2020-04-30 16:06:54 +03:00
Alexey Andreev
1232f20ae4
Add protection against exception fall though one Java machine running another Java machine.
...
When one TeaVM program calls `eval` and code passed to eval is itself generated
with TeaVM, the inner code can throw uncaught Java exception. The outer code could
try to catch this exception as a native JavaScript exception, but this is not possible,
since the exception is marked as Java exception, and inner scripts's Java class
does not inherit java.lang.Throwable of outer script. The solution for each script
to generate own tag (Symbol) and only treat JS exception as Java exception when
this exception has this tag.
2020-04-30 16:05:24 +03:00
Alexey Andreev
a9e7e51c51
Properly support non-ASCII characters in System.out and System.err
2020-04-30 14:49:33 +03:00
Adam J Ryan
e0fc5d834b
Add ability to fine tune transpiler class substitutions.
2020-04-01 19:32:34 +03:00
Alexey Andreev
a152a28a2d
C: fix bug in array initializers
2020-03-04 11:37:04 +03:00