Commit Graph

993 Commits

Author SHA1 Message Date
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
Alexey Andreev
5d237a98ae wasm: fix writing debug info when some class was not found 2024-05-15 19:24:33 +02:00
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