Commit Graph

187 Commits

Author SHA1 Message Date
Svyatoslav Kuzmich 0e54ec5ef6 [Wasm] Stop using Dynamic in WebIDL generated code 2023-03-29 11:08:29 +00:00
Svyatoslav Kuzmich cafc27aae9 [Wasm] Add JsAny.unsafeCast
Replacement for Dynamic.unsafeCast, but limited to JsAny types where
it makes sense.
2023-03-29 11:08:29 +00:00
Svyatoslav Kuzmich e32611d2f2 [Wasm] Make Promise methods generic instead of using Dynamic
Copy full Promise implementation from Kotlin/JS,
and specify JsAny? upper bounds
2023-03-29 11:08:29 +00:00
Dmitriy Novozhilov 90ec84d7b7 [Stdlib] Update copyrighting in generated stdlib sources 2023-03-27 10:46:11 +00:00
Abduqodiri Qurbonzoda 9076e5b112 [K/N] Mark BitSet usages in stdlib with @ObsoleteNativeApi 2023-03-23 14:48:23 +00:00
Svyatoslav Kuzmich 76b4498399 [Wasm] IDL bindings improvements
- Generated types extend JsAny
- Use JsAny instead of Dynamic
- Use JsArray instead of Array
- Use JsNumber, JsString and JsBoolean in JsAny context
- Refactor dictionary constructor functions
2023-03-16 09:12:08 +00:00
Svyatoslav Kuzmich 1208a26fc4 [Wasm] Use JsAny, JsHandle and other Js* types in stdlib and kotlin-test 2023-03-16 09:12:07 +00:00
Svyatoslav Kuzmich 4be359ba02 [Wasm] Add @SinceKotlin("1.9") to js(code) 2023-03-03 19:39:12 +00:00
Svyatoslav Kuzmich 3566d918d2 [Wasm] Deprecate @JsFun with warning
kotlin.js.js("code") should be used instead
2023-03-03 19:39:11 +00:00
Svyatoslav Kuzmich 7175b9f31c [Wasm] Migrate usages of @JsFun to js("code") 2023-03-03 19:39:10 +00:00
Svyatoslav Kuzmich 71e6b19760 [Wasm] Support restricted version of js("code") (KT-56955) 2023-03-03 19:39:09 +00:00
Svyatoslav Kuzmich eb8c47343a [Wasm] Don't use js("code") in browser API
Use internal newJsObject to create new objects instead.

This is a preparation for restricted js("code") support (KT-56955)
2023-03-03 19:39:09 +00:00
Alexander Korepanov 9324cf3360 [JS IR] Support function type interfaces in incremental cache infrastructure
The patch removes logic of generating extra IrFiles (fake file) into
 IrModuleFragment for the function type interfaces during klib deserialization,
 because IC infrastructure can not process files which do not exist in klib.

 Instead of adding extra IrFiles during deserialization, the empty files
 with required packages are added into Kotlin/JS stdlib physically.
 These files are used as containers for function type interface declarations.

 Since Kotlin/WASM uses the same klib loading infrastructure as Kotlin/JS,
 the the empty files are added into Kotlin/WASM stdlib as well.

 The patch also adds a check that IrModuleFagment has files only from klib.

^KT-55720 Fixed
2023-02-03 12:23:48 +00:00
Svyatoslav Kuzmich abf70a586c [Wasm] stdlib API: make kotlin.assert internal
Being disabled by default
 and not well-documented, these functions cause confusion among early
 adopters as to why their code don't work properly.

Assert APIs need a proper design across Kotlin platforms.
 Since APIs are not available in common code and K/JS, it is premature
  to have such a general feature in a new experimental platform.

Compiler tests:
* Mute tests that rely on assert.
* Replace JVM-specific assert calls with require calls and unmute passed K/JS tests.

Merge-request: KT-MR-8636
Merged-by: Svyatoslav Kuzmich <svyatoslav.kuzmich@jetbrains.com>
2023-02-02 07:06:12 +00: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 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
Svyatoslav Kuzmich 983140ca04 [Wasm] stdlib NFC: suppress unchecked cast 2023-01-24 16:02:48 +01:00
Svyatoslav Kuzmich 72d9b8ddae [Wasm] stdlib NFC: Fix or suppress remaining warnings 2023-01-24 14:54:59 +01:00
Svyatoslav Kuzmich 238da4c793 [Wasm] stdlib NFC: Suppress cast warnings in org.w3c
Also fix dukat build and update copyright year in generated files.
2023-01-24 14:54:59 +01:00
Svyatoslav Kuzmich 7fed003531 [Wasm] stdlib: Remove unchecked cast in PrimitiveClasses::functionClass
This half-stub function is used for compatibility with Kotlin/JS
lowering and doesn't need full KClassImpl<Any> return type.
2023-01-24 14:54:59 +01:00
Svyatoslav Kuzmich dba5d401bb [Wasm] fdlibm NFC: Remove dead code in expm1
Fixes warning that value of y is never used before it is read.

