Commit Graph

1473 Commits

Author SHA1 Message Date
Alexander Udalov 4bec1b08f9 IR: move IrElement.transform implementation to IrElementBase
To avoid extra indirection via `IrElement$DefaultImpls` for elements
whose `transform` uses the default implementation. And also, to simplify
migration to auto-generated IR tree.
2022-02-21 19:56:44 +01:00
Alexander Udalov 2ce91853ec IR: minor, extract declarations from IrElement.kt 2022-02-21 19:56:44 +01:00
Alexander Udalov 1303ac4848 IR: make IrGetValue.copyWithOffsets an extension function 2022-02-21 19:56:44 +01:00
Dmitry Petrov 7f95d7f414 IR make 'name' a var 2022-02-18 15:37:42 +00:00
Mikhael Bogdanov f05c72d48f KAPT+IR: Properly process annotations and backing field annotations 2022-02-17 12:26:42 +01:00
Ilmir Usmanov e8977d77e6 Do not count type parameters of inline class with generic underlying
value twice, when counting type parameters for inner class inside
init block.
 #KT-32162
2022-02-15 08:11:14 +01:00
Dmitry Petrov 732b8d4067 IR fix isMarkedNullable for DNN types 2022-02-15 05:20:42 +00:00
Dmitry Petrov 8274709621 IR fix substituteType for DNN type 2022-02-14 14:16:56 +00:00
Dmitry Petrov f5e4c72f06 IR fix IrType.makeNullable() for DNN type 2022-02-11 18:24:34 +00:00
Dmitry Petrov 53210770a6 IR use abstract classes in IrType hierarchy 2022-02-11 18:24:33 +00:00
Dmitry Petrov 7b18d69f5f FIR+JVM_IR DNN-related fixes 2022-02-11 18:24:33 +00:00
Dmitry Petrov a565a17f3e IR IrDefinitelyNotNullTypeImpl should not extend IrSimpleType 2022-02-11 18:24:31 +00:00
Alexander Udalov 17c8ac5440 IR: make IrLazyValueParameter.type/varargElementType lazy
This makes it a bit more apparent, in profiler snapshots, where
parameter types are really needed. Also, hopefully it will improve
performance somewhat in cases where types are not needed.

For example, before this change about 1/3 of the time of
`DefaultArgumentStubGenerator.lower` on JVM was actually computing types
of parameters from dependencies, even though the actual types were not
needed, only the presence of defaultValue was used. This made it the
most time-consuming lowering phase on JVM.

After this change, default argument lowering is thus 50% faster, however
this time is in part distributed among other lowerings that visit the
whole override hierarchy for all methods and really need the types of
parameters, e.g. BridgeLowering, SyntheticAccessorLowering. So the
profiler snapshots are now more "honest".
2022-02-10 14:49:30 +01:00
Alexander Udalov 7c172f5798 IR: minor, extract IrLazyValueParameter to a separate file 2022-02-10 14:49:30 +01:00
Ilmir Usmanov 47ee0e5b0a Get type arguments from supertype in supercall
Otherwise, when the function has inline class parameter, we get ICE.
We do not get the error without inline class parameter, since we
substitute type parameters in limited situations, which includes
inline class lowering.

 #KT-51157 Fixed
2022-02-10 10:40:55 +01:00
Dmitriy Novozhilov 52b72a7dac [FIR] Implement Int -> Long conversions for literals and operators over them
^KT-38895
^KT-50996 Fixed
^KT-51000 Fixed
^KT-51003 Fixed
^KT-51018 Fixed
2022-02-07 13:36:36 +03:00
Alexander Udalov 6379fe4c4c JVM IR: link via descriptors instead of signatures by default
Doing so speeds up psi2ir ~2 times, and thus improves total compiler
performance by about 6-8%.

Unless JVM IR is in the mode where linking via signatures is the only
way (-Xserialize-ir, -Xklib), signatures are actually not needed at all,
SymbolTable can use the frontend representation (descriptors for FE1.0,
and hopefully FIR elements for K2) as hash table keys. The only catch is
that since other backends still need to work with signatures, all the
common IR utilities, such as irTypePredicates.kt, need to work correctly
for IR elements both with signatures and without.

Also, introduce a fallback compiler flag -Xlink-via-signatures, in case
something goes wrong, to be able to troubleshoot and workaround any
issues.

 #KT-48233
