Roman Artemev
f05c8ad953
[JS IR] Fix js("...") call checker in frontend.
...
Call mather relies on that BuiltIn package fragment implement specific
interface `BuiltInsPackageFragment` which was missed. Make sure that
BuiltIn module's package fragments implement that interface.
Fix progression optimizer symbols resolve in JS & WASM IR BE
2021-09-28 18:15:51 +03:00
Svyatoslav Kuzmich
dd45714137
[Wasm] Add property reference stdlib part
2021-09-27 17:08:55 +03:00
Svyatoslav Kuzmich
5c05ff48ff
[Wasm] Copy property reference lowering from K/N
2021-09-27 17:07:39 +03:00
Svyatoslav Kuzmich
33314b25c0
[Wasm] Add function interface replacer lowering
...
Replace function interface super types with runtime interfaces.
Needed for interface calls machinery.
2021-09-27 17:06:41 +03:00
Vyacheslav Gerasimov
ab146bd6d4
Build: Fix deprecated Gradle configurations usages
...
for migration to Gradle 7+ #KTI-559
2021-09-26 18:28:44 +03:00
Svyatoslav Kuzmich
a2bfcfeae8
[Wasm] Do not erase interfaces down to Any type in Wasm signature.
...
This enables overloading virtual methods with different interface types
2021-09-22 19:49:44 +03:00
Svyatoslav Kuzmich
6db7154876
[Wasm] Build bridges for non-virtual functions that implement interfaces
2021-09-22 19:49:43 +03:00
Igor Yakovlev
41a69ad388
[WASM] Add receiver capturing to callable references
2021-09-20 19:08:22 +03:00
Igor Yakovlev
b8d11f7938
[WASM] Add text section to implement debug info
2021-09-20 19:08:21 +03:00
Igor Laevsky
e23b4df519
[WASM] Remove workaround for frontend bug
2021-09-17 19:17:45 +03:00
Igor Laevsky
6432388778
[WASM] Don't handle ref.cast of nulls. Spec was updated a while ago
2021-09-16 20:24:45 +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
9685695769
[WASM] Fold redundant patterns with drop instruction on a wasm level
2021-09-16 20:24:43 +03:00
Svyatoslav Kuzmich
a32b86d016
[Wasm] Simple support for external classes and interfaces
...
* Map these types to Wasm externref
* Don't generate any declaration code for now
Casting and accessing members is not supported yet
2021-09-16 14:20:35 +03:00
Svyatoslav Kuzmich
35a5c9ea71
[Wasm] Support exporting functions via @kotlin.js.JsExport
...
Previously we exported main function only.
Extend this feature to arbitrary number of annotated functions.
Type restrictions and conversions are similar to imported functions.
2021-09-16 14:20:35 +03:00
Svyatoslav Kuzmich
c0d48e3417
[Wasm] Support external functions
2021-09-16 14:14:58 +03:00
Igor Laevsky
ef2970a888
WASM: Cover frontend issue where unit-type is casted to the non-unit type
2021-09-08 19:56:36 +03:00
Igor Laevsky
4299915326
WASM: Implement finally blocks for try/catch'es
2021-09-08 19:56:36 +03:00
Igor Laevsky
d99473fe4d
WASM: Canonicalize catches without finally blocks
2021-09-08 19:56:35 +03:00
Igor Laevsky
02aed80e18
WASM: Implement simple try/catch codegen
2021-09-08 19:56:34 +03:00
Igor Laevsky
6ca965af6f
WASM: Generate throw instruction instead of wasmThrow call
2021-09-08 19:56:33 +03:00
Igor Laevsky
2ef5fd95db
WASM: NFC. Rename statementToWasmInstruction into generateStatement
2021-09-08 19:56:32 +03:00
Igor Laevsky
3ecf9306b1
WASM: NFC. Move IrBlockBody visit into body builder
2021-09-08 19:56:31 +03:00
Igor Laevsky
a246ec636e
WASM: Stupidify unit handling
...
Now every IR instruction returns an actual Unit instance.
All Unit's are actual objects passed around except for function boundaries.
2021-09-08 19:56:29 +03:00
Igor Laevsky
37874b1937
WASM: Lower expression bodies into block bodies
2021-09-08 19:56:27 +03:00
Svyatoslav Kuzmich
b79719d6f5
[Wasm] Fix unit issues
...
- Materialize unit when its value is actually needed.
- Special-case Unit_getInstance return type at codegen. It should be a
proper Unit object instead of a "void"
2021-09-08 19:56:26 +03:00
Alexander Udalov
8d4f26cf84
IR: use inlineClassRepresentation in getInlineClassUnderlyingType
...
Looking for the primary constructor manually doesn't work if it's
private in the other module on JVM, because private declarations are
skipped in IrLazyClass.
2021-08-24 12:28:31 +02:00
Ting-Yuan Huang
e75ca75e3e
K2JsIrCompiler: hoist common front-end preparation logic
...
Instead of creating ModuleStructure and run analysis in each backend,
the common preparation logic is moved into K2JsIrCompiler.doExecute().
2021-08-12 18:01:56 +03:00
Tianyu Geng
684ef871ee
FIR: unify common special names scattered around the code base
2021-08-06 22:57:17 +03:00
Igor Laevsky
5db8ec6551
WASM: Don't use intrinsics to specify NaN's
2021-08-06 17:34:21 +03:00
Igor Laevsky
d8569b6a03
WASM: NFC. Remove dead code
2021-08-04 16:23:38 +03:00
Igor Laevsky
80140207b5
WASM: Properly handle nullable exported strings
2021-08-04 16:23:36 +03:00
Igor Laevsky
2538caa84f
WASM: NFC. Rename string import/export functions
2021-08-04 16:23:31 +03:00
Igor Laevsky
ebde1e5491
WASM: Crude println implementation with the wasm-native strings
2021-08-04 16:23:30 +03:00
Igor Laevsky
fc0ae851a2
WASM: Don't special case string equality, it now goes through normal .equals method
2021-08-04 16:23:29 +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
Ilya Chernikov
dee0487185
IR: Refactor IrBuiltIns to abstract it from descriptors
2021-07-16 02:24:18 +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
Roman Artemev
0a49b24320
[JS IR] Move klib resolution from cli into compiler
...
Simplify CLI -> Compiler API
Clean up code
2021-07-13 14:43:40 +03:00
Alexander Udalov
d33debdf7c
IR: minor, cleanup Symbols
2021-07-10 15:33:25 +02:00
Igor Laevsky
ce6459d059
WASM: Optimize few cases where spread operator is used on an immediate array
2021-07-02 15:39:30 +03:00
Igor Laevsky
d835b3c164
WASM: Implement spread operator
2021-07-02 15:39:29 +03:00
Igor Laevsky
f5e59194b5
WASM: Fix linker issues around fake overrides
2021-07-02 15:39:28 +03:00
Alexander Udalov
2834c22a85
IR: add BackendContext.typeSystem and JvmIrTypeSystemContext
...
To be able to override JVM-specific behavior of IrTypeSystemContext in
JVM IR, for things like JVM flexible types.
2021-07-01 19:35:44 +02:00
Roman Artemev
a8d0e60328
[JS TESTS] Extend test frame with some features
...
- Setting up specific ABI version for module
- Disabling mangle verification
2021-07-01 17:40:40 +03:00
Alexander Udalov
8b3769b88e
Remove dependency of ir.serialization.common on ir.backend.common
2021-06-01 20:28:22 +02:00
Svyatoslav Kuzmich
ccc27b6a0c
[IR] Add module property to IrFile
2021-04-26 18:52:42 +03:00
Alexander Udalov
988d1365a8
Remove dependency of backend.wasm on ir.tree.impl and ir.tree.persistent
2021-04-14 13:47:02 +02:00