Commit Graph
100 Commits
Author SHA1 Message Date
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
Zalim Bashorov 9e86ac071d [Wasm] Require location for buildCallIndirect 2023-01-17 19:37:04 +01:00
Zalim Bashorov e5e786c265 [Wasm] Use more specific types in generateExpression and generateStatement
Also, rename: `generateStatement` -> `generateAsStatement`
2023-01-17 19:37:04 +01:00
Zalim Bashorov ce265c049a [Wasm] Require location for buildUnreachable and fix all usages 2023-01-17 19:37:04 +01:00
Zalim Bashorov 36d4e29253 [Wasm] Require location for buildConstI32Symbol and fix all usages 2023-01-17 19:37:04 +01:00
Zalim Bashorov e69bbdd5b4 [Wasm] Require location for buildConstF32 & buildConstF64 and fix all usages 2023-01-17 19:37:04 +01:00
Zalim Bashorov 332aca10b0 [Wasm] Require location for buildConstI64 and fix all usages 2023-01-17 19:37:04 +01:00
Zalim Bashorov f2f4c63720 [Wasm] Require location for buildConstI32 and fix all usages 2023-01-17 19:37:04 +01:00
Zalim Bashorov cdc1d66b1f [Wasm] Require a description on each usage of SourceLocation.NoLocation 2023-01-17 19:37:04 +01:00
Zalim Bashorov 61440c74d5 [Wasm] Require location for buildCall and fix all usages 2023-01-17 19:37:03 +01:00
Zalim Bashorov 49c3ba33f1 [Wasm] Add a basic end-to-end sourcemap generation in wasm backend
More constructions/instructions will be supported separately.
2022-12-08 12:44:26 +00:00
Zalim Bashorov 54c00cc588 [Sourcemap] Add an ability to provide outputColumn to SourceMap3Builder#addMapping instead of using getCurrentOutputColumn
The ability will be used later by wasm backend while generating sourcemap.
2022-12-07 12:03:54 +00:00
Zalim Bashorov fb4dcc6a6a [Sourcemap] Introduce getCurrentColumn and stop using TextOutput directly
The general goal is remove dependency on TextOutput and
make it simpler to use for wasm backend.
2022-12-07 12:03:54 +00:00
Zalim Bashorov e34d3d09bc [Sourcemap] Extract addLink from SourceMap3Builder as a addSourceMappingURL
The general goal is remove dependency on TextOutput and
make it simpler to use for wasm backend.
2022-12-07 12:03:54 +00:00
Zalim Bashorov 70a3d43adf [Wasm] Update Binaryen version in gradle plugin: 110 -> 111 2022-11-25 15:32:32 +01:00
Zalim Bashorov fe1157c873 [Wasm] Add to TODO the hash of the commit to revert 2022-11-25 15:32:32 +01:00
Zalim Bashorov 7f8f7aa050 [Wasm] Revert ref cast and test instructions to be compatible with Binaryen 2022-11-25 15:31:48 +01:00
Zalim Bashorov 5f140dac21 [Wasm] Remove wasm_ref_cast and use wasm_ref_cast_null inside the compiler 2022-11-25 15:31:47 +01:00
Zalim Bashorov e7d0e451e7 [Wasm] Fix immediate type for recently (in M6) introduced instructions
STRUCT_TYPE_IDX -> HEAP_TYPE
WasmImmediate.TypeIdx -> WasmImmediate.HeapType
2022-11-25 15:31:47 +01:00
Zalim Bashorov 3ac90cf0e4 [CODEOWNERS] Add missed leading slash in the paths 2022-11-25 14:54:08 +01:00
Zalim Bashorov d2b63c8c31 [Wasm] Use common logic for eqeq and eqeqeq
So, now it generates better code when null literals are passed to `eqeqeq`,
same as for `eqeq`.
2022-11-18 17:30:11 +01:00
Zalim Bashorov 96b02c9b66 [Wasm] Minor: move part of code of eqeqSymbol processing in BuiltInsLowering 2022-11-18 17:30:11 +01:00
Zalim Bashorov 0529ba9a87 [Wasm] Extract common some logic of eqeqSymbol processing in BuiltInsLowering 2022-11-18 17:30:10 +01:00
Zalim Bashorov 919029f34f [Wasm] Add fast path for null in externRefToAny
- Introduce new intrinsics `wasm_ref_cast_null` & `wasm_ref_test_null`.
- Support getting type for immediate from generic argument.
- Remove redundant null check in `tryGetOrSetExternrefBox`.
2022-11-18 17:30:10 +01:00
Zalim Bashorov ab590e1279 [Wasm, stdlib] Change visibility for wasm_* helper functions to internal 2022-11-15 12:55:10 +01:00
Zalim Bashorov 2fc6cea681 [Wasm] Migrate to the new GC M6 instructions 2022-11-15 12:55:10 +01:00
Zalim Bashorov 0c16415d26 [Wasm, stdlib] Change owner of runtime part of wasm-stdlib to "Kotlin Wasm" 2022-11-15 12:33:31 +01:00
Zalim Bashorov 89ba1b515e [Wasm, test] Use "dynamic import" to catch exception thrown during JS & Wasm modules initialization 2022-11-11 16:22:10 +01:00
Zalim Bashorov 31f3fbcd78 [JS, Wasm] Improve readability of the message printed for failed tests for kotlin.test 2022-11-11 16:22:10 +01:00
Zalim Bashorov 5dd188f2cd [CODEOWNERS] Mark files in /js/js.tests/* owned by Kotlin Wasm 2022-11-11 16:22:08 +01:00
Zalim Bashorov 5fb72dd99d [JS, Wasm] Add to gradle.properties some properties useful while working with JS & Wasm 2022-11-11 16:21:54 +01:00
Zalim Bashorov 5511377c2c [Wasm, tests] Cleanup and improvements in wasm test infra
- Remove no longer necessary separate generation to run inside browsers
- Generate index.html in DEBUG mode instead of SUPER_DEBUG
- Print link to index.html using IDEA builtin server (0.0.0.0:63342)
- Small improvements in generated index.html
2022-11-11 16:21:54 +01:00
Zalim Bashorov 10bf3b848e [JS & Wasm tests] Load properties from root local.properties file too 2022-11-11 16:21:54 +01:00
Zalim Bashorov e0cadb78e1 [CODEOWNERS] Remove depth limit since it doesn't change test running time much 2022-11-11 16:20:44 +01:00
Zalim Bashorov 5e9d2dfbe6 [CODEOWNERS] Add owner for kotlin-gradle-plugin-tcs-android 2022-11-11 16:20:43 +01:00
Zalim Bashorov 43e05ed8a2 [CODEOWNERS] Update owners for JS and Wasm part of gradle plugin 2022-11-11 16:20:43 +01:00
Zalim Bashorov 9c6254c8f5 [Wasm, JS] Add script to check that a specific v8 version is available for all platforms 2022-11-11 16:20:43 +01:00
Zalim Bashorov cbf7497f76 [Wasm, JS] Update v8 to 10.9.194
It turned out that 10.9.130 is not available for intel based macs (mac64)
2022-11-11 16:20:43 +01:00
Zalim Bashorov 4bafa2c9db [Wasm, Gradle] Quick fix for broken NewMultiplatformIT.testWasmD8Test 2022-11-10 13:54:10 +00:00
Zalim Bashorov d4e0d07b5b [Wasm] Update Binaryen version in gradle plugin: 109 -> 110 2022-11-09 13:44:39 +01:00
Zalim Bashorov d29010807a [Wasm] Apply recent changes in TFR proposal and update v8
Type index immediate was added to call_ref and return_call_ref instructions.
More details here https://github.com/WebAssembly/function-references/pull/76
2022-11-09 13:44:38 +01:00
Zalim Bashorov 9ed94b25fa [Wasm] Cleanup instructions list
* Split by proposal, at least for work-in-progress ones
* Add a link to the repo for WIP proposals
* Move some instructions to right group
2022-11-09 13:44:38 +01:00
Zalim Bashorov ff2d3d0bdb [Wasm] Remove unnecessary --experimental-wasm-eh option while running d8 and nodejs
The support for Exception Handling proposal is turned on by default everywhere.
2022-11-09 13:44:38 +01:00
Zalim Bashorov 21c4580e20 [JS, Wasm] Update Nodejs to the current LTS (18.12.1) and add useful links 2022-11-08 14:31:43 +00:00
Zalim Bashorov 2c889f56fa [K/JS] Add missed JsExport in the test, and uncomment part of it which passes with v8
#KT-41294 Fixed
2022-10-07 19:37:56 +02:00
Zalim Bashorov 75510e6019 [K/Wasm] Fix incompatibilities with webpack.
* Webpack doesn't support "node:" prefix out of the box, so we can just ignore it.
* Use a proper way to get a path to the script's dir.

#KT-53790 Fixed
2022-10-07 19:37:56 +02:00
Zalim Bashorov f22eed6dd8 [Wasm] Fix running wasm in the browser 2022-05-23 17:50:24 +02:00
Zalim Bashorov f8ef028da3 [Wasm] Remove no longer existed dirs from exclude list 2022-05-05 21:03:40 +00:00
Zalim Bashorov 11d9751844 [Wasm] Unmute inlineVararg 2022-05-05 21:03:39 +00:00
Zalim Bashorov 76806eba8a [Wasm] Mute failing tests in boxInline 2022-05-05 21:03:38 +00:00
Zalim Bashorov e594cad02a [Wasm] Add tests from "boxInline" 2022-05-05 21:03:38 +00:00
Zalim Bashorov 2c20a71d08 [Codegen tests] Specify JVM as target backend for inferenceFlexibleTToNullable.kt 2022-05-05 21:03:37 +00:00
Zalim Bashorov a6e8912af0 [Wasm] Mute failing tests in box/delegatedProperty 2022-05-05 21:03:36 +00:00
Zalim Bashorov db4888b3d4 [Wasm] Stop excluding a bunch of tests 2022-05-05 21:03:34 +00:00
Zalim Bashorov 92d4c1c275 [Build, JS] Remove redundant setting nodeVersion to 16.13.0
Node.js support already use 16.13.0.

Probably it's useful to use default version for dogfooding propose,
Likely it's cover small cases, but at least could help to catch some
platform dependent issues.
If we need some specific (likely newer) version of node somewhere
in the project it's better to specify it for specific parts and
consider updating version of node inside gradle support and revert
a change.
2022-05-05 15:47:54 +00:00
Zalim Bashorov 6ebeeabe0f [Codegen tests] Fix the test (kt39588)
For negative case, throwing CCE, we already have the issue KT-8135
and dedicated tests:
* genericDelegateUncheckedCast1.kt
* genericDelegateUncheckedCast2.kt

Related issues: KT-8135 KT-39588 KT-48749 KT-49837
2022-05-05 15:47:54 +00:00
Zalim Bashorov 56d0255a8a [JS] Update nodejs to latest LTS version (16.14.2)
Also, remove verification metadata for older versions.
2022-04-23 17:58:42 +02:00
Zalim Bashorov 90c867ae1d [JS] Define Node.js version in one place and use a single version everywhere
Consequently, it fixes the inability to run some JS related tests on Apple devices with ARM.
2022-04-23 17:58:42 +02:00
Zalim Bashorov 64bcd8c91e [JS, atomicfu] Stop applying unused node plugin 2022-04-23 14:06:24 +02:00
Zalim Bashorov 2ed3349f7b [JS] Support downloading v8 for mac-arm64 2022-04-23 14:06:24 +02:00
Zalim Bashorov 4c4bcb1e3e [Gradle, JS] Turn on by default sourcemap generation for JS IR
#KT-46551 Fixed
2021-07-05 21:01:45 +03:00
Zalim Bashorov 8da62b56fb [IR] Put correct line numbers on return while inlining
#KT-46551 In Progress
2021-07-05 21:01:44 +03:00
Zalim Bashorov d1f5ab4b09 [JS IR] Generate correct source locations in sourcemap for inline declarations
* Keep returnable blocks.
* Add a new lowering which simplifies returnable blocks by introducing
  temporary variable for result and changing returnable block's type to Unit.
* Use information from returnable blocks in codegen to generate
  the right source locations in sourcemap.
* Support in namer (LocalNameGenerator).
* Fix some lowerings to work correctly with returnable blocks.

#KT-46551 In Progress
2021-07-05 21:01:43 +03:00
Zalim Bashorov 2460f5f9ae [JS CLI] Support sourcemap generation for IR BE in CLI
#KT-46551 In Progress
2021-07-05 21:01:41 +03:00
Zalim Bashorov 5a3efc1a98 [JS IR] Fill source info in codegen
#KT-46551 In Progress
2021-07-05 21:01:40 +03:00
Zalim Bashorov 64c6d852de [JS IR] Preparing for introducing sourcemap as another compilation output
* Rename `JsCode` to `CompilationOutputs`.
* Rename members of CompilerResult.

#KT-46551 In Progress
2021-07-05 21:01:38 +03:00
Zalim Bashorov d9b7230144 [JS IR] add dependency to sourcmap module
#KT-46551 In Progress
2021-07-05 21:01:37 +03:00
Zalim Bashorov aae1057f35 [IR] Support IrReturnableBlock inside IR renderer 2021-07-05 21:01:35 +03:00