2022-02-03 02:48:05 +01:00
Alexander Udalov 6e4131de8e IR: improve toString for symbols 2022-02-03 02:48:05 +01:00
Igor Chevdar c0715cfb0c [K/N][IR][caches] Fixed problems with inline classes
Fixes https://youtrack.jetbrains.com/issue/KT-50978
2022-02-02 22:46:16 +05:00
Dmitry Petrov 5bc8c1a600 IR refactor patch / validate declaration parent 2022-01-28 18:21:13 +00:00
Dmitry Petrov 08a946fd3f JVM_IR get rid of intermediate patch parent phases 2022-01-28 18:21:13 +00:00
Georgy Bronnikov 3f91674090 IR: inline and remove ...FromLinker methods from SymbolTable 2022-01-27 01:02:22 +03:00
Georgy Bronnikov b79e9c9f90 IR: Compute IrBasedDescriptor.isExpect where possible 2022-01-27 01:02:21 +03:00
Georgy Bronnikov 10c3429ce6 IR: remove dead code 2022-01-27 01:02:19 +03:00
Georgy Bronnikov 63359d8492 IR: use descriptor directly in IrLazyEnumEntryImpl
This works even when the symbol contains no descriptor
(as it does happen after deserialization).
2022-01-27 01:02:17 +03:00
Georgy Bronnikov 4d2bcf7e66 IR: compute file local signatures from descriptors 2022-01-27 01:02:16 +03:00
Georgy Bronnikov 3cc883cf7b IR: use DescriptorBySignatureFinder in DeclarationStubGenerator
Duplicating code that was used for the same purpose in
DeclarationStubGenerator is removed.
2022-01-27 01:02:14 +03:00
Dmitry Petrov e55f7459f4 JVM_IR drop StripTypeAliasDeclarationsLowering 2022-01-26 12:49:20 +00:00
Sergey Bogolepov 2306834b06 [K/N] Fix comparison of IrConstantPrimitiveImpl 2022-01-25 09:11:00 +00:00
Alexander Udalov 3e7b1c027f IR: make IrConst.copyWithOffsets an extension function
Co-authored-by: mcpiroman <mcpiroman@gmail.com>
2022-01-19 17:50:36 +01:00
Alexander Udalov 785eb83822 IR: refactor IrMemberAccessExpression internals
The idea is to keep the subclasses as simple as possible, to simplify
transition to auto-generated IR.

Co-authored-by: mcpiroman <mcpiroman@gmail.com>
2022-01-19 17:50:36 +01:00
Alexander Udalov 6f6bdd8aec IR: change acceptChildren/transformChildren order in IrClass
Traverse properties of supertypes first, and then handle thisReceiver.
This will simplify transition to auto-generated IR.
2022-01-19 17:50:35 +01:00
Alexander Udalov 4ecc5e517a IR: move some accept/acceptChildren/transformChildren to base classes
This will be helpful for the transition to auto-generated IR.

Co-authored-by: mcpiroman <mcpiroman@gmail.com>
2022-01-19 17:50:35 +01:00
Alexander Udalov 886545262b IR: use mutable lists in IrStringConcatenation, IrTry, IrVararg
Make addArgument/addElement/putElement extension functions. This will
simplify transition to auto-generated IR.

Co-authored-by: mcpiroman <mcpiroman@gmail.com>
2022-01-19 17:50:35 +01:00
Alexander Udalov 9ee570ae54 IR: update copyright in ir.tree declarations and expressions
To simplify review of the upcoming IR tree generator.

Note that copyright is dated 2021, since that's in
license/COPYRIGHT_HEADER.txt which is used by generators.
2022-01-19 17:50:35 +01:00
Alexander Udalov f17fc67683 IR: split files containing multiple classes/functions
This change only moves code around, no behavior is changed.
Specifically, ir.tree sources containing several declarations are split
into several files: one file per class, and one file for all extension
functions per package (IrDeclarations.kt, IrExpressions.kt,
IrVisitors.kt, IrConstructorCallTypeArguments.kt).

This is useful because after introducing IR tree generator, we can
easily see how generated sources are different from those which were
written manually, since Git will recognize file moves. Also, it will
keep Git history for sources which consisted of one big class + a couple
of extension functions (e.g. IrElementVisitorVoid.kt).
2022-01-19 17:50:35 +01:00
Alexander Udalov e4b63d4a2b IR: minor, rename some files to keep git history 2022-01-19 17:50:35 +01:00
Alexander Udalov 6445a29893 IR: remove type parameter in visitConst
Co-authored-by: mcpiroman <mcpiroman@gmail.com>
2022-01-19 17:50:35 +01:00
Alexander Udalov 81106526b1 IR: remove IrConstantObject.putArgument, IrConstantArray.putElement
Change `valueArguments` and `elements` types to be mutable lists. This
will simplify IR tree generator.
2022-01-19 17:50:35 +01:00
Evgeniy.Zhelenskiy e97ca2ada4 [Psi2Ir, Fir2Ir] Generate toString, hashCode, equals methods for MF VC 2022-01-14 13:51:57 +00:00
Irene Dea 13bff10567 Fix union related failures. 2022-01-08 15:26:44 +03:00
Irene Dea a98e2c4e03 Fix failed tests 2022-01-08 15:26:44 +03:00
Irene Dea 19bfc43bee Fixes and refactors 2022-01-08 15:25:07 +03:00
Irene Dea f2a351367c Implement unionTypeAttributes and replaceTypeAttributes in ConeInferenceContext 2022-01-08 15:25:07 +03:00
Irene Dea 56d817b49f Union type attributes for common super type calculation 2022-01-08 15:25:07 +03:00
Dmitry Petrov 1e5fc1c3aa JVM_IR KT-27427 use checkNotNull with message in checked casts
This would prevent extra branching in 'as <not-null-type>', which
usually would not be covered.
2021-12-30 13:41:21 +03:00
Dmitry Petrov 5946242d75 JVM_IR fix special bridges in mixed Java/Kotlin hierarchies
KT-50257 KT-50476
2021-12-29 13:29:19 +00:00
Roman Artemev 93e7eb2a8e [JS IR] Cleanup StageController & Lowerings magic a bit 2021-12-24 16:50:47 +03:00
Roman Artemev 7341a17a5d [IR] Cleanup ir serialization 2021-12-24 16:50:44 +03:00
Roman Artemev 4babc30624 [IR] Remove Persistent IR 2021-12-24 16:50:42 +03:00