Commit Graph

3988 Commits

Author SHA1 Message Date
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
Mikhael Bogdanov 7ce980815c Rename InlineCodegen.java to InlineCodegen.kt 2017-06-14 10:34:18 +02:00
Alexander Udalov e6001f57fa Remove dependency of module 'backend' on 'backend.jvm' and 'ir.tree'
This breaks the circular dependency between 'backend' and 'backend.jvm'
2017-06-06 19:55:06 +03:00
Pavel V. Talanov bdf76f23c4 Jvm Codegen: do not throw on malformed delegation to a type parameter
Fix exception on light class building

See KT-15931
2017-06-06 17:11:19 +03:00
Alexander Udalov 7febd846e8 Export 'intellij-core' in module 'frontend'
Remove intellij-core from dependencies of modules which already depend
on frontend or any module that exports frontend (such as frontend.java)
2017-06-06 14:29:26 +03:00
Alexander Udalov cbaa676c3d Move some declarations between 'descriptors' and 'deserialization'
- Move the following from 'deserialization' to 'descriptors':
  NotFoundClasses.kt
  AdditionalClassPartsProvider.kt
  ClassDescriptorFactory.kt
  PlatformDependentDeclarationFilter.kt
  findClassInModule.kt
- Move the following form 'descriptors' to 'deserialization':
  BuiltInSerializerProtocol.kt
  builtInsPackageFragmentProvider.kt
- Extract a marker interface from BuiltInsPackageFragment and move its
  implementation to 'deserialization'
- Change the type of parameters in PlatformDependentDeclarationFilter
  and AdditionalClassPartsProvider to ClassDescriptor

This will help in getting rid of the circular dependency of
'descriptors' <-> 'deserialization'
2017-06-06 14:29:18 +03:00
Dmitry Petrov a5620454fa Minor: use IntrinsicMethods.INTRINSICS_CLASS_NAME where appropriate 2017-05-31 16:48:14 +03:00
Dmitry Petrov a6f8aad49b Minor: fix typo in exception message 2017-05-31 16:48:14 +03:00
Dmitry Petrov 08885e273b Support additional intrinsics in null check elimination
1. checkExpressionValueIsNotNull implies checked value is non-null

2. throwNpe never returns

 #KT-18162 Fixed Target versions 1.1.4
 #KT-18164 Fixed Target versions 1.1.4
2017-05-31 16:48:14 +03:00
Dmitry Petrov d559212d70 Optimize out trivial INSTANCEOF checks
#KT-18157 Fixed Target versions 1.1.4
2017-05-31 16:48:14 +03:00
Dmitry Petrov 17d2472511 Do not patch generic signature for methods with special bridges
Somewhat awkward solution for KT-18189.
2017-05-31 10:18:48 +03:00
Dmitry Petrov fd00a6fbe8 Generate generic signatures for special bridges
#KT-12408 Fixed Target versions 1.1.4
2017-05-31 10:18:48 +03:00
Dmitry Petrov 78de1fb72c Handle incorrect code for interface delegation
#KT-15931 Fixed Target versions 1.1.4
2017-05-31 10:18:48 +03:00
Denis Zharkov 2c98bd053a Fix super calls to suspend functions in abstract classes 2017-05-29 10:58:18 +03:00
Dmitry Petrov a86fe89aae Include file name for package-level members in diagnostics 2017-05-26 13:58:46 +03:00
Mikhael Bogdanov 3f7bf8467a Process non-aload0 outer access in constructor during inline
#KT-17972 Fixed
2017-05-26 09:24:10 +02:00
Mikhail Zarechenskiy d0e26c6527 Support underscores in non local destructuring declarations 2017-05-25 16:46:06 +03:00
Mikhail Zarechenskiy 47f2386212 Generate non-local destructuring declarations as properties
#KT-5620 Fixed
 #KT-15810 Fixed
2017-05-25 16:46:05 +03:00
Yan Zhulanow 5ec16167bc Kapt: Preserve parameter names for abstract methods 2017-05-23 16:45:29 +03:00