Dmitriy Novozhilov
a764732020
Rename KotlinBuiltInsNames to StandardNames
2020-08-25 10:41:33 +03:00
Dmitriy Novozhilov
20a2ad8223
Move FunctionClassDescriptor.Kind to :core:descriptors.common module
2020-08-25 10:31:36 +03:00
Dmitriy Novozhilov
7a7fe77b8e
Move static constants with builtin names to :core:descriptors.common module
2020-08-25 10:31:36 +03:00
Dmitriy Novozhilov
9d9f9c52c0
Extract some classes from descriptors module to :core:common
...
This is needed to remove dependencies from fir modules to
`:core:descriptors` module
What was extracted:
- Modality
- ClassKind
- org.jetbrains.kotlin.name package
2020-08-25 10:31:35 +03:00
Dmitry Petrov
a2dabe11c5
JVM KT-41150: Fix backward compatibility for inline vals in inline class
...
In 1.3.x, for inline class member inline vals 'getFoo-impl' method was
generated in corresponding inline class.
Since 1.4.0, getters for properties returning inline class values are
mangled (so corresponding getters are named 'getFoo-<mangling_hash>'.
However, to maintain backward compatibility with libraries compiled with
1.3.x, inliner should be able to find 'getFoo-impl' method in the
bytecode.
2020-08-24 16:17:12 +03:00
Alexander Udalov
bf0bb9e946
JVM IR: remove obsolete code for duplicate signature diagnostics
2020-08-20 14:58:36 +02:00
Alexander Udalov
a21f273570
Fix compiler warnings in compiler code
2020-08-17 21:18:20 +02:00
Ilmir Usmanov
31e4ddafd1
Minor. Add test with boolean parameter
2020-08-13 15:52:53 +02:00
Ilmir Usmanov
bcbb050326
Use fields for spilled variables for lambda parameters as well
...
In other words, do not generate p$ fields if we can use L$ fields,
which are being cleaned up.
#KT-16222 Fixed
2020-08-13 15:52:51 +02:00
Ilmir Usmanov
00bf07fc41
Force boxing kotlin.Result return type of suspend functions
...
#KT-40843 Fixed
2020-08-11 22:10:47 +02:00
Mikhael Bogdanov
607f99ed3c
Don't generate implicit overrides delegating to Java defaults
...
#KT-40920 Fixed
2020-08-10 20:03:23 +02:00
Mikhail Zarechenskiy
2eb17df962
Do not compute SamType too eagerly as it can force member resolution
...
Internally, during creation of `SamType` the compiler checks if a
parameter is really can be used as a SAM, so this check involves
lookup for abstract members, which can force additional computation of
member scopes. This is totally fine for BE but it can be dangerous
for light classes computation when not all scopes are processed.
Note that this issue appeared quite recently after 16f175612e
#KT-40869 Fixed
2020-08-06 09:20:56 +03:00
Ilmir Usmanov
68342a1f72
Initialize fake inliner variables on resume path
...
Otherwise, this will cause R8 to complain.
2020-08-05 19:47:55 +02:00
Ilmir Usmanov
bb5a99ec18
Do not put $completion to LVT if is dead
2020-08-05 19:47:54 +02:00
Victor Petukhov
f45de9d8fb
NI: approximate not top-level captured types during code generation
...
^KT-40693 Fixed
2020-08-05 10:36:36 +03:00
Ilmir Usmanov
bbd4c21595
Cleanup spilled variables
...
#KT-16222
2020-08-04 15:42:37 +02:00
Ilmir Usmanov
999b41068b
Minor. Refactor variables spilling
...
Split information collection and method node mutation.
2020-08-04 15:42:37 +02:00
Ilmir Usmanov
405c9743ef
Do not spill dispatch receiver of suspend functions if it is not used
...
#KT-20571
2020-08-04 15:42:36 +02:00
Dmitry Petrov
09e47fff7b
Fix KotlinGradleIT.testCustomCompilerFile
...
Referencing org.jetbrains.annotations.{Nullable, NotNull} classes in
static initializer causes ClassNotFoundError in testCustomCompilerFile.
2020-07-29 20:33:17 +03:00
Dmitry Petrov
dae358c792
JVM: KT-40664 disable optimization for 'ULong in range of UInt' case
2020-07-29 20:33:17 +03:00
Dmitry Petrov
f2493d0950
JVM: KT-40665 more exact check for intrinsified range 'contains'
2020-07-29 20:33:17 +03:00
Ilmir Usmanov
4fb5f8603a
Keep $continuation in LVT
...
in case of suspend functions and `this` is case of lambdas, since they
are used in async stack trace generation.
Update tests.
#KT-40661 Open
2020-07-29 00:01:12 +02:00
Ilmir Usmanov
db40808186
Minor. Remove unused SourceFrames
2020-07-29 00:01:11 +02:00
Ilmir Usmanov
70e91bd5db
Shrink and split LVT records of variables according to their liveness
...
Otherwise, debugger will show uninitialized values of dead variables
after resume.
#KT-16222
#KT-28016 Fixed
#KT-20571 Fixed
2020-07-29 00:01:10 +02:00
Ilmir Usmanov
60875f96b4
Do not take LVT into account when calculating liveness of variables
2020-07-29 00:01:09 +02:00
Dmitry Petrov
980b91d082
JVM: generate 'Deprecated' on method as runtime-visible annotation
...
We generate @java.lang.Deprecated annotation on methods of $DefaultImpls
classes in compatibility mode. This annotation has RUNTIME retention and
should be visible.
Also, get rid of representing annotations as Class'es (yes we know that
these annotations are in compiler CLASSPATH, but we should not rely on
such classes and associated information).
2020-07-28 18:19:20 +03:00
Dmitry Petrov
43fcb2330e
JVM_IR: fix source file name for mutlifile class facades
2020-07-27 19:13:37 +03:00
Andrei Klunnyi
0e46a980f6
EA- 235760 // additional logging
...
https://ea.jetbrains.com/browser/ea_problems/235760
2020-07-27 15:36:00 +02:00
Denis Zharkov
41bd013796
Fix incorrect usages of @NotNull type parameters in project sources
...
^KT-36770 In progress
2020-07-22 10:16:14 +03:00
Dmitry Petrov
7be9b18ff4
JVM: field for suspend main parameter is synthetic
2020-07-20 20:04:31 +03:00
Dmitry Petrov
bae6037f00
JVM: fields for suspend lambda parameters are synthetic
2020-07-20 20:04:31 +03:00
Dmitry Petrov
d30c67db14
JVM: don't skip nullability annotations on private fields
...
Unfortunately, some annotation processors rely on those annotations.
2020-07-20 20:04:30 +03:00
Georgy Bronnikov
aab95f93f2
JVM_IR: invoke method descriptor for default lambdas
2020-07-10 17:35:29 +03:00
Alexander Udalov
8c71d8f126
Undeprecate VariableDescriptorWithAccessors.isDelegated
...
Apparently there's quite a few valid usages of this method outside of
the compiler frontend, where manual suppression is annoying.
2020-07-07 18:09:40 +02:00
Dmitry Petrov
6e0bb0b468
JVM: no nullability annotations for inline class '-impl' methods
...
Specialized generated methods for inline classes (toString-impl,
hashCode-impl, equals-impl, etc) are inaccessible from Java, and thus
don't require nullability annotations.
2020-07-02 22:39:06 +03:00
Mads Ager
1124887aa0
[JVM_IR] Fix stepping behavior for assignments to local variables.
2020-07-02 17:29:07 +02:00
Georgy Bronnikov
8e24256f95
JVM_IR: avoid descriptors when tracking inline properties
...
Preparing to use wrapped properties in InlineCodegen.
2020-07-02 12:46:58 +03:00
Steven Schäfer
5cdf053c8e
Coroutines: Fix RedundantLocalsEliminationMethodTransformer
...
- Take control flow into account when collecting usage information
- Don't remove stores to local variables
2020-07-02 00:49:28 +02:00
Ilmir Usmanov
697c8637ee
For all int-like typed variables, use int as field type and coerce
...
it during spill-unspill.
Coerce int to boolean, otherwise, VerifyError is thrown on android
Completely rewrite SpilledVariableFieldTypesAnalysis... again,
but this time use BasicInterpreter
This way, the analysis both does not use SourceInterpreter and
is in line with the rest on analyses.
2020-07-01 17:26:47 +02:00
Mikhail Bogdanov
3580c7c28c
Write proto flag about compatibility mode
...
There is no any special aim for this flag now.
But it could be useful in future in case of compatibility mode deprecation
2020-06-30 14:59:01 +02:00
Ilmir Usmanov
ed80b431f0
Restore refined int-type analysis
2020-06-29 21:42:30 +02:00
Ilmir Usmanov
f127a0f593
Add flag to disable new spilled variable type analysis
2020-06-29 20:50:43 +02:00
Ilmir Usmanov
da12532669
Ignore fake inliner variables in merge operation
...
since they are not read and just markers.
#KT-39863 Fixed
2020-06-29 20:13:37 +02:00
Dmitry Petrov
2137a4b1e5
JVM, JVM_IR: no nullability annotations on private and synthetic methods
...
NB it looks like it doesn't cover all cases, e.g., some synthetic
methods generated for suspend functions.
2020-06-26 18:51:35 +03:00
Dmitry Petrov
64e47265e1
JVM, JVM_IR: no nullability annotations on lateinit backing fields
2020-06-26 15:08:23 +03:00
Dmitry Petrov
3f266aafb4
JVM: no nullability annotations on private and synthetic fields
2020-06-25 22:31:12 +03:00
Ilmir Usmanov
1ee8e615fc
Reuse value is ISTORE if expected type is the same, otherwise, create
...
new value
2020-06-25 18:51:15 +02:00
Ilmir Usmanov
c21820c615
Revert "Revert "Fix merging two reference values""
...
This reverts commit 1cccceabb9 .
2020-06-25 18:51:13 +02:00
Ilmir Usmanov
a6f14c206b
Revert "Revert "Revert "Revert "Completely rewrite reifiedIntTypeAnalysis, making it more streamline""""
...
This reverts commit 447308dcfc .
2020-06-25 18:51:11 +02:00
Alexander Udalov
c6a481190a
JVM: optimize type mapping for primitive types
2020-06-24 19:26:59 +02:00