Removed dead code is not present in FreeBSD codebase since at least 1994
https://github.com/freebsd/freebsd-src/blame/34ac629b40e68e5394fe0a27e47c73a875d9f8cb/lib/msun/src/s_expm1.c#L141
2023-01-24 14:54:59 +01:00
Svyatoslav Kuzmich d6a713ad39 [Wasm] fdlibm NFC: Remove dead code in __ieee754_pow
Fixes warnings.
i0 and i1 are not used in the original C code.
2023-01-24 14:54:59 +01:00
Svyatoslav Kuzmich 3acf371f8a [Wasm] fdlibm NFC: Replace division by zero with inf and NaN constants
Fixes warnings.
2023-01-24 14:54:59 +01:00
Svyatoslav Kuzmich 181e1023ed [Wasm] fdlibm NFC: Suppress name shadowing for "mutable parameters" 2023-01-24 14:54:59 +01:00
Svyatoslav Kuzmich 5faa430904 [Wasm] fdlibm NFC: Remove unnecessary variable initializers in
Fixes warnings.
These initializers were not in the original C code anyway.
2023-01-24 14:54:59 +01:00
Svyatoslav Kuzmich ffb8138ae2 [Wasm] stdlib NFC: Suppress warnings in _WasmArrays.kt 2023-01-24 14:54:59 +01:00
Ilmir Usmanov d18672bfb1 Wrap continuation with ContinuationImpl on callable references
in startCoroutineUninterceptedOrReturn. Otherwise, the coroutine will
not be interceptable later.

Add a test, which checks, that intercepted continuation is released.

 #KT-55869
2023-01-19 00:35:36 +00:00
Svyatoslav Kuzmich d14d4c8510 [Wasm] Support JsModule and JsQualifier 2023-01-13 21:58:34 +00:00
Alexander Udalov ae6d4d268d Use short copyright from COPYRIGHT_HEADER in generated files 2023-01-02 22:52:18 +01:00
Svyatoslav Kuzmich 9bc6b420a9 [Wasm][Stdlib] Add public APIs for linear memory access
Needed for interop with APIs that use linear memory.
2022-12-29 19:25:23 +00:00
Igor Yakovlev 35340f2f04 [Wasm] Fix stdlib String to Float parse 2022-12-29 11:57:47 +00:00
Igor Yakovlev 4bd187ccea [Wasm] Move ItemArrayLike w3c declarations into the right package 2022-12-29 11:57:44 +00:00
Svyatoslav Kuzmich 3bbd8c291a [Wasm] Add @WasmImport annotation
Imports top-level function from given module
2022-12-28 12:13:18 +01:00
Svyatoslav Kuzmich 7ec6608e29 [Wasm] Add Promise and support tests that return Promise
Co-authored-by: Ilya Gorbunov <Ilya.Gorbunov@jetbrains.com>

Merge-request: KT-MR-7717
Merged-by: Svyatoslav Kuzmich <svyatoslav.kuzmich@jetbrains.com>
2022-11-25 20:56:47 +00:00
Zalim Bashorov 7f8f7aa050 [Wasm] Revert ref cast and test instructions to be compatible with Binaryen 2022-11-25 15:31:48 +01:00
Igor Yakovlev c8306f1a3b [Wasm] Mark rotate functions with WasExperimental 2022-11-19 11:49:06 +01:00
Zalim Bashorov 2fc6cea681 [Wasm] Migrate to the new GC M6 instructions 2022-11-15 12:55:10 +01:00
Igor Yakovlev 210212c284 [WASM] Remove redundant parameters for w3c dynamic getters 2022-11-11 10:53:05 +00:00
Igor Yakovlev b6eb2b3620 [WASM] Add w3c bindings 2022-11-10 14:22:44 +00: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
Igor Yakovlev 346b2f162c [WASM] Optimize varargs without spreads 2022-11-01 13:15:11 +00:00
Igor Yakovlev 033e2c45f1 [WASM] Caching string literals in global pool 2022-11-01 13:15:09 +00:00
Artem Kobzar eb2326eabb [K/JS] Add ability to exclude declarations from export by a new annotation @JsExport.Ignore. 2022-10-03 11:07:25 +00:00
Ilya Gorbunov 57c9d61291 ComparableTimeMark and specialized TimeSource KT-54082
- Introduce ComparableTimeMark interface extending TimeMark,
and TimeSource.WithComparableMarks - a time source that returns such time marks.
- Implement ComparableTimeMark in ValueTimeMark and AbstractLong/DoubleTimeMark classes.
2022-09-19 19:16:40 +00:00
Igor Yakovlev c94a051c19 [WASM] Renew to Milestone 6 instructions set 2022-09-15 16:27:42 +00:00
Igor Yakovlev fff6b16483 [WASM] Wasm string.plus optimisations 2022-09-15 16:27:39 +00:00
Abduqodiri Qurbonzoda b388c7503b Advance Int/Long/Double.units deprecation level to ERROR #KT-53864 2022-09-11 23:49:07 +03:00
Abduqodiri Qurbonzoda 73a65c1bb1 Promote top-level kotlin.math.cbrt() to stable #KT-53277 2022-09-08 12:00:58 +00:00
Igor Yakovlev a0a66ffb96 [WASM] Refactoring wasm array copy functions 2022-07-08 16:29:45 +00:00
Igor Yakovlev 0ea7e8b70a [WASM] Add array copy intrinsic 2022-07-06 19:07:56 +00:00