Leonid Startsev
ccdb6fc599
Fix .equals for instantiated annotations with unsigned array types.
...
#KT-53876 Fixed
2022-10-03 13:54:06 +00:00
Pavel Kunyavskiy
ea3713f051
Fix building fake overrides for sam and function references
2022-09-30 08:48:59 +00:00
Pavel Kunyavskiy
817dba8564
[K/N] Use suspend function desugaring lowerings.
2022-09-30 08:48:58 +00:00
Pavel Kunyavskiy
8886e1b8b4
Move Js suspend functions lowerings to common code
2022-09-30 08:48:57 +00:00
pyos
2dd49e5fb4
JVM_IR: unwrap suspend views when generating SAM wrappers
...
If the super class is in a file that has already been lowered, the base
method has an extra continuation parameter which breaks things.
Also, SAM wrappers around functional objects are tail-call and do not
need continuations ever, so don't even try.
^KT-50950 Fixed
2022-09-23 21:55:00 +02:00
Artem Kobzar
73e7053c35
[K/JS] Use only single variant of default arguments function wrapper for exported and not-exported functions
2022-09-19 17:49:04 +00:00
Leonid Startsev
033538161e
Determine more precise conditions when to enable serialization intrinsic
...
Disable it if we do not have required `noCompiledSerializer` function in
runtime. Leave it enabled in tests.
Rollback some changes for old backend as it is unsupported now.
2022-09-16 14:34:30 +00:00
Leonid Startsev
ad2adadb36
Remove OperationType.PLUGIN_DEFINED type:
...
instead, plugins should emit the code similar to the TYPE_OF one with
a special call to MagicApiIntrinsics.voidMagicApiCall directly afterwards.
This is required because old compiler need to correctly inline code
rewritten by plugin.
2022-09-16 14:34:29 +00:00
Leonid Startsev
763303fe97
Refactor extensions for plugin intrinsics entry points
...
so platform-specific parts won't have unsafe downcasts.
2022-09-16 14:34:29 +00:00
Leonid Startsev
a59f5f407b
Introduce support for plugin-defined intrinsics in JVM IR backend:
...
Add intrinsic for kotlinx.serialization.serializer<T>() function.
Plugin intrinsic for old backend is removed because it is too hard
and unjustifiable to unify them.
2022-09-16 14:34:28 +00:00
Igor Yakovlev
95396eb61a
[WASM] When expressions optimisations for String and Int constant cases
2022-09-15 16:27:39 +00:00
Andrey Uskov
d223dafc45
Don't wrap ProcessCanceledException with other exceptions
...
ProcessCanceledException indicates that the compilation process was
terminated by user. This kind of exception should not be wrapped anyhow
in order to be handled on toplevel in CLICompiler.
#KT-38483 Fixed
2022-09-13 10:32:49 +00:00
Alexander Korepanov
01507281a2
[Common IR] Forward the extension receiver in the reified wrapper
...
^KT-53672 Fixed
2022-09-05 07:40:30 +00:00
Svyatoslav Scherbina
f8462f1b0c
Native: allow virtual calls in CoroutineLaunchpad intrinsic
...
This intrinsic was always calling the supplied suspend function
non-virtually, and this was hardcoded in the intrinsic generator.
Now this can be configured with `superQualifierSymbol` in the respective
IrCall, just the way this works with any other calls.
As a side effect, global optimizations now process this intrinsic more
correctly (before that, they didn't take the intrinsic generator into
account, and treated the call as virtual).
2022-09-01 09:35:23 +00:00
Artem Kobzar
8e17c39cc9
[K/JS] fix(KT-53569): skip double traversing for nested annotation classes.
2022-08-18 16:39:48 +00:00
Pavel Kunyavskiy
5034581788
[K/N] Fix references for inline function
...
Corresponding lowering creating wrappers from JS Backend was used.
Also, the lowering was changed to create local function, instead of
normal one in outer scope, as a lot of logic from local declarations
lowering should be duplicated otherwise for correct type parameters
handling.
^KT-38535
2022-08-18 13:23:10 +00:00
Leonid Startsev
89329a0e1b
Introduce @FirIncompatiblePluginApi
2022-08-17 11:43:35 +00:00
Leonid Startsev
467ff30aac
Support full pipeline for basic kotlinx.serialization case:
...
FIR frontend and IR backend plugins.
Note: IR plugin is now broken for old FE, fixed in subsequent commits
2022-08-17 11:43:34 +00:00
Leonid Startsev
cefc372632
Remove BindingContext, KotlinType and *Descriptor from IR plugin dependencies
2022-08-17 11:43:34 +00:00
Pavel Mikhailovskii
8ba80b4b7b
KT-1436 Allow break/continue in inlined lambdas
2022-08-11 10:38:23 +00:00
Alexander Korepanov
bb8da65188
[Common IR] Do inlining of callable references of inline functions
...
^KT-52805 Fixed
2022-08-08 17:40:45 +00:00
Pavel Kunyavskiy
3424e756ad
[K/N] Fix for instantiating annotations from already lowered file
...
If annotation class is already lowered, it can have more than one
constructor. So we should use primary one, not any one.
^KT-53475
2022-08-08 16:35:22 +00:00
Igor Chevdar
c5eb6fb562
[IR] Fixed a bunch of bugs near local objects in inline lambdas
2022-08-08 08:39:58 +00:00
Igor Chevdar
7e4f94ed2c
[IR] Fix for per-file caches support in K/N
2022-08-06 17:40:25 +00:00
Igor Chevdar
030e3b306f
[K/N][build] Added -Xmake-per-file-cache compiler option
2022-08-06 17:40:24 +00:00
Steven Schäfer
03aee58585
JVM IR: Avoid IrComposite in ReturnableBlockLowering (KT-53202)
2022-08-03 00:19:31 +02:00
Steven Schäfer
7e472301b6
Re-enable "JVM IR: Move direct invoke optimization into a separate pass"
2022-07-29 01:06:44 +02:00
Steven Schäfer
6f0ff6aeb0
IR: Fix scope transparency in ReturnableBlockLowering
...
An IrReturnableBlock introduces a new variable scope and shouldn't be
replaced with a transparent IrComposite block.
2022-07-29 01:06:44 +02:00
Igor Chevdar
92109a6bef
[IR][inliner] Reworked local classes in inline lambdas
...
#KT-52795 Fixed
2022-07-28 16:01:18 +00:00
Alexander Udalov
b50d2ff20a
Revert "JVM IR: Move direct invoke optimization into a separate pass"
...
This reverts commit f0760e0550 .
The reason is that it leads to KT-53202.
2022-07-15 18:29:07 +02:00
Steven Schäfer
f0760e0550
JVM IR: Move direct invoke optimization into a separate pass
...
This also changes the transformation to inline the body of a directly
invoked lambda rather than producing a call to an anonymous local
function. The latter is unsupported in inline functions and problematic
from an ABI perspective, since it results in functions whose name
depends on the entire source code up to this point.
2022-07-14 23:24:18 +02:00
Steven Schäfer
f0238766df
JVM IR: Avoid patchDeclarationParents after inlining
...
The code in IrInlineUtils.kt already updates declaration parents.
2022-07-14 23:24:18 +02:00
Pavel Kunyavskiy
5cdda48487
[K/N] Extract const val initializers to place of usage
...
This would make behaviour more consistent with jvm. There is still
a difference in behaviour about point where side effects happen.
^KT-52970
2022-07-13 08:49:40 +00:00
Pavel Kunyavskiy
c1ec1d9d4c
[K/N] Handle Unit? and Nothing? correctly in finally transformation
...
^KT-52985
2022-07-05 06:54:29 +00:00
Pavel Kunyavskiy
dc48d722fe
[K/N] Use common FinallyBlocksLowering for Native
2022-07-05 06:54:27 +00:00
Pavel Mikhailovskii
c3c09aa95a
KT-4107 Data objects
2022-06-28 16:58:20 +02:00
Pavel Kunyavskiy
dfcf2cfa84
[K/N] Fix extracting local classes from lambda in cached inline function
...
^KT-52540
2022-06-27 14:09:27 +00:00
Dmitriy Novozhilov
76622097e4
[IR] Introduce new functions for referencing declarations from IrPluginContext
...
Those functions take `ClassId` and `CallableId`, which is more correct
than using just `FqName`.
Also implement those functions for `Fir2IrPluginContext`
2022-06-16 13:43:50 +00:00
Dmitriy Novozhilov
a30216c655
[IR] Mark methods with descriptors of ReferenceSymbolTable with @ObsoleteDescriptorBasedAPI
...
Also remove optIn annotation from IrPluginContext.symbolTable
2022-06-16 13:43:49 +00:00
pyos
7bdc09301d
JVM: add inline lambdas' captured parameters to constructor first
...
This makes the code a bit cleaner, but has no effect other than that.
2022-06-13 11:58:15 +02:00
Pavel Mikhailovskii
bcd8a28d4c
KT-47823 IR.JVM Fix handling of for loop ranges with inline types and break/continue/return
2022-06-10 18:42:28 +00:00
Pavel Mikhailovskii
ecb3cc193c
KT-51883 Don't use "-" in generated unique lifted declaration names
2022-06-10 18:36:04 +00:00
Ivan Kylchik
f3252334b2
Move most of ir utils from backend.common to ir.tree
2022-05-18 21:20:03 +03:00
Ivan Kylchik
20d0a531df
Add new tests to check evaluation of intrinsic сonsts
2022-05-18 21:20:02 +03:00
Ivan Kylchik
dca22d745a
Drop excessive lowerings that are replaced by ConstEvaluationLowering
2022-05-18 21:20:02 +03:00
Ivan Kylchik
44cf64a00c
Convert const values in ranges without explicit cast
2022-05-18 21:20:01 +03:00
Ivan Kylchik
fac98b7787
Add possibility to dump lowered ir in tests before lowering execution
2022-05-18 21:20:00 +03:00
Ivan Kylchik
1431d4b356
Add jvm diagnostic tests to check report of exceptions from interpreter
2022-05-18 21:20:00 +03:00
Ivan Kylchik
2dcfe219be
Move string concat folding into FlattenStringConcatenationLowering
...
Originally `FoldConstantLowering` is responsible for this, but it can
be removed in the future.
2022-05-18 21:19:58 +03:00
Ivan Kylchik
d0ab01ad24
Add lowering that will evaluate all intrinsic const expressions
2022-05-18 21:19:56 +03:00