Commit Graph

53 Commits

Author SHA1 Message Date
Dmitriy Novozhilov ca9cbf7eb7 Fix warnings in K/Native code 2021-08-03 07:40:57 +00:00
Sergey Bogolepov 6e093b0beb [K/N] Update libffi for Windows
MinGW and MSVC are hardly compatible in case of static linkage, so we
need to use a native libffi.
2021-08-03 05:42:06 +00:00
Sergey Bogolepov 66ddd15798 [K/N] Support compiler compilation in MSVC environment
The right way is to add something like KonanTarget.MSVC_X64, but doing
so requires changes throughout whole compiler. It would be especially
painful in HostManager, where we would need to deprecate
KonanTarget.MINGW_X64 as host. Instead we "hack" ClangArgs to compile
for x86_64-pc-windows-msvc instead of x86_64-pc-windows-gnu in JNI case.

CI may contain custom MSVC and Windows Kit installation path, so we
should support it. Things might break when machine has several MSVC
installed (at custom and default path), but it sounds more like
incorrect environment setup problem than ours.
2021-08-03 05:42:05 +00:00
Sergey Bogolepov a78fcd6b64 [K/N] Separate ClangArgs for jni and native
Since LLVM for Windows is now native instead on MinGW, we have to
compile code in a different environment in case of JNI. This commits
just separates ClangArgs into two subclasses without actual behavior
changes.
2021-08-03 05:42:05 +00:00
Sergey Bogolepov 493fa1c1e3 [K/N] Update Clang stubs for 11.1.0
Removed hacks for CXType_ExtVector type because now it is included in
Clang C API.
2021-08-03 05:42:01 +00:00
Alexander Gorshenev 9148094bbd Garbage collection capable wrappers for skia interop 2021-07-30 12:54:51 +03:00
Pavel Kunyavskiy d18ade088d [K/N] Help message for disabling quarantine flag on dylibs in distribution 2021-07-30 08:17:45 +00:00
Alexander Udalov 91c39ed01c Build: remove obsolete compiler arguments
These compiler arguments enable features which are enabled by default in
the current Kotlin anyway.

The only exception is in :compiler:cli which uses an old language
version.
2021-07-27 13:35:38 +02:00
Mikhail Glukhikh 47c8bab48e Replace -Xuse-experimental with -Xopt-in in codebase 2021-07-12 21:26:17 +03:00
Ilya Matveev dc8186cb83 [K/N][Interop] Fix throwing exceptions through bridges in opt mode
By default, C functions compiled to bitcode by clang have the
nounwind attribute. If such functions throws an exception, the
behaviour is undefined.

Our interop machinery can process foreign exceptions on call sites
(terminate or wrap them in Kotlin exceptions). But if the interop
bridges have the nounwind attribute, LLVM optimizations (particularly
inlining) may lead to the situation when a foreign exception is ignored by
our foreign exception handler.

This patch fixes the issue by compiling bridges with -fexceptions flag.
This flag makes clang to not set the nounwind attribute, so exceptions
can be thrown through C frames.
2021-07-02 11:51:06 +00:00
Svyatoslav Scherbina 2865d8bd45 Deprecate Obj-C 'alloc' and 'allocWithZone:' methods in Kotlin
Using these methods in Kotlin is usually a mistake.
2021-07-01 12:20:24 +00:00
Sergey Bogolepov 36386de9a2 [Native] Drop explicit -fPIC flag setup
We don't need to explicitly set -fPIC flag everywhere
because since d82109cc92
it is set by default for all ClangArgs users.
2021-06-11 12:18:14 +00:00
Svyatoslav Scherbina dc8934ab22 Native: fix crash in custom LLVM diagnostics handler
48a684c0 added custom LLVM diagnostic handler, using JvmCallbacks machinery,
thus triggered a bug in the latter: callbacks are cached and outlive the compilation session,
but rely on memory that is reclaimed at the end of the compilation session.
So during a subsequent compilation in the same process (e.g. when the compiler runs in the
Gradle daemon process), LLVM might call the callback which accesses the reclaimed memory, 
which in turn causes the crash.

