Commit Graph

63359 Commits

Author SHA1 Message Date
Sergey Igushkin 94e3fa2132 (minor) Extract constants for XML nodes in project structure metadata 2020-03-24 01:48:33 +03:00
Sergey Igushkin f30aada84a If a source set is host-specific, publish it within the Native modules
Consider host-specific all source sets that participate in a compilation
of a target that cannot be built on some of the hosts.

Exclude those source sets from the `-metadata` artifact since the
`metadata` target must publish in the same way from any host.

Instead, add a metadata variant to those targets which use such a source
set and pack the source set's klib into a similar metadata JAR as the
artifact of those metadata variants.
2020-03-24 01:48:32 +03:00
Ilya Gorbunov d7007044c2 Add a note about the Random(...) generators being not thread-safe 2020-03-24 01:37:03 +03:00
Ilya Chernikov 44ffed9590 Approximate only types substituted with captured types
properly fixes #KT-37389
#KT-37389 fixed
#KT-37644 fixed
2020-03-23 22:58:45 +01:00
Martynas Sateika 49ae3c3db0 Supply missing 'project' argument to ReplaceWith replacement 2020-03-23 21:46:50 +03:00
Vladimir Dolzhenko a832c12550 Fetch analysis results if it is available
Relates to #KT-37467 and #KT-37515
2020-03-23 14:49:47 +00:00
Vladimir Dolzhenko 0073d260f8 Fix incremental analysis for whitespaces
incremental analysis could ignore whitespace iff old item was whitespace

#KT-37629 Fixed
2020-03-23 14:46:55 +00:00
Vladimir Dolzhenko 8935c600c1 Add checkCanceled on find usages execution path
#KT-36138 Fixed
2020-03-23 14:46:13 +00:00
Mads Ager baf1f56859 [JVM_IR] Rebase test of string concatenation codegen.
The JVM IR backend code seems saner to me. The string concatenation
lowering for JVM IR calls the stringPlus intrinsic if there are
only two arguments. That leads to a lot less code:

```
load string
load argument
box argument
call Intrinsics.stringPlus
```

instead of

```
allocate StringBuilder
call StringBuilder.<init>
load string
call StringBuilder.append
load argument
call StringBuilder.append
call StringBuilder.toString
```

This will lead to more boxing, but a lot smaller code. We still
use StringBuilders in JVM IR if there are more than two strings
being concatenated.
2020-03-23 16:42:53 +03:00
Mikhail Zarechenskiy 1cf970b110 Revert "Minor. Specify type arguments explicitly"
This reverts commit 2e9075115b.
2020-03-23 16:39:22 +03:00
Mikhail Zarechenskiy 191fb02bf6 [NI] Consider intersection type with number type as Nothing
Currently, only for "in": In<in Int & A> == In<in Nothing> == In<*>

 #KT-37302 Fixed
