Zalim Bashorov
59a9855373
[Wasm] Use Node.js with canary v8 that supports recent Wasm GC changes
...
It's required to run wasm stdlib tests and compiler box tests with WASI.
#KT-59720
2023-09-19 09:23:26 +00:00
Zalim Bashorov
8a6fdf2493
[Wasm] Change expected outcome to SUCCESS in wasm-wasi-test
...
Added workaround for missing dependency.
#KT-59720
2023-09-19 09:23:26 +00:00
Zalim Bashorov
c915cc54c7
[Wasm] Use Node.js with "canary" v8 in gradle mpp tests
...
It's required due to switching to the latest wasm opcodes.
#KT-59720
2023-09-19 09:23:26 +00:00
Zalim Bashorov
86e854a980
Revert "[Wasm] Don't use the new br_on_cast* instructions since they are not supported in Node.js yet"
...
This reverts commit 2d728727
#KT-60828 Fixed
2023-09-19 09:23:26 +00:00
Zalim Bashorov
eecfc2c6d3
[Wasm] Simplify a message printed in case of WebAssembly.CompileError
...
#KT-59720
2023-09-19 09:23:26 +00:00
Zalim Bashorov
44f9199f66
[Wasm] Update Binaryen to 116
...
#KT-59720
2023-09-19 09:23:26 +00:00
Zalim Bashorov
48d4bb5261
[Wasm] Temporarily disable running tests on SpiderMonkey
...
#KT-59720
2023-09-19 09:23:26 +00:00
Zalim Bashorov
c71a341a53
[Wasm] Remove no longer needed options for V8
...
#KT-59720
2023-09-19 09:23:26 +00:00
Zalim Bashorov
874ca6a1af
[Wasm] Update v8 to 11.9.85
...
#KT-59720
2023-09-19 09:23:26 +00:00
Zalim Bashorov
9ec6fea9d5
[Wasm] Update Wasm GC to final codes 🎉
...
#KT-59720 Fixed
2023-09-19 09:23:26 +00:00
Zalim Bashorov
fe0629ff8a
Regenerate tests
2023-08-02 00:03:49 +02:00
Zalim Bashorov
d2f537ede5
[JVM] Mute nestedCallsWithGenericToInt for IR inliner tests
2023-08-01 23:48:24 +02:00
Zalim Bashorov
8452e4732e
[Wasm] Unmute typedDelegation test
2023-08-01 23:48:24 +02:00
Zalim Bashorov
cac5342add
Generate tests
2023-08-01 23:48:24 +02:00
Zalim Bashorov
acc3dc0daa
[Wasm] Take into account nullability for primitives while recovering a stack type
...
#KT-60496 Fixed
2023-08-01 23:48:24 +02:00
Zalim Bashorov
141645c5d7
[Wasm] Generate proper code in stack type recovering:
...
* When the actual type is some nullable type but nullable `Nothing` is expected.
* Respect nullability when casting reference types.
#KT-60113 Fixed
2023-08-01 23:48:23 +02:00
Zalim Bashorov
1946476e58
[Wasm] Generate comments for inlined calls
2023-08-01 23:48:23 +02:00
Zalim Bashorov
2d728727da
[Wasm] Don't use the new br_on_cast* instructions since they are not supported in Node.js yet
...
#KT-60835 Fixed
2023-08-01 08:46:59 +00:00
Zalim Bashorov
c136d0fb5b
Revert "[Wasm] Use Node.js with "canary" v8 (11.7.310.0) in tests"
...
This reverts commit 0bdee00ca2 .
#KT-60835
2023-08-01 08:46:59 +00:00
Zalim Bashorov
0bdee00ca2
[Wasm] Use Node.js with "canary" v8 (11.7.310.0) in tests
...
There are no other non-canary Node.js versions using fresh enough v8.
2023-07-28 16:16:34 +00:00
Zalim Bashorov
cead5c8aae
[Wasm] Update Binaryen to 114
...
This version supports new br_on_cast* instructions.
Also, stop passing to binaryen no longer supported option.
2023-07-28 16:16:34 +00:00
Zalim Bashorov
a1115236f9
[Wasm] Disable deprecated instructions while running tests in V8
...
To make sure that our implementation is up-to-date with the spec.
2023-07-28 16:16:34 +00:00
Zalim Bashorov
4572680877
[Wasm] Migrate to the latest br_on_cast* instructions
...
#KT-59722 Fixed
2023-07-28 16:16:33 +00:00
Zalim Bashorov
9254f70c2a
[Wasm] Update SpiderMonkey to 2023-07-24-09-16-21
2023-07-28 16:16:33 +00:00
Zalim Bashorov
d6ba233bbe
Define fail in the test to pass on JVM and Native
2023-07-21 17:27:17 +00:00
Zalim Bashorov
b1a4d354f1
Regenerate tests
2023-07-21 17:27:17 +00:00
Zalim Bashorov
5d1379ead1
[Wasm] Optimize when using br_table only if all conditions read and compare the same variable
...
#KT-60212 Fixed
2023-07-21 17:27:16 +00:00
Zalim Bashorov
8a645e9c0a
[Wasm] Don't print recursion group in wat when it's empty
2023-07-20 11:49:28 +00:00
Zalim Bashorov
590400071b
[Wasm] Define canonical representation for NaNs explicitly instead of depending on Kotlin's one
...
Surprisingly with `Float.NaN.toRawBits()` you can observe different values,
which can lead to different wat files for the same input.
2023-07-20 11:49:28 +00:00
Zalim Bashorov
151f5b90c7
[Wasm] Wrap a recursion group by a "rec" block in wat
2023-07-20 11:49:28 +00:00
Zalim Bashorov
8a9531ce3c
[Wasm] Don't print "field" for array types in wat
2023-07-20 11:49:28 +00:00
Zalim Bashorov
8d440a61e2
[Wasm] Make types for none and noextern consistent with the spec
2023-07-20 11:49:28 +00:00
Zalim Bashorov
2d13cbae80
[Wasm] make adding sections a bit more typesafe and extract possible values to WasmBinary
2023-07-20 11:49:28 +00:00
Zalim Bashorov
a819a734b8
[Wasm] extract some "mages numbers" to simplify their update and improve readability
...
In preparation for KT-59720
2023-07-20 11:49:28 +00:00
Zalim Bashorov
0945968751
[Wasm] Update expected size in test data
2023-07-17 23:57:35 +02:00
Zalim Bashorov
b34d291f85
[Wasm] Turn on final types in V8 for the box tests
2023-07-17 23:57:35 +02:00
Zalim Bashorov
1cf3841588
[Wasm] Always use -0x30/sub when defining a struct type
...
Otherwise, according to the spec, a type will be treated as a final,
which is not correct in many cases.
Later, we can generate final struct types when it's applicable.
#KT-60200 Fixed
2023-07-17 23:57:34 +02:00
Zalim Bashorov
5db493a475
[Wasm, JS] Update v8 to 11.7.186
2023-07-17 23:57:34 +02:00
Zalim Bashorov
b744f2ef82
[Wasm] Stop using "--type-ssa" since without "--type-merging" it increases output size
...
"--type-merging" was disabled before because it requires "--close-world"
which we can't use in general (specifically in Compose applications).
2023-07-17 23:57:34 +02:00
Zalim Bashorov
4e36f5b391
[Wasm, JS] Add a warning that dumping reachability and size infos to file is supported only for Kotlin/Wasm
2023-04-25 19:44:03 +02:00
Zalim Bashorov
0a1116376c
[CLI, JS, Wasm] Regenerate K2JSCompilerArgumentsCopyGenerated.kt
2023-04-25 19:44:03 +02:00
Zalim Bashorov
ef28bf27ae
[CLI tests] Update testdata
2023-04-25 19:44:03 +02:00
Zalim Bashorov
bd852e87ab
[Wasm] Add an option to dump declaration IR sizes to file
2023-04-25 19:44:03 +02:00
Zalim Bashorov
3c343e3074
[Wasm, JS] Minor: make description non-nullable
2023-04-25 19:44:02 +02:00
Zalim Bashorov
62b21ac078
[Wasm] Add an option to dump reachability info to file
2023-04-25 19:44:02 +02:00
Zalim Bashorov
a9683bd4a8
Wasm: temporary force keeping Unit_getInstance in DCE
2023-04-22 17:41:23 +00:00
Zalim Bashorov
77491ded1b
Use Array constructor with size to create Array of nulls
...
Change the constructor visibility from public to private as it should be.
2023-04-22 17:41:23 +00:00
Zalim Bashorov
4f76827ea9
[Wasm] Tune Binaryen options and add some notes about 112
2023-04-18 20:40:17 +02:00
Zalim Bashorov
34f8851ac1
[psi2ir] Ignore private members when creating fake overrides from descriptors
...
The behavior is unified with the IR deserializer.
See `isOverridableMemberOrAccessor` in IrOverridingUtil.kt
Without this change, if we add a private member to the Any in wasm stdlib,
the compiler starts crashing with a linker error.
It's hard to write a relevant, self-contained box test for that since it requires
adding a private member to Any and affects **only** "virtual" FunctionN interfaces.
2023-04-18 18:44:47 +02:00
Zalim Bashorov
521a272acb
[Wasm] Pass js stack value directly when replacing a wasm exception with JS one
...
In this case, we don't need to convert a value to and from wasm String.
2023-04-17 16:15:22 +00:00
Zalim Bashorov
6bfd1e7e9f
[Wasm] Stop using unsigned numbers in ScopedMemoryAllocator
...
It turned out that using unsigned numbers is heavy both in terms of size and performance.
We can consider switching back (KT-58041) as soon as we implement unsigned numbers and operations using wasm built-in capabilities (KT-58039).
2023-04-17 16:15:22 +00:00
Zalim Bashorov
c114afb55d
[Wasm] export __callFunction_* only when a respective closure/lambda converter is used
2023-04-17 16:15:21 +00:00
Zalim Bashorov
1e6626338d
[CODEOWNERS] Changes in wasm output size tests must be shown to Zalim.Bashorov
2023-04-06 10:14:06 +00:00
Zalim Bashorov
155eb9b77a
[Wasm, stdlib] extract Any::identityHashCode to workaround the bug in FunctionDescriptorFactory
...
A fix is on its way -- KT-MR-9426.
2023-04-05 20:50:53 +02:00
Zalim Bashorov
46459dfa60
[Wasm] Minor: update expected size after rebase
2023-04-05 20:50:52 +02:00
Zalim Bashorov
2e4a09f841
[Wasm] Replace takeIf with ifEmpty in TeamcityAdapter
2023-04-05 20:50:52 +02:00
Zalim Bashorov
9760e3ee1e
[Wasm] Introduce check and error specialized for String to reduce output size
2023-04-05 20:50:52 +02:00
Zalim Bashorov
295acdf2af
[Wasm] Rewrite lazy initialization without by lazy and lateinit to reduce overhead
2023-04-05 20:50:52 +02:00
Zalim Bashorov
1a8a4fa65d
[Wasm] Don't use by lazy inside Throwable
2023-04-05 20:50:52 +02:00
Zalim Bashorov
67357fa5d4
[Wasm] Replace heavyweight stackTraceToString with "pure" JS stack
2023-04-05 20:50:52 +02:00
Zalim Bashorov
14af47bbd9
[Wasm] Introduce utilities to get package and name of class directly from metadata and use it in some places
2023-04-05 20:50:52 +02:00
Zalim Bashorov
f206b0b72d
[Wasm] TeamcityAdapter: rewrite lazy property initialization using lateinit
2023-04-05 20:50:52 +02:00
Zalim Bashorov
a9b553f16e
[Wasm] Don't use by lazy to keep some JS values used by adapters
2023-04-05 20:50:52 +02:00
Zalim Bashorov
494403c4bb
[Wasm] Don't use by lazy inside TeamcityAdapter
2023-04-05 20:50:52 +02:00
Zalim Bashorov
2ef47901d0
[Wasm] Introducing private identityHashCode shared between Any's hashCode and toString
...
It splits the dependency of toString from hashCode that prevents keeping hashCode when toString is used.
2023-04-05 20:50:51 +02:00
Zalim Bashorov
6e3eef7a88
[Wasm] add simple tests to track the size of wasm and mjs files
2023-04-05 20:50:51 +02:00
Zalim Bashorov
1697a28bf0
[Wasm] introduce a directive to check output size in some wasm tests
...
Syntax:
// WASM_DCE_EXPECTED_OUTPUT_SIZE: <file extension> <expected size in bytes>
Example:
// WASM_DCE_EXPECTED_OUTPUT_SIZE: wasm 10_000
2023-04-05 20:46:13 +02:00
Zalim Bashorov
4d7cf81ed0
[Wasm] Stop supporting "_export.js" in test infra, use import/export capability in relevant tests
...
* It works slightly differently in SpiderMonkey.
* It was a hack.
2023-03-06 23:19:02 +01:00
Zalim Bashorov
bec827b654
[Wasm] Update SpiderMonkey to 112.0a1 (2023-03-04-09-52-24)
2023-03-06 23:19:02 +01:00
Zalim Bashorov
f3e022e4ca
[Wasm] Print an instruction if CompileError was thrown while instantiating a module
...
#KT-56160 Fixed
2023-02-03 14:06:32 +01:00
Zalim Bashorov
95a1218996
[CODEOWNERS] Change owner of wasm intrinsics to "Kotlin Wasm"
...
And make "Kotlin Wasm" co-owner of /js/js.translator/testData/
2023-02-01 00:36:11 +01:00
Zalim Bashorov
58e523b890
[Wasm] Change target directory for wasm intrinsics for finer tuning code owners
...
Also, minor cleanup in the generator.
2023-02-01 00:35:49 +01:00
Zalim Bashorov
6a73650b35
[Wasm] SpiderMonkey.kt -> WasmVM.kt
2023-01-27 17:57:50 +01:00
Zalim Bashorov
b02279de14
[Wasm] Run wasm test using all available VMs: V8 & SpiderMonkey for now
...
Also, add a new directive, `WASM_FAILS_IN`, to specify VMs where a test is expected to fail for now.
#KT-56166 Fixed
2023-01-27 17:57:50 +01:00
Zalim Bashorov
885381dd63
[Wasm] Change externRefToAny to make it compatible with SpiderMonkey and V8
...
It's hard to achieve that without implementing part of `externRefToAny` using an intrinsic. It should be rewritten when all VMs and tools update to the latest spec.
Also, stop using (deprecated) instructions unsupported by SpiderMonkey.
#KT-56166 In-Progress
2023-01-27 17:57:50 +01:00
Zalim Bashorov
d1855371a0
[Wasm] Don't wrap single null expression into composite in WasmNullCoercingLowering
...
Otherwise, it breaks check/assert inside DeclarationGenerator::visitField (DeclarationGenerator.kt:458)
#KT-56166 In-Progress
2023-01-27 17:57:50 +01:00
Zalim Bashorov
ca79711610
[Wasm] Generate .mjs compatible with other standalone js & wasm VMs: SpiderMonkey and JavaScriptCore in addition to V8
...
#KT-56166 In-Progress
2023-01-27 17:57:50 +01:00
Zalim Bashorov
802a8ec326
[Wasm] Update SpiderMonkey version
...
#KT-56166 In-Progress
2023-01-27 17:57:50 +01:00
Zalim Bashorov
1d793f7bec
[Wasm] Revert a7ed496a and few fixes to make Kotlin/Wasm compatible with Firefox
...
Revert changes as soon as the bug is fixed https://bugzilla.mozilla.org/show_bug.cgi?id=1811932
a7ed496a "[WASM] Use wasm bottom types for Nothing?"
#KT-56166 In-Progress
2023-01-27 17:57:49 +01:00
Zalim Bashorov
2573201a87
[Wasm] provide "location" for pseudo-instructions using to add comments
2023-01-17 19:37:06 +01:00
Zalim Bashorov
ab1cbc49dd
[Wasm] Minor: move buildUnreachable* helpers to more specific module
2023-01-17 19:37:05 +01:00
Zalim Bashorov
9e4b2b78e6
[Wasm] Remove unnecessary location from WasmDataMode constructor
2023-01-17 19:37:05 +01:00
Zalim Bashorov
2fa2725012
[Wasm] Add a comment about location into WasmExpressionBuilder
2023-01-17 19:37:05 +01:00
Zalim Bashorov
37879e18d9
[Wasm] Pass location instead of fileEntry to generateConstExpression
2023-01-17 19:37:05 +01:00
Zalim Bashorov
aa8a0fd7d7
[Wasm] Remove LocationHolder and helper functions
...
It turned out that dedicated scoping function for locations are not so useful.
Now, if you want to scope a location use functions from stdlib, like `let`.
2023-01-17 19:37:05 +01:00
Zalim Bashorov
e62add937b
[Wasm] Remove SourceLocation.TBDLocation and related things
2023-01-17 19:37:05 +01:00
Zalim Bashorov
0d203d190e
[Wasm] Remove buildInstr without location and fix usages
2023-01-17 19:37:05 +01:00
Zalim Bashorov
42f2edd282
[Wasm] Require location for buildThrow and fix all usages
2023-01-17 19:37:05 +01:00
Zalim Bashorov
1244cd1259
[Wasm] Require location for buildBr* and fix all usages
2023-01-17 19:37:05 +01:00
Zalim Bashorov
95c84d5d3f
[Wasm] Require location for buildDrop and fix all usages
2023-01-17 19:37:05 +01:00
Zalim Bashorov
6eba0392db
[Wasm] Require location for buildRefNull and fix all usages
2023-01-17 19:37:05 +01:00
Zalim Bashorov
12854af0a2
[Wasm] Require location for buildRefTestStatic and fix all usages
2023-01-17 19:37:05 +01:00
Zalim Bashorov
7bd92bc412
[Wasm] Require location for buildRefCastNullStatic and fix all usages
2023-01-17 19:37:05 +01:00
Zalim Bashorov
158a307334
[Wasm] Require location for buildStructSet and fix all usages
2023-01-17 19:37:05 +01:00
Zalim Bashorov
e7dc443c18
[Wasm] Require location for buildStructGet and fix all usages
2023-01-17 19:37:04 +01:00
Zalim Bashorov
530438dfcb
[Wasm] Require location for buildStructNew and fix all usages
2023-01-17 19:37:04 +01:00
Zalim Bashorov
3967bd2755
[Wasm] Require location for buildSetGlobal and fix all usages
2023-01-17 19:37:04 +01:00
Zalim Bashorov
65e1b53027
[Wasm] Require location for buildGetGlobal and fix all usages
2023-01-17 19:37:04 +01:00
Zalim Bashorov
00d0c38fc3
[Wasm] Require location for buildSetLocal and fix all usages
2023-01-17 19:37:04 +01:00
Zalim Bashorov
0b59ef58dc
[Wasm] Require location for buildGetLocal and fix all usages
2023-01-17 19:37:04 +01:00