Igor Yakovlev
6f88e9b16f
[WASM] Fix interop adapter for long strings
2022-06-28 18:00:40 +00:00
Igor Yakovlev
641b2c6974
[WASM] Remove redundant bootstrap code
2022-05-28 13:26:14 +02:00
Igor Yakovlev
73a86fffe5
[WASM] Bootstrap std compatibility fix
2022-05-20 16:33:57 +02:00
Igor Yakovlev
8da6ab7a04
[WASM] New VTable format
2022-05-20 16:33:57 +02:00
Igor Laevsky
2c9bfe901d
[Wasm] Pull array range checks into single function
2022-04-05 18:00:31 +00:00
Igor Yakovlev
d881f0d2a6
[WASM] Replace String storage type from CharArray to WasmCharArray
2022-03-21 17:24:38 +00:00
Svyatoslav Kuzmich
4636f71076
[Wasm] Loader improvements
...
- Output ES modules instead of plain files
- Support -Xwasm-launcher=d8 for d8 shell used in tests and benchmarks.
- Reuse launcher generation logic in CLI and box tests runners.
- Create separate output directory for each box since
there are multiple output files generated for each test.
- Stop using absolute paths in generate JS files
to simplify running generated code on different machine
- Remove ">>>" from println output
Merge-request: KT-MR-5729
Merged-by: Svyatoslav Kuzmich <svyatoslav.kuzmich@jetbrains.com >
2022-02-10 22:59:44 +00:00
Igor Yakovlev
eb8c3aa54e
[WASM] Remove WasmImport annotation
2022-02-03 21:25:59 +01:00
Igor Yakovlev
0acb1c0c05
[WASM] Implemented Wasm unhandled exceptions on JS site
2022-02-03 21:25:57 +01:00
Igor Yakovlev
adee0f1cb0
[WASM] Add kotlin.math implementation
2022-01-05 13:12:32 +01:00
Svyatoslav Kuzmich
f833fc4bcb
[Wasm] Default parameter values for external functions
...
+ import top-level external functions wrapped in lambdas
2021-11-17 19:28:14 +00:00
Igor Yakovlev
ee7f4c7278
[WASM] Implementation typeOf support
2021-11-15 19:53:48 +03:00
Igor Yakovlev
ce360bb10b
[WASM] Implementation of Class references
2021-11-15 19:53:46 +03:00
Igor Laevsky
46b56c7642
[Wasm] Improve string constructor in stdlib
2021-11-03 16:23:01 +03:00
Svyatoslav Kuzmich
766377a041
[Wasm] Remove WasmForeign annotation
...
No longer needed since external interfaces are supported
2021-10-28 18:47:38 +03:00
Svyatoslav Kuzmich
4fc461a2ff
[Wasm] Imporove external interface support
...
* Support boxing/unboxing when casting to Any
* Support ===, equals, hashCode, toString
* Support adapting String in interop boundary
2021-10-23 01:26:12 +03:00
Svyatoslav Kuzmich
baa53b5cf3
[Wasm][Stdlib] Use array copy in String.toCharArray()
...
And don't use copy during internal non-mutating algorithms
2021-10-23 01:26:11 +03:00
Svyatoslav Kuzmich
0f66f85cf9
[Wasm] Support main function
2021-10-15 13:58:55 +03:00
Igor Laevsky
049e48e780
[Wasm] Keep error message for the IAE exception
2021-10-14 17:24:03 +03:00
Svyatoslav Kuzmich
3bce0cc055
[Wasm] Support coroutines
...
- Reuse JS IR Suspend function lowering
- Fix types
- Disable reinterpretCast-based optimization for inline
classes
- Add basic support to Wasm stdlib
- Explicitly transform suspend functions into regular functions
with continuations
- Clean suspend function handling from JS IR codegen
2021-10-12 08:42:01 +03:00
Svyatoslav Kuzmich
9ef899ef10
[Wasm] Reuse Callable reference and SAM lowerings from JS
2021-10-08 07:24:41 +03:00
Svyatoslav Kuzmich
1ed2748334
[Wasm] Generate [K][Suspend]FunctionN on demand and support big arity
2021-10-08 07:24:41 +03:00
Svyatoslav Kuzmich
fa3e75463e
[Wasm] Support throwIAE and throwNoBranchMatchedException
...
Add a couple of test stubs
Unmute tests
2021-10-02 06:14:36 +00:00
Svyatoslav Kuzmich
ab9a23cbfa
[Wasm][Stdlib] Reuse K/N collections and StringBuilder
2021-10-01 17:18:49 +03:00
Svyatoslav Kuzmich
dd45714137
[Wasm] Add property reference stdlib part
2021-09-27 17:08:55 +03:00
Igor Laevsky
15668e2266
[WASM] Lower Unit to Void in order to mark statements with no result
2021-09-16 20:24:44 +03:00
Igor Laevsky
6ca965af6f
WASM: Generate throw instruction instead of wasmThrow call
2021-09-08 19:56:33 +03:00
Igor Laevsky
5db8ec6551
WASM: Don't use intrinsics to specify NaN's
2021-08-06 17:34:21 +03:00
Igor Laevsky
80140207b5
WASM: Properly handle nullable exported strings
2021-08-04 16:23:36 +03:00
Igor Laevsky
0eba74a9d2
WASM: Impelment float to string conversion operations
2021-08-04 16:23:32 +03:00
Igor Laevsky
f34a079699
WASM: Implement integer to string conversion operations
2021-08-04 16:23:32 +03:00
Igor Laevsky
2538caa84f
WASM: NFC. Rename string import/export functions
2021-08-04 16:23:31 +03:00
Igor Laevsky
d90e3618f9
WASM: NFC. Rename WasmReinterpret into WasmNoOpCast.
2021-08-04 16:23:28 +03:00
Igor Laevsky
0f84525bdc
WASM: Implement wasm-native strings part 1
...
There are several changes here but they all required for at least one test to pass.
- Implemented String class and several utility functions using built-in CharArray
- Added new constant memory segment to hold string literals and required funcs to work with them
- Added very crude mostly incorrect rudimentary ability to pass strings back to javascript
2021-08-04 16:23:28 +03:00
Igor Laevsky
9ccdffe8ad
WASM: NFC. Rename WasmPrimitive into WasmAutoboxed and add few comments.
2021-08-04 16:23:27 +03:00
Svyatoslav Kuzmich
a468792a19
[Wasm] Support Milestone 3 of V8 Wasm GC
...
Advance V8 version to 9.2.212
Relevant Wasm GC changes:
https://github.com/WebAssembly/gc/commit/f9f8ffa445c2c0fe4ac284a1d12a8c5477da4457
2021-07-15 10:59:06 +00:00
Svyatoslav Kuzmich
22239e2733
[Wasm] Remove unused super class field in type info
2020-12-30 19:29:11 +03:00
Svyatoslav Kuzmich
785c947782
[Wasm] Improve class type checks
...
Use wasm ref.test instad of manual type info linked list traversal
2020-12-30 19:29:10 +03:00
Svyatoslav Kuzmich
b6ad1584c9
[Wasm] Improve interface method dispatch
...
- Use typed Wasm tables for each interface method to avoid runtime
function type check
- Use linear search by implemented interface rather than by individual
virtual function signature
2020-12-30 19:29:10 +03:00
Svyatoslav Kuzmich
d4233f3f0e
[Wasm] Use Wasm GC arrays instead of JS arrays
...
JS arrays was a workaround for lack of arrays in Firefox Wasm GC prototype
Now with V8 as a test runner we can use proper arrays
2020-12-09 15:56:45 +03:00
Svyatoslav Kuzmich
6063353b64
[Wasm] Generate stdlib WasmOp based on WasmOp from Wasm IR
2020-12-09 15:56:44 +03:00
Svyatoslav Kuzmich
4d59a58291
[Wasm] Add interop annotation @JsFun
2020-11-10 13:08:04 +03:00
Svyatoslav Kuzmich
bfd0f21e9d
[Wasm] Major compiler and stdlib update
2020-11-09 16:04:43 +03:00
Svyatoslav Kuzmich
6e6ffa12a6
[WASM] Initial infrastructure
...
- New module ":compiler:backend.wasm"
- Initial compiler infra (driver, phaser, context)
- Subset of Wasm AST
- Skeleton of IR -> Wasm AST
- Wasm AST -> WAT transformer
- Testing infra
- SpiderMonkey jsshell tool
2019-08-22 15:59:54 +03:00