Fix this by forcing JvmCallbacks to allocate memory that doesn't "expire" at the end of the compilation session.
2021-05-21 07:34:34 +00:00
Vladimir Ivanov 5a0f113e6d [cinterop] Fix type annotation for struct containing anonymous union … (#4289) 2021-05-18 14:34:56 +03:00
Ilya Matveev 4d346d3735 [K/N][New MM] Support thread state switching
Including

* Support thread state switching in codegen
* Introduce and use GCUnsafeCall annotation
* Switch thread state in C++ runtime code

Also

* Register current thread in Mark&Sweep tests
* Store MemoryState in Worker instance
* Set worker tid in WorkerInit
2021-05-06 14:10:21 +00:00
Sergey Bogolepov 13464cce68 [Native] Adapt Skia interop to ClangArgs refactoring. 2021-04-30 12:07:46 +00:00
Alexander Gorshenev 887032667d [Kotlin/Native][Interop] Skia interop plugin for cinterop 2021-04-29 21:43:26 +03:00
Vladimir Ivanov 5f582ad28a [Kotlin/Native][Interop] Provide pure c wrappers over cpp for skia interop 2021-04-29 21:43:25 +03:00
Sergey Bogolepov 645014092c Add a mention of KT-46231. 2021-04-21 15:14:33 +07:00
Abduqodiri Qurbonzoda 3a8d1c4b5e Remove redundant @OptIn 2021-04-16 19:01:28 +03:00
Sergey Bogolepov 790fea635d Avoid explicit native targets enumerations 2021-04-08 16:51:45 +03:00
Abduqodiri Qurbonzoda 983985bc68 [K/N] Migrate compiler, interop and others to new case conversion api 2021-04-08 03:22:05 +03:00
Ilya Gorbunov 7cd306950a Deprecate Char-to-Number conversions in stdlib (Native)
- Synchronize code of Ranges, Progressions, ProgressionIterators
- Suppress deprecations in regex implementation code

KT-23451
2021-04-07 18:30:21 +03:00
Ilya Gorbunov 833955e56d Migrate deprecations in Native compiler
Replacing deprecated Char.toInt() with Char.code and
Number.toChar() with Number.toInt().toChar(), where Number is not Int.

KT-23451
2021-04-07 18:30:21 +03:00
Svyatoslav Scherbina 65fa2f62bd Fix :kotlin-native:**:nativelibs Gradle tasks
These tasks did copy all files from build to build/nativelibs, thus
causing up-to-date checks to fail, and native libs and temporary build
files to be accumulated in recursive directories like
nativelibs/nativelibs/... in both build dirs and dist.

Fix this by copying only relevant files.
2021-04-02 14:13:48 +00:00
Alexander Udalov 5f7f4a4ac8 Improve API of annotation arguments in kotlinx-metadata
See changes in ChangeLog.md for more information
2021-04-01 22:34:53 +02:00
Svyatoslav Scherbina 1d96f810da Native: fix target for ReturnsRetained and ConsumesReceiver annotations
These annotations can be used on Objective-C property accessors imported
to Kotlin.
Note: the annotations aren't used in source code, only generated
directly to metadata by cinterop. So this commit doesn't in fact fix
anything but rather makes the implementation less fragile.

See https://github.com/JetBrains/kotlin-native/issues/3336.
2021-03-30 20:23:59 +00:00
Svyatoslav Scherbina a9d0409f2e Don't use Function.reflect() in kotlin-native/Interop on JVM
Use inline functions and typeOf<T>() instead
2021-03-19 06:53:09 +00:00
Alexander Udalov d9a9bd0136 Fix compilation of Interop/Runtime after fc36178f3a 2021-03-15 20:34:24 +01:00
Alexander Udalov c56f719dcc Fix/suppress some warnings
(cherry picked from commit d8a43c216925b3a9e1475b786978436835a57927)
2021-03-15 15:54:50 +03:00
Svyatoslav Scherbina 27904c0fb9 Native compiler source: replace inline classes by value classes
The former are deprecated.
2021-03-05 12:15:22 +00:00
Vasily Levchenko 905c0c3dd3 [build] version of kotlin native stored in resouces 2021-02-26 12:51:51 +01:00
Vasily Levchenko 65dd798818 [build][native support] intoduced new native support. 2021-02-24 11:07:18 +01:00
Vasily Levchenko 7b73917217 [build][dist] global dist fixed 2021-02-24 11:07:17 +01:00
Vasily Levchenko 3867cf6ef5 [build] switch to kotlin-build-gradle-plugin:0.0.25 2021-02-24 11:07:14 +01:00
Vasily Levchenko 840c1e612c [build] joint (step 2)
- dist:
  - compiler
  - tools(cinterop,klib)
  - stdlib
  - cache
2021-02-24 11:07:13 +01:00
Vasily Levchenko c85c3ac123 [build] joint (step 1)
(cherry picked from commit 7d0775f7e69ab900200bcf1fa78b94d68e6bd4f6)
2021-02-24 11:04:59 +01:00
Svyatoslav Scherbina f766a3eae4 Optimize CPointer.toKStringFromUtf8 on Native
Use strlen and stop allocating intermediate ByteArray
to make the performance comparable to ByteArray.decodeToString().

Partially fix KT-44357.
2021-02-24 10:53:42 +01:00
SvyatoslavScherbina bea8edb10c Return old behaviour for cinterop -output argument suffix handling
(accidentally changed in 976a9fc1)

 #KT-44824 Fixed.
2021-02-24 10:53:42 +01:00
Sergey Bogolepov f6f050ff68 Fix KT-44295
builtins "header" is included in both builtin and posix platform libraries, but only posix has declarations for builtin structs (e.g. __va_list_tag). Library resolver by default has no guarantee on order of resolved libraries which causes KT-44295.
To make results of `KotlinLibraryResolver` stable we pass TopologicalLibraryOrder to `getFullList` and specify a dependency of builtin on posix
2021-02-15 10:16:10 +01:00
Sergey Bogolepov fddf28ac47 Support for macos_arm64 target in backend
(cherry picked from commit 82775e93c1389f21f9be97bd0edfd16dd50300ea)
2021-02-09 09:00:48 +01:00
LepilkinaElena 2331475776 Use klib prefix for temporary directory for klibs (#4686) 2021-02-09 09:00:48 +01:00
Vasily Levchenko 40959c756d Revert "Temporary remove all -Werror flags"
This reverts commit 89c09214eeed951684405c10c233304834a89beb.
2021-02-01 16:54:15 +01:00
Dmitriy Novozhilov 29f68fe7ae Temporary remove all -Werror flags
This is needed for transational period of migrating kotlin repository to compiler with version 1.5

(cherry picked from commit 2836a17952dd47b5b8fe176a0b0374c23567b2ff)
2021-02-01 16:54:15 +01:00
Vasily Levchenko 8b2f0d644b [build] kotlin.*Compile: -Xskip-prerelease-check
(cherry picked from commit 57172ac6ead928b565fefaf49d8405a07c856e25)
2021-02-01 16:54:15 +01:00
Roman Artemev fde107b181 [KLIB] Adapt new klib io API in K/N
(cherry picked from commit 70fabb6a9db83db5f5b26b54f2656655316ea31c)
2021-02-01 16:54:15 +01:00
Elena Lepilkina f88d38314e Rework usage of Choice options 2020-12-14 15:25:36 +01:00
Igor Chevdar e5f7cef594 [interop] Optimized unmanaged memory alloc/free 2020-11-28 21:12:15 +01:00
Dmitriy Dolovov 2953fb3970 Fix lost nullability in C-interop type aliases
^KT-43427
2020-11-28 21:07:01 +01:00
Ilya Gorbunov bf4e53ae06 Use Files API for creating temp files and directories
(cherry picked from commit b9df8591d043c79f2032b782efc7539c747c2625)
2020-11-28 21:01:56 +01:00