Commit Graph

85252 Commits

Author SHA1 Message Date
Mikhail Glukhikh 12726bde15 Deprecate smart cast on alien derived property #KT-48101 Fixed 2021-08-24 12:32:30 +03:00
Mikhail Glukhikh 3f8734f694 FIR: determine synthetic accessor modality more precisely
Related to KT-47542
2021-08-24 12:32:30 +03:00
Mikhail Glukhikh bbb76aae3f Provide more precise check for ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED
#KT-47542 Fixed
2021-08-24 12:32:30 +03:00
Svyatoslav Scherbina 7f12cda233 Native: quick fix lazy init order problem
Initialize main-thread-bound properties along with shared properties

^KT-48364 Fixed
2021-08-24 09:24:16 +00:00
Svyatoslav Scherbina ff46a63ffa Native: quick fix lazy init boxing issue
FileInitializersLowering shouldn't expect codegen to initialize field
statically if constant literal is going to be boxed

^KT-48364
2021-08-24 09:24:16 +00:00
Sergey Bogolepov 9dd8266bee [K/N] Add trivial test for llvm.objc.clang.arc.use lowering 2021-08-24 10:19:33 +03:00
Sergey Bogolepov 690d0689a1 [K/N] Add ObjCARCContract LLVM pass. 2021-08-24 10:19:31 +03:00
Sergey Bogolepov 1eb960783a Bump native version
The new version has MinGW enabled as cross-target.
2021-08-24 11:05:39 +07:00
Roman Artemev 22cd20781e [JS IC] Support per-file invalidation in CLI
- now disabled
2021-08-24 01:09:18 +03:00
Roman Artemev 001d3d8bc2 [JS IC] Implement per-file cache invalidation algorithm
- track inline graph
 - not finished yet, it's a POW
2021-08-24 01:09:18 +03:00
Roman Artemev cccca56c18 [JS IC] Implement inline call graph tracker and inline hash computer 2021-08-24 01:09:17 +03:00
Roman Artemev 1f11aa00c0 [JS IC] Implement IC cache provider and consumer to access IC data 2021-08-24 01:09:16 +03:00
Roman Artemev 76690c081a [KLIB] Provide required API for IC invalidation 2021-08-24 01:09:16 +03:00
Roman Artemev 4ad2572085 [JS IC] Delete only PIR related part of IC Cache, not the whole dir 2021-08-24 01:09:14 +03:00
Roman Artemev 03b66ab51e [IR] Add API into IdSignature to filter inaccessible function in IC 2021-08-24 01:09:14 +03:00
Roman Artemev 35e16d2db6 [JS IC] Extract PIR cache IO into separate functions 2021-08-24 01:09:13 +03:00
Roman Artemev 7d8c86caf1 [KLIB] Add API to access file's part of data as ByteArray
It requires for computing fingerprint of IrFile in IC infra
2021-08-24 01:09:12 +03:00
Roman Artemev e4c2d4937f [KLIB] Extract signature deserialization into separate class 2021-08-24 01:09:11 +03:00
Steven Schäfer f05f9882ab IR: Handle annotation instantiations in constructor calls 2021-08-23 23:04:35 +02:00
Steven Schäfer fc6c2c9631 jvm-abi-gen: Reformat files and add comments 2021-08-23 18:25:33 +02:00
Steven Schäfer 023db4f376 jvm-abi-gen: Use the configured MessageCollector to write ABI jars 2021-08-23 18:25:33 +02:00
Steven Schäfer 6d518c8e57 JVM IR: Mark annotation implementation classes as anonymous
And add tests to ensure that annotation implementation classes are
handled correctly in jvm-abi-gen.
2021-08-23 18:25:33 +02:00
Steven Schäfer 19660f11a7 jvm-abi-gen: Remove WhenMapping classes from ABI if possible 2021-08-23 18:25:33 +02:00
Steven Schäfer ec4d7b2bb6 jvm-abi-gen: Add tests for uses of private Kotlin classes from Java 2021-08-23 18:25:33 +02:00
Steven Schäfer 8de6a5224f jvm-abi-gen: Mark annotation implementation classes as public...
...if they are used from public inline functions in the same file.
2021-08-23 18:25:33 +02:00
Steven Schäfer 6756420725 jvm-abi-gen: Add tests for KT-40133 and KT-40340 2021-08-23 18:25:33 +02:00
Steven Schäfer 5059513106 jvm-abi-gen: Strip inline functions in private classes
Inline functions in private classes can only be accessed from Java and
we do not need to preserve their bodies for the abi.
2021-08-23 18:25:33 +02:00
Steven Schäfer 3ffe495346 jvm-abi-gen: Mark all anonymous objects in inline function scope as public
Anonymous objects inside of a private inline function nested in a public
inline function can still escape.
2021-08-23 18:25:33 +02:00
Steven Schäfer d94817cfb6 jvm-abi-gen: Don't strip nested classes from the Kotlin Metadata 2021-08-23 18:25:33 +02:00
Steven Schäfer 4a59af3b8b jvm-abi-gen: Update metadata version if needed 2021-08-23 18:25:33 +02:00
Steven Schäfer 1b5214a2dc JVM: Fix usage of ClassBuilder API in AnonymousObjectTransformer 2021-08-23 18:25:33 +02:00
Steven Schäfer c156613141 jvm-abi-gen: always keep annotation classes 2021-08-23 18:25:33 +02:00
Steven Schäfer c9b0cc5b32 JVM: Only produce inline SAM wrappers in public inline scope 2021-08-23 18:25:33 +02:00
Steven Schäfer 50bbf4f269 JVM IR: Remove special descriptor origin for lambdas.
This was a hack to allow plugins to identify anonymous classes in
inline function scope. However, this stopped working for anonymous
objects with the introduction of IrBasedDescriptors and became redundant
with the public ABI bit in the Kotlin Metadata annotation.
2021-08-23 18:25:33 +02:00
Steven Schäfer 8efb955ab5 JVM: Add more tests to jvm-abi-gen 2021-08-23 18:25:33 +02:00
Steven Schäfer d08990ebb4 JVM: New single-pass implementation for jvm-abi-gen 2021-08-23 18:25:33 +02:00
Steven Schäfer a54503cede JVM: Add an extension point for file output 2021-08-23 18:25:33 +02:00
Steven Schäfer de9d2919a8 JVM Metadata: Add a bit to mark anonymous objects in inline functions
Anonymous objects in the scope of an inline functions are copied to
all call-sites. This makes them part of the public ABI of a Kotlin
library.

We introduce a flag to mark all classes in the scope of an inline
function. When compiling with assertions enabled, we check that
this flag is set whenever we inline an anonymous object from another
module.
2021-08-23 18:25:33 +02:00
Sergey Bogolepov 254fc53b17 [K/N] Disable mimalloc for MinGW on Linux and Windows
There is a case-sensitivity problem when cross-compiling to MinGW.
https://github.com/microsoft/mimalloc/commit/71ac98a fixes the problem,
but it is not included into our current version of mimalloc.
2021-08-23 16:01:37 +00:00
Sergey Bogolepov c50ae1ffe6 [K/N] Don't check for MSVC on Linux and macOS hosts 2021-08-23 16:01:36 +00:00
Sergey Bogolepov 1381221ef8 [K/N] Use smaller mingw-w64-i686 toolchain as well 2021-08-23 16:01:36 +00:00
Sergey Bogolepov 1315fdaf56 [K/N] Proper MinGW cross-compilation support 2021-08-23 16:01:36 +00:00
Sergey Bogolepov 6953d29922 [K/N] Use smaller mingw-w64-x86_64 toolchain
We don't need LLVM components there anymore because they live in
a separate dependency now.
2021-08-23 16:01:35 +00:00
Ilya Chernikov caa44e413d Abstract FIR cli pipeline from core environment and related entities 2021-08-23 16:50:40 +03:00
Dmitriy Novozhilov 40614507d3 [FE 1.0] Report warning about new IL operator resolve in initializers and default values
^KT-48361 Fixed
2021-08-23 16:20:41 +03:00
pyos a15a5aa429 JVM_IR: generate instance fields even when reification is needed
The inliner supports that, we just need to generate the reification
markers on GETFIELD to instance fields.
2021-08-23 14:27:51 +02:00
Ilmir Usmanov c01c356817 Do not extend LVT ranges during inplace arguments inlining
Otherwise, R8 does not transform kotlin-reflect, failing bootstrap.
Leaving end label the same is safe, since we do not remove labels during
transformation.
2021-08-23 11:51:30 +00:00
Mikhael Bogdanov 92e94a4068 Add JDK 17 test configuration 2021-08-23 13:48:35 +02:00
Dmitriy Novozhilov 27ac7dbf9a [Test] Unmute passing codegen tests 2021-08-23 14:29:12 +03:00
pyos 17afe1b546 Fail on redundant IGNORE_BACKEND directives, as before 2021-08-23 14:29:10 +03:00