Alexey Andreev
b9f406dcaa
wasm gc: general implementation of System.arraycopy
2024-09-26 07:57:46 +02:00
Alexey Andreev
dd24425de0
wasm gc: support resources
2024-09-25 13:39:03 +02:00
Alexey Andreev
f8022f9465
wasm gc: fix issues in Java 17 switch expression and metaprogramming API
2024-09-23 20:23:24 +02:00
Alexey Andreev
4546029a5a
wasm gc: implement String.intern
2024-09-23 15:39:08 +02:00
Alexey Andreev
8ed8322b17
wasm gc: basic implementation of WeakReference
2024-09-20 15:03:43 +02:00
Alexey Andreev
6613d379ec
wasm gc: don't generate emulated casts in non-strict mode
2024-09-19 20:40:45 +02:00
Alexey Andreev
29339f3fbc
Fix old Wasm backend
2024-09-19 20:26:32 +02:00
Alexey Andreev
21cc3b048b
wasm gc: fix broken module when Class.getName is never called
2024-09-19 19:49:25 +02:00
Alexey Andreev
10805ed0dd
wasm gc: implement creation of multidimensional arrays
2024-09-18 20:34:29 +02:00
Alexey Andreev
3cf5fc10c8
wasm gc: emit string literals in WTF-8 rather than in UTF-8
2024-09-18 14:24:19 +02:00
Alexey Andreev
944fd22513
wasm gc: group structurally equal different substructures into recursive group in order to benefit from using native ref.test
/rest.cast
instructions for classes
2024-09-18 13:24:29 +02:00
Alexey Andreev
55ac5d0321
wasm gc: implement ServiceLoader
2024-09-17 20:14:29 +02:00
Alexey Andreev
36f7ec36f3
wasm gc: disable cast optimization and fix issue with short/char fields
2024-09-17 08:02:50 +02:00
Alexey Andreev
7784969bb8
wasm gc: fix issues with casts
2024-09-16 13:49:38 +02:00
Alexey Andreev
7e622d8bc7
wasm gc: sort types, functions and globals in usage count order to reduce binary size
2024-09-15 11:02:55 +02:00
Alexey Andreev
86e8cfd0db
wasm gc: reduce size of array construction
2024-09-14 19:34:56 +02:00
Alexey Andreev
e5d6603503
wasm gc: reduce size of class metadata and metadata initializer
2024-09-14 18:24:54 +02:00
Alexey Andreev
a503333c1b
wasm gc: optimize null checks, casts and try/catch using branching instructions
2024-09-14 15:26:22 +02:00
Alexey Andreev
9aee15fa0f
wasm gc: attach Java exception to Wasm exception
2024-09-14 13:02:31 +02:00
Alexey Andreev
7029d3cff7
wasm gc: implement branching instructions and null check instruction
2024-09-13 19:46:11 +02:00
Alexey Andreev
5acb9a4707
Fix checkstyle warnings
2024-09-13 13:27:22 +02:00
Alexey Andreev
4072111af5
wasm: fix error when generating casts
2024-09-13 13:25:26 +02:00
Alexey Andreev
845523f1a7
wasm gc: implement flags for classes
2024-09-12 20:43:09 +02:00
Alexey Andreev
bfd2c8479c
wasm gc: fix bugs related to casts and implement runtime method for converting date to string
2024-09-12 20:16:01 +02:00
Alexey Andreev
8e2cf27e94
wasm gc: fix bugs related to invalid nested temporary variable generation
2024-09-12 18:23:05 +02:00
Alexey Andreev
eccfaff889
wasm gc: fix bugs with Class
2024-09-11 20:07:05 +02:00
Alexey Andreev
d12637f959
wasm gc: fix issues related to class metadata
2024-09-11 15:45:37 +02:00
Alexey Andreev
1533794cf1
wasm gc: add strict mode, fix some bugs
2024-09-11 08:00:39 +02:00
Alexey Andreev
2d8556d0a2
wasm gc: implement enum constants
2024-09-10 15:32:27 +02:00
Alexey Andreev
349ed8fc2d
wasm gc: implement Class.getSuperclass and Object.clone, fix issue with resource maps
2024-09-09 14:23:58 +02:00
Alexey Andreev
fe0304ee67
wasm gc: reduce size of string literal initializer
2024-09-08 20:52:23 +02:00
Alexey Andreev
d0226aab88
wasm gc: implement some Class intrinsics, fix issues with type inference
2024-09-08 20:32:30 +02:00
Alexey Andreev
fea62af09a
wasm gc: implement resources
2024-09-07 20:11:22 +02:00
Alexey Andreev
29dec0962b
wasm gc: fix issues with type inference
2024-09-05 18:49:42 +02:00
Alexey Andreev
a9d46ac55e
wasm gc: fix issue with type inference for null values
2024-09-04 14:58:56 +02:00
Alexey Andreev
d0707e5355
js: emit non-breaking whitespace before function arrow in remaining places
2024-09-03 20:54:34 +02:00
Alexey Andreev
9768a86378
Fix issues related to sigma nodes in phi updater
2024-09-03 20:50:07 +02:00
Alexey Andreev
8038d68963
wasm gc: fix building virtual tables for interface default methods
2024-09-03 14:16:52 +02:00
Alexey Andreev
019eb4500c
wasm gc: fix issues, make more test passing
2024-09-02 16:02:58 +02:00
Alexey Andreev
1dc7bc653d
wasm gc: support type nullability and global mutability
2024-08-31 20:16:09 +02:00
Alexey Andreev
9b601ac002
wasm gc: initialize class initializer globals in global section
2024-08-30 20:54:46 +02:00
Alexey Andreev
638cc8ed15
wasm gc: reduce sizes of virtual tables, initialize structures in global section
2024-08-30 20:21:01 +02:00
Alexey Andreev
f19c211b2a
wasm gc: fix issie with type inference for array set, implement some intrinsics
2024-08-30 13:44:23 +02:00
Alexey Andreev
1ba1dcfc09
wasm gc: fix issue in type inference for comparison instruction result
2024-08-30 12:54:59 +02:00
Alexey Andreev
0b11a9ce90
wasm gc: fix issues in disassembler
2024-08-30 12:54:39 +02:00
Alexey Andreev
8ba4f9c30b
wasm gc: fix issue with function numbering in disassembler
2024-08-29 21:24:14 +02:00
Alexey Andreev
cb1f3c6dfc
wasm gc: fix issue in virtual table generator
2024-08-29 21:14:49 +02:00
Alexey Andreev
a0224f60e6
wasm gc: fix infinite loop in type inference
2024-08-29 21:04:33 +02:00
Alexey Andreev
31d89ebec2
wasm gc: support emitting disassembly in HTML with link references, add setting to emit disassembly in JUnit tests
2024-08-29 18:41:02 +02:00
Alexey Andreev
a8b999f8d9
wasm gc: support global section in disassembler
2024-08-29 17:43:41 +02:00
Alexey Andreev
d6b2afd096
wasm gc: support name section in disassembler
2024-08-28 21:02:33 +02:00
Alexey Andreev
5a513fd6fd
wasm gc: improve disassembler to print type section
2024-08-28 14:13:10 +02:00
Alexey Andreev
7324e99e6a
wasm gc: produce better names for declarations, generate locals in names section
2024-08-27 20:03:22 +02:00
Alexey Andreev
10c3731c43
wasm gc: fix some issues and implement intrinsics
...
* properly cast exception type on catch blocks
* generate virtual table structures lazily
* fix calculation of types of a.field values
2024-08-27 13:28:49 +02:00
Alexey Andreev
6ff58b2dc7
wasm-gc: fix type inference for case of integer subtypes
2024-08-26 20:48:53 +02:00
Alexey Andreev
96bf4379c9
Temporarily ignore failing test
2024-08-26 19:40:59 +02:00
Alexey Andreev
ebac13a363
wasm gc: implement Array.getLength and Array.get
2024-08-26 18:14:04 +02:00
Alexey Andreev
ba08fb395c
wasm gc: always emit java.lang.Class, fix issue with recursive types
2024-08-25 20:38:02 +02:00
Alexey Andreev
0cda737dca
Add test for bug in nullness analysis
2024-08-25 19:34:20 +02:00
Alexey Andreev
4a345610cf
wasm gc: reduce number of generated virtual table entries, reduce size of a simple program
2024-08-23 21:10:44 +02:00
Alexey Andreev
3e19ca341e
wasm gc: fix support of class initialization, inherit arrays from Object, add support for clone in arrays
2024-08-23 21:10:44 +02:00
Alexey Andreev
335e2da4cf
wasm gc: implement System.identityHashCode() and some Integer intrinsics
2024-08-23 10:14:39 +02:00
Alexey Andreev
5d109236d9
wasm gc: fix running tests in JUnit, fix remaining errors so that *few* tests pass
2024-08-21 14:29:56 +02:00
Alexey Andreev
1aebe51256
wasm gc: implement backend-specific virtual table builder
2024-08-20 21:03:51 +02:00
Alexey Andreev
eb0eb1f146
wasm gc: generate field names and write them to name section
2024-08-20 14:16:24 +02:00
Alexey Andreev
29f29cea1d
wasm gc: trying to fix virtual calls
2024-08-19 15:02:11 +02:00
Alexey Andreev
5eb1e7d9bc
wasm gc: implement intrinsics for Long and Class classes
2024-08-18 19:55:25 +02:00
Alexey Andreev
a97e6574ac
Introduce concept of 'weak' cast.
...
Use weak casts to maintain proper typing within methods during various operations on IR. At generation level, ignore weak casts, except for Wasm GC BE, which turns weak casts into platform casts.
2024-08-18 18:47:04 +02:00
Alexey Andreev
8b52741e04
wasm: avoid generation of types as defined in GC spec
...
This fixes passing tests in environments that either don't support or prohibit usage of GC spec
2024-08-18 17:51:29 +02:00
Alexey Andreev
199032d48a
wasm gc: support Array.newInstance
2024-08-17 20:48:03 +02:00
Alexey Andreev
40fbce0ddd
wasm gc: fix issues with virtual calls
2024-08-16 20:42:03 +02:00
Alexey Andreev
8c15885f44
Fix metaprogramming support, fix calculation of virtual tables for final classes
2024-08-14 13:22:27 +02:00
Alexey Andreev
eaf2c8189f
wasm gc: implement some basic reflection-specific intrinsics in Object and Class
2024-08-13 20:51:20 +02:00
Alexey Andreev
a84c5fc77f
wasm gc: fix issues related to virtual calls
2024-08-13 19:57:48 +02:00
Alexey Andreev
73edc0cf6e
wasm gc: support passing arguments to main method
2024-08-12 20:28:11 +02:00
Alexey Andreev
e61301576b
wasm gc: support System.arrayCopy for special cases
2024-08-12 17:55:19 +02:00
Alexey Andreev
6af7250e3b
wasm: add support for array.copy instruction
2024-08-03 19:55:16 +02:00
Alexey Andreev
92666e8cf0
wasm gc: trying to fix issues with array covariance
2024-08-02 19:11:11 +02:00
Alexey Andreev
dd2e4bb001
wasm: fix error in ClassMetadataRequirements causing compiler crash
2024-08-02 15:26:36 +02:00
Alexey Andreev
8d276f2efd
wasm gc: avoid generation of unnecessary supertype functions
2024-08-02 15:03:29 +02:00
Alexey Andreev
8e483245f5
wasm: fix generation of constructor invocation
2024-08-02 14:36:33 +02:00
Alexey Andreev
7ba0a7fe7d
wasm gc: export exception tag from module
2024-08-02 14:31:00 +02:00
Alexey Andreev
e4fa6bd364
wasm gc: reduce number of generated virtual tables, fix non-matching types in case of null literals
2024-08-02 13:50:49 +02:00
Alexey Andreev
9b5e1e7661
wasm gc: fix remaining issues that prevent running trivial example
2024-08-01 20:25:18 +02:00
Alexey Andreev
54dc7fe5f8
wasm gc: fix generation issues, get first version that produces module that passes validation
2024-08-01 19:57:12 +02:00
Alexey Andreev
a8d97ad387
wasm gc: cast receivers on devirtualized calls to actual argument type, avoid this cast when possible
2024-07-31 20:49:45 +02:00
Alexey Andreev
75bead66b3
wasm: support instructions that were recently implemented in generator
2024-07-31 17:31:39 +02:00
Alexey Andreev
5572d4b5d7
wasm gc: add subtyping information to types, fix generation of expressions
2024-07-30 20:57:36 +02:00
Alexey Andreev
a1a776ea9b
wasm gc: trying to fix type validation
2024-07-30 17:33:31 +02:00
Alexey Andreev
87aaa0b452
wasm gc: fix issues in generation of types, globals and some expressions
2024-07-29 20:41:58 +02:00
Alexey Andreev
ea29208b6c
wasm gc: trying to generate types according to unclear spec
2024-07-28 21:04:18 +02:00
Alexey Andreev
a281c19363
wasm gc: draft Wasm GC backend
2024-07-28 14:31:34 +02:00
Alexey Andreev
9f12917de9
js: remove long emulation
2024-07-25 19:43:29 +02:00
Alexey Andreev
f48c24283c
wasm: implement transformation from TeaVM tree IR to Wasm GC
2024-07-24 20:21:22 +02:00
Alexey Andreev
172de8e737
wasm: move common part of wasm expression generator in order to later reuse it with Wasm GC BE
2024-07-22 20:16:16 +02:00
Alexey Andreev
025801d385
Limit depth of method analysis in class initializer analysis in order to avoid too deep stack (and therefore SOE)
2024-07-11 18:18:24 +02:00
Alexey Andreev
7efb3c97a0
wasm gc: draft first parts of Wasm GC backend
...
* class metadata generator
* string pool generator
2024-07-09 19:42:37 +02:00
Alexey Andreev
efcb22b639
wasm: implement global variables
...
They aren't used by current Wasm BE yet, but will be used by future Wasm GC BE
2024-07-01 19:37:04 +02:00
Alexey Andreev
3ba2282473
wasm: implement several instructions related to reference types
...
These instructions will be presumably required for implementation of new Wasm GC BE. There's no tests for these changes, since there is no infrastructure to test anything like this. Instead, this code will be covered by tests for corresponding Wasm BE, when it's finally implemented.
2024-06-30 16:19:00 +02:00
Alexey Andreev
d6474c3aeb
wasm: add model definitions for GC spec
...
- refactor Wasm type representation to include reference types
- refactor function representation for consistency with new type system
First step toward Wasm GC support
2024-06-26 20:41:01 +02:00