Dmitry Petrov
614d90d6ef
Skip NOP instructions in fast pop backward propagation
2017-07-10 10:51:26 +03:00
Dmitry Petrov
ec99fa2142
Ensure that 'in/!in x until y' intrinsic works
2017-07-10 10:51:26 +03:00
Dmitry Petrov
05cad83c79
Fix tests for in/in! with primitive range literals
...
- ClosedFloatingPointRange<T>
- IntRange, etc
- extensions in kotlin.ranges for ranges of Byte/Int/Short
2017-07-10 10:51:26 +03:00
Dmitry Petrov
fd402cb76c
Provide intrinsic for in/in! expression with range of Comparable
2017-07-10 10:51:26 +03:00
Dmitry Petrov
bd2021411c
Don't use intrinsic 'in' generator for non-intrinsified 'in' expressions
2017-07-10 10:51:26 +03:00
Dmitry Petrov
a7071ae7af
Provide intrinsic generators for in/!in expression
...
TODO some tests should fail because range of comparables
(e.g., '"Alpha" .. "Omega"') is currently not implemented
2017-07-10 10:51:26 +03:00
Dmitry Petrov
e3320c53f5
Minor: AbstractForInRangeWithGivenBoundsLoopGenerator
2017-07-10 10:51:26 +03:00
Dmitry Petrov
e261b8edf8
Minor: extract high-level interface for ForLoopGenerator
2017-07-10 10:51:26 +03:00
Dmitry Petrov
c870eeac2e
RangeCodegenUtil: convert to Kotlin + cleanup
2017-07-10 10:51:26 +03:00
Dmitry Petrov
304e4e8dce
RangeCodegenUtil: .java -> .kt
2017-07-10 10:51:26 +03:00
Dmitry Petrov
6140f29818
Ranges: introduce RangeValue class
...
The overall idea is to unify intrinsics for 'for-in' loop generation
and for 'in'/'!in' expression generation.
2017-07-10 10:51:26 +03:00
Mikhail Glukhikh
1d2017b0fc
Cleanup: apply "cascade if..." inspection (+ some others)
2017-07-07 18:15:32 +03:00
Mikhail Glukhikh
9c06739594
Cleanup: apply "lift out..." inspection (+ some others)
2017-07-07 18:15:30 +03:00
Alexander Udalov
d97fa604e1
Write metadata for suspend function into anonymous coroutine classes
...
To render nice Kotlin types in toString() of continuation
2017-07-04 19:41:48 +03:00
Dmitry Petrov
16505daeea
Fix 'equals' for NotNullBasicValue
...
NotNullBasicValues were merged incorrectly sometimes,
which caused problems with INSTANCEOF checks.
#KT-18779 Fixed
2017-07-04 12:19:10 +03:00
Mikhael Bogdanov
8666b95dd2
Delete local variables on default mask expantion
...
#KT-18792 Fixed
2017-07-03 17:01:06 +02:00
Mikhael Bogdanov
01e2f8e32c
Preventively allocate slots for additional default parameters
...
Otherwise they are corrupted by inline
2017-07-03 17:01:06 +02:00
Mikhael Bogdanov
49252f6eec
Properly process primitive receiver on inlining bound callable references
...
#KT-18728 Fixed
2017-07-03 10:51:51 +02:00
Alexander Udalov
37982e4bb1
Move SAM-related descriptor classes to module frontend.java
...
Also move SyntheticMemberDescriptor to module resolution
2017-06-30 21:02:18 +03:00
Valentin Kipyatkov
8fabb6945e
Allow slice rewrite in trace when in IDE
2017-06-30 11:21:16 +03:00
Mikhail Glukhikh
840847e47c
Code cleanup: several inspections applied
2017-06-29 16:25:57 +03:00
Mikhael Bogdanov
4f914fafca
Calculate default mask shift properly
...
#KT-18689 Fixed
2017-06-29 14:57:42 +02:00
Mikhael Bogdanov
69457ef3f1
Generate optimized hashCode for primitive type with jvmTarget 1.8+
...
#KT-7571 Fixed
2017-06-28 13:44:07 +02:00
Denis Zharkov
3dc4f8a2ff
Do not write generics for $suspendImpl synthetic method
...
#KT-18252 Fixed
2017-06-28 10:25:08 +03:00
Denis Zharkov
d88d1d6189
Do not use non-existing class for suspend markers
...
As they remain in inline functions now proguard emits
a warning about them, even though inline suspend functions
are effectively inline-only and these markers can't be
executed at runtime
#KT-18702 Fixed
2017-06-28 10:24:53 +03:00
Denis Zharkov
cb95986c36
Report error on calls to obsolete inline suspend functions
...
They do not contain markers for suspend calls in them
See the changes introduced for fixing KT-16603
2017-06-28 10:24:27 +03:00
Dmitry Petrov
d5e02f069a
Fast version for POP backward propagation (without SourceInterpreter)
2017-06-27 14:28:42 +03:00
Dmitry Petrov
f1183d98a9
Fix complexity formula for SourceInterpreter
...
It is actually N^2 * F (VERY pessimistic case),
N = number of instructions
F = frame size
because frames contain sets of instructions.
2017-06-27 14:28:42 +03:00
Dmitry Petrov
a84c2a6f31
Improve string concatentation & string templates code generation
...
Reuse StringBuilder instances for nested subexpressions.
(NB StringBuilder instance for string template with a string
concatenation inside an expression entry, such as `"${"a" + "b"}"`,
will not be reused, although that doesn't seem to be a real-life issue).
#KT-18558 Fixed Target versions 1.1.4
#KT-13682 Fixed Target versions 1.1.4
Join adjacent strings literals, escaped strings, and constant values
(in a language version that supports const val inlining).
Use StringBuilder#append(char) for single-character constants
(e.g., " " in "$a $b").
#KT-17280 Fixed Target versions 1.1.4
#KT-15235 Fixed Target versions 1.1.4
2017-06-27 14:28:42 +03:00
Dmitry Petrov
5e5a1bd686
Use java.lang.Object as a fall-back reference type
...
If for some reason during preliminary analysis in redundant null check
elimination we failed to determine a local variable type statically,
treat it as java.lang.Object.
This will disable some further optimizations using precise type
information (such as INSTANCEOF check elimination), but will not fail
with an exception anyway.
2017-06-27 12:56:34 +03:00
Dmitry Petrov
786ac46fa6
Do not store nulls for captured variables going out of scope
...
These values can't be read after going out of scope.
JVM implementation can take care of such object references on its own.
Ref objects for captured variables are not different from any other
objects stored in local variables, so there's really no reason to
nullify these references explicitly.
#KT-18478 Fixed Target versions 1.1.4
2017-06-20 13:31:36 +03:00
Dmitry Petrov
9356c1e0ef
Skip PopBackwardPropagation for methods with large frames or no POPs
...
TODO get rid of SourceInterpreter here, it's quite expensive.
2017-06-20 13:31:36 +03:00
Dmitry Petrov
0a622e4440
Rewrite OtherOrigin overloads to prevent further silly problems
...
#KT-18413 Fixed Target versions 1.1.4
2017-06-20 13:31:36 +03:00
Mikhael Bogdanov
8ab705a14c
Introduce IrInliner
2017-06-20 10:26:37 +02:00
Mikhael Bogdanov
9f736f2192
Extract PsiSourceCompiler
2017-06-20 10:26:36 +02:00
Mikhael Bogdanov
2507780e19
Extract PsiInlineCodegen
2017-06-20 10:26:35 +02:00
Mikhael Bogdanov
8dc1b8f95f
Introduce BaseExpressionCodegen and SourceCompilerForInline,
...
switch CallGenerator and InlineCodegen to them
~base
2017-06-20 10:26:35 +02:00
Mikhail Zarechenskiy
011231f2ab
Collect sam adapters for constructors in synthetic scope
...
Also place computation of synthetic constructors under one function
2017-06-16 16:44:52 +03:00
Nikolay Krasko
6d7ce6cec1
Prevent debugger to stop twice on breakpoints after suspension point
...
#KT-18453 In Progress
2017-06-15 13:29:26 +03:00
Nikolay Krasko
49baba017a
Allow to stop in suspend funciton on enter and before suspended return
...
This commit is needed to implement "step over" action over suspended
call. Debugger have to understand when function is going to be
suspended and be able to set a breakpoint on function re-enter.
#KT-18453 In Progress
2017-06-15 13:29:25 +03:00
Mikhael Bogdanov
c4fc0f3808
Review fixes
2017-06-14 10:34:25 +02:00
Mikhael Bogdanov
724ac3cf59
Convert text util methods to extension properties
2017-06-14 10:34:24 +02:00
Mikhael Bogdanov
e96d2212da
Workaround for LightClass generation problem KT-18419
2017-06-14 10:34:24 +02:00
Mikhael Bogdanov
c8d3553a31
Rename InlineCodegenUtil.kt to inlineCodegenUtils.kt
2017-06-14 10:34:23 +02:00
Mikhael Bogdanov
bbb2b36794
Merge InlineCodegeUtil and InlineCodegeUtils
2017-06-14 10:34:22 +02:00
Mikhael Bogdanov
172a9c7e1e
Code clean after convertion
2017-06-14 10:34:21 +02:00
Mikhael Bogdanov
51d494a271
Convert InlineCodegenUtil to Kotlin
2017-06-14 10:34:21 +02:00
Mikhael Bogdanov
b7b3b3a19c
Rename InlineCodegenUtil.java to InlineCodegenUtil.kt
2017-06-14 10:34:20 +02:00
Mikhael Bogdanov
63c4794c30
Clean code after convertion
2017-06-14 10:34:19 +02:00
Mikhael Bogdanov
e6dbe87ee2
Convert InlineCodegen to Kotlin
2017-06-14 10:34:18 +02:00