Mikhail Glukhikh
ed035d99ab
Migrate -Xopt-in to -opt-in in Gradle Kotlin scripts
2021-09-03 15:40:47 +03:00
Dmitry Petrov
b669de1663
JVM_IR generate range-based loop closer to Java counter loop
...
KT-48435 KT-48507
2021-09-03 10:38:20 +03:00
Alexander Udalov
0a10cec579
Remove obsolete -X compiler arguments for JVM backend
...
-Xno-exception-on-explicit-equals-for-boxed-null
-Xstrict-java-nullability-assertions
-Xuse-old-spilled-var-type-analysis
-Xpolymorphic-signature
2021-09-02 22:11:22 +02:00
Alexander Udalov
1864716c83
Remove -Xnormalize-constructor-calls
...
Constructor call normalization is enabled by default since 1.3.
2021-09-02 22:11:22 +02:00
Sergej Jaskiewicz
be999564b1
[JS IR] Export nested objects
...
Companion objects are exported as ParentClass.Companion.
Companion object's members are not exposed to its parent class —
one must reference the companion object explicitly if they want to
access its members.
#KT-43783 Fixed
2021-09-02 14:40:15 +03:00
Georgy Bronnikov
22a6dc0320
JVM_IR: lock IrLazySymbolTable ops
2021-09-01 17:28:21 +03:00
Georgy Bronnikov
a4cebeea36
JVM_IR: use IrBuiltIns instead of descriptor in IrTypeMapper
2021-09-01 17:28:18 +03:00
Georgy Bronnikov
2f697e9195
JVM_IR: avoid recursive constructor calls in ClassCodegen
2021-09-01 17:28:15 +03:00
Georgy Bronnikov
570e20696c
IR: use synchronized access when creating initial signature stub
2021-09-01 17:28:11 +03:00
Mikhael Bogdanov
19474ee30f
Support large strings in indy-with-constants concatenation
...
#KT-47917 Fixed
2021-09-01 14:03:56 +00:00
Leonid Startsev
1932546a90
Support instantiation of annotations in JS
...
#KT-47700 Fixed
2021-09-01 11:13:55 +00:00
Alexander Udalov
ffe0d9de70
Psi2ir: do not sort descriptors for fake override generation
...
Descriptors are already supposed to be sorted in scopes. The problem is
that rendering descriptors for sorting takes a lot of time (~1.5% of
total compilation time of intellij with JVM IR), and simple heuristics,
like comparing by names first, don't fully help with it.
#KT-48233
2021-08-31 20:25:59 +02:00
Alexander Udalov
cc52832943
JVM IR: fix incorrect type of IrCheckNotNull intrinsic
...
It is not correct to assume that arg0 has been generated to have the
same IrType as the whole expression.
The reason it only backfired in throwing exceptions probably has to do
with the fact that visitThrow might be the only place in
ExpressionCodegen right now which uses the IrType from PromisedValue to
make a decision on whether to generate checkcast.
It seems suspicious that ExpressionCodegen.visitFieldAccess/visitCall
return PromisedValue whose IrType mentions type parameters which are
declared outside of the call site, but that should probably be
investigated separately.
#KT-48440 Fixed
2021-08-31 18:45:23 +02:00
Dmitry Petrov
1c1b9547c1
JVM_IR KT-48435 use Java-like counter loop when possible
2021-08-31 16:39:25 +03:00
Alexander Udalov
04c5bbdcf8
JVM IR: change generation scheme of property $delegate methods
...
Generate $delegate method as instance method in
PropertyReferenceDelegationLowering, and remove dispatch receiver later
in MakePropertyDelegateMethodsStatic. The method needs to be static to
be non-overridable (see delegateMethodIsNonOverridable.kt), and public
to be accessible in reflection.
Otherwise we generated incorrect IR where a static function accessed an
instance field of the containing class, which failed in multiple places
including LocalDeclarationsLowering.
#KT-48350 Fixed
2021-08-31 14:07:22 +02:00
pyos
5e4f022c59
JVM_IR: use nullability when boxing/unboxing inline class types
...
Given inline class V(Any?), a coercion from (Object, V) to (Object, V?)
is boxing.
In theory, the same issue in the old backend can be fixed by making
`KotlinTypeMapper.mapUnderlyingTypeOfInlineClassType` use
`computeExpandedTypeForInlineClass`, but for some reason this breaks a
lot of stuff.
#KT-48430 Fixed
2021-08-31 12:05:34 +03:00
Ilmir Usmanov
1f8dd45c2b
Remove experimental coroutines support. Part 2
2021-08-30 14:21:57 +03:00
Dmitry Petrov
c2b575505a
JVM_IR KT-48432 fix overflow in const-bound range optimization
2021-08-27 16:42:52 +03:00
Igor Chevdar
ce44403d1b
[K/N][IR][codegen] Made lazy init logic JVM-like
...
Now a file will be initialized only if a top level function has been called
rather than any function like was before the commit
2021-08-27 18:22:52 +05:00
Dmitry Petrov
7df5ebf6ee
JVM_IR KT-48433 don't generate null check on 'this$0' parameter
2021-08-26 20:06:20 +03:00
Dmitry Petrov
dd98f72fd7
JVM_IR KT-42010 use IINC for postfix int increment/decrement
2021-08-26 20:06:19 +03:00
Georgy Bronnikov
ef72413da9
Revert "JVM_IR: use computeIfAbsent in ClassCodegen.getOrCreate()"
...
This reverts commit 32518eee4b .
Reason: the commit causes lockups in ClassCodegen.
2021-08-26 17:52:42 +03:00
Ilya Goncharov
acb7ba86bc
[JS IR] Add vararg to state machine building
...
^KT-48344 fixed
2021-08-26 08:52:34 +00:00
Ilya Goncharov
ee712b2770
[JS IR] Invokes which is not concrete suspend not wrap into function call
2021-08-26 08:50:13 +00:00
Dmitriy Novozhilov
7e6e0a3dd6
Remove all type system-specific inheritors of TypeCheckerState
2021-08-26 10:08:51 +03:00
Dmitriy Novozhilov
3f6738c8bc
Remove all type system dependent methods from TypeCheckerState
2021-08-26 10:08:51 +03:00
Dmitriy Novozhilov
e07512a847
Delegate refineType and prepareType in TypeCheckerState to special services
...
This is needed to add ability to create type system independent TypeCheckerState
2021-08-26 10:08:51 +03:00
Dmitriy Novozhilov
8b5548df49
Rename AbstractTypeCheckerContext to TypeCheckerState
2021-08-26 10:08:51 +03:00
Dmitry Petrov
c30b23ed01
JVM_IR fixes after review
2021-08-24 18:56:22 +03:00
Dmitry Petrov
f4dd75e769
JVM_IR don't inline temporary val for 'when' subject
2021-08-24 18:56:21 +03:00
Dmitry Petrov
568958492a
JVM_IR optimize temporary vals initialized with other vals
2021-08-24 18:56:18 +03:00
Dmitry Petrov
dcbc2ea2b3
JVM infer temporary vals from bytecode
2021-08-24 18:56:13 +03:00
Dmitry Petrov
a4e299b8e1
JVM_IR don't evaluate static receiver if it's a variable
2021-08-24 18:56:12 +03:00
Dmitry Petrov
041773fd25
JVM optimize out temporary variables in bytecode
2021-08-24 18:56:11 +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
Alexander Udalov
66dbd91851
IR: minor, remove unused 'isInlined'
2021-08-24 12:28:31 +02: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
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
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
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