2020-03-23 16:39:21 +03:00
Mikhail Zarechenskiy b23aff4d0d [NI] Type-check lambda arguments against approximated type
It's required as we analyze lambda with the approximated type too
2020-03-23 16:39:20 +03:00
Mikhail Zarechenskiy 72ce4eb5ee Minor, replace fields with getters to avoid leaking "this" inspection 2020-03-23 16:39:19 +03:00
Ilya Goncharov e6d39ce785 [Gradle, JS] True on check exit code in mocha
#KT-37668 fixed
2020-03-23 15:36:52 +03:00
Nick abcd6bd528 [FIR] Support diagnostic SUPER_IS_NOT_AN_EXPRESSION 2020-03-23 15:14:06 +03:00
Mikhail Glukhikh ca22e05acd [FIR2IR] Support safe calls 2020-03-23 15:13:50 +03:00
Mikhail Glukhikh 2e8b22e4be [FIR2IR] Use wrapped property accessor descriptors for accessors 2020-03-23 15:13:33 +03:00
Mikhail Glukhikh 92ac1d3f3d FIR: use FirDefaultPropertyAccessor if no body also in lightTree builder 2020-03-23 15:13:17 +03:00
Jinseong Jeon e46a4246d2 FIR: regard property accessor without body as FirDefaultPropertyAccessor 2020-03-23 15:12:54 +03:00
Roman Elizarov e26a3ad033 Speed up stdlib readLine function (#3185)
There are several performance optimizations:

* ByteBuffer/CharBuffer/StringBuilder objects pre-allocated and are
  reused on each call to readLine.
* The state for readLine is lazily allocated via JVM classloading
  (using a singleton object).
* There is an auto-detection heuristic for "directEOL" encodings which
  represent LF ('\n') directly as the corresponding byte
  (UTF-8 and many single-byte encodings are like that).
  When "directEOL" encoding is used, then bytes are batched into
  ByteBuffer for a single call to CharsetDecoder.decode which
  results in higher throughput. Otherwise (UTF-16, etc), slower
  byte-by-byte approach is used.
* Bytes and chars are directly moved in/out of byte/char arrays and
  ByteBuffer/CharBuffer wrappers are used only to interface with
  JVM CharsetDecoder class (which is the slowest piece).
* StringBuilder is not used at all for short lines (<=32 chars).

There are also some function improvements to readLine functionality:

* Restriction on "max chars per byte" is lifted, so readLine works with
  all encodings that JVM supports.
* It support on-the-fly changes to system default charset, because
  it rechecks current charset on each call and updates it decoder
  when needed.

All the other features of readLine function are retained:

* It does not read more bytes from System.in than needed, so it
  is compatible with other ways to read System.in. On-the-fly
  changes to System.in are supported.
* It is thread-safe. Its internal mutable state is protected by
  synchronization.
* There is an internal method for tests that supports explicit
  charset specification, but the name of this method has changed.

There are additional tests:

* Check all supported encodings on JVM to make sure that readLine
  works correctly with them all.
* Check unicode code points of different bits length with all standard
  unicode encodings (UTF-8, UTF-16, and UTF-32 in LE/HE byte orders).

Benchmarks that compare different implementations of readLine,
including this one (readLine6NoLV in the set) can be found here:
https://github.com/elizarov/ReadLineBenchmark

Taking BufferedReader as 100% baseline we see that:

* Current readLine is 7.5 times slower than BufferedReader baseline.
* New implementation in this commit is 2.5 timer slower than baseline.
  It is ~3 times faster than existing implementation of readLine.

Altogether these optimizations are enough to enable reading of
~500K lines in sports programming setting under 2s time-limit with
plenty of headroom in time. Example that is using this version of
readLine can be found here:
https://codeforces.com/contest/1322/submission/73005366

#KT-37416 Fixed
2020-03-23 14:36:55 +03:00
Mikhail Bogdanov aae6319c39 Minor. Specify test runner to support parallel test execution 2020-03-23 12:27:52 +01:00
Vladimir Ilmov cd12226f20 (CoroutineDebugger) Alternative CoroutineInfoProvider added
Added way to retrieve coroutine information without an agent
in target JVM. 'kotlin.debugger.coroutines.switch' provides
two possibilities to test coroutines.
Agent way gets activated once kotlinx.coroutines.debug.DebugProbes
started with javaagent.
Library-less ways use DispatchedContinuation or ChildContinuationImpl
classes to retrieve coroutine information and stack traces.
2020-03-23 12:27:07 +01:00
pyos ac6036f366 JVM_IR: move state machine generation to ClassCodegen 2020-03-23 12:23:17 +01:00
pyos bc37a87974 JVM_IR: produce better debug messages on inlining failures
That's the only thing `compilationContextDescriptor` is used for; it
clearly shouldn't point to the callee, but to the caller.
2020-03-23 12:23:17 +01:00
pyos b317187f20 JVM_IR: buffer method bytecode in FunctionCodegen 2020-03-23 12:23:17 +01:00
pyos f6e7d7f7f1 JVM_IR: refactor FunctionCodegen a bit 2020-03-23 12:23:17 +01:00
pyos df5c5b163e JVM_IR: refactor ClassCodegen a bit 2020-03-23 12:23:17 +01:00
Andrey Uskov 79ec081bbf Add changelog for 1.4-M1 2020-03-23 13:50:16 +03:00
Dmitriy Dolovov 03cd229784 IDE perf tests for K/N: Drop redundant check for CommonLibraryKind 2020-03-23 16:49:58 +07:00
Dmitry Petrov b0e916769d Add test for KT-37570 2020-03-23 12:27:58 +03:00
Dmitriy Dolovov f46fc7d848 IDE: Fix i18n for KlibMetaFileType 2020-03-23 15:39:33 +07:00
Dmitriy Dolovov f4aa0fad44 IDE: Unify creation of KLIB package fragment providers (common, native) 2020-03-23 15:39:27 +07:00
Dmitriy Dolovov bf4a153c0c IDE: Use CachingIdeKlibMetadataLoader in Native & Common KLIB analysis 2020-03-23 15:39:21 +07:00
Dmitriy Dolovov c8a9b88504 IDE: Refactor NativePlatformKindResolution & NativeResolverForModuleFactory 2020-03-23 15:39:05 +07:00
Dmitriy Dolovov 98877eb87e IDE: Rename NativeLibraryInfo to NativeKlibLibraryInfo 2020-03-23 15:38:59 +07:00
Dmitriy Dolovov 816db96113 IDE: Drop NativeLibraryInfo.NATIVE_LIBRARY_CAPABILITY 2020-03-23 15:38:53 +07:00
Dmitriy Dolovov 5f7a6d55a8 KLIB: Fix compilation 2020-03-23 15:38:46 +07:00
Dmitry Savvinov 26ab9b4fc9 Move Klib-related logic from idea-native module 2020-03-23 15:38:40 +07:00
Dmitry Savvinov 417554dca0 Move .klib files from KotlinNativeFileTypeFactory to Kotlin-wide one 2020-03-23 15:38:32 +07:00
Dmitry Savvinov 987e1019a8 Rename everything non-Native specific to Klib 2020-03-23 15:38:26 +07:00
Dmitry Savvinov b6d811c69c Extract common logic of detecting klibs and creating LibraryInfo by klib 2020-03-23 15:38:19 +07:00
Dmitry Savvinov 6ccb8cd0a3 Properly check platform of klib by reading manifest 2020-03-23 15:38:11 +07:00
Georgy Bronnikov 4742057b51 IR: generate lambdas in place in Psi2Ir
even when arguments are to be rearranged.
Lambdas have no side effects, and storing them in temporary variables
prevents processing in the backend
(such as inserting continuation parameter in AddContinuationLowering).
2020-03-23 11:09:30 +03:00
nataliya.valtman 915e6107d1 make Bootstrap option available in buildSrc 2020-03-23 08:43:06 +03:00
Vladimir Dolzhenko 344dbeffe8 Fix IntentionTestGenerated$IntroduceImportAlias.testConflictPackage
Fix test data as find usages can handle import aliases

Relates to #KT-18619
2020-03-22 15:30:49 +01:00
Mikhail Zarechenskiy d4d35bb766 Revert "[NI] Prefer between two complex variables one with proper lower bounds"
This reverts commit ced8a92629.
2020-03-22 17:16:22 +03:00
Vladimir Dolzhenko f82e2db65d Fix effective search scope for find references
Relates to #KT-18619
2020-03-22 10:19:33 +01:00
Dmitriy Novozhilov 6ce8d661ad [FIR] Add nullability to ILT. #KT-37639 Fixed 2020-03-20 23:11:28 +03:00
Dmitriy Novozhilov 006e1f6528 [FIR-TEST] Add test for KT-37638 2020-03-20 23:11:28 +03:00
Dmitriy Novozhilov 5f9f01fe4e [FIR] Implement new completion mode calculator
Note that `testDelegates` now fails due to KT-37638 and
    `testSimpleIn` fails due to problems with type parameters
    of inner classes
2020-03-20 23:11:28 +03:00