Commit Graph

682 Commits

Author SHA1 Message Date
Aleksei.Glushko 00d6ced263 [K/N] Add the license file for BoundedQueue.hpp
Merge-request: KT-MR-11619
Merged-by: Alexey Glushko <aleksei.glushko@jetbrains.com>
2023-08-14 14:47:07 +00:00
Alexander Shabalin 288163437d [K/N] Remove legacy MM runtime modules ^KT-59121 2023-08-10 13:20:41 +00:00
Alexander Shabalin 6b50d0a44f [K/N] Make GC scheduler pausing less aggressive ^KT-61091 2023-08-10 11:21:30 +00:00
Alexander Shabalin 83a70ddf8b [K/N] Decouple ObjectFactory from concrete ObjectData ^KT-60928
* Use type_layout to declaratively express heap object headers in both
  custom allocator and ObjectFactory.
* Invoke constructor (w/o invoking Kotin constructors) for created
  objects and arrays from both custom allocator and ObjectFactory.
  Previously:
  - custom allocator only checked body for nullability (now this is
    performed in body constructor)
  - ObjectFactory only constructed ObjectData
* In each GC have a AllocatorImpl.hpp and ObjectData.hpp headers
  the first encapsulating allocator-specific types, the second
  containing specific ObjectData implementation.
* In each GC have a separate ObjectFactoryTraits that does not
  actually depend on the specific GC anymore.
* Each GC now expose ObjectData (as undefined type) and its descriptor,
  the latter being used by the custom allocator and ObjectFactory.
* Descriptors for ObjectBody and ArrayBody now live in Memory.h and the
  code calculating size is now shared. Their constructors check that the
  memory is zeroed (Kotlin constructors will expect this).
2023-08-10 07:58:27 +00:00
Alexander Shabalin d956a5504d [K/N] Add a helper for objects with custom layout ^KT-60928 2023-08-10 07:58:27 +00:00
Alexander Shabalin 906c27736f [K/N] CustomAllocator do not lose finalizer queue 2023-08-04 12:16:17 +00:00
Aleksei.Glushko f1efeff21b [K/N] GC: parallel mark with work balancing ^KT-57771
Merge-request: KT-MR-11460
Merged-by: Alexey Glushko <aleksei.glushko@jetbrains.com>
2023-08-03 16:25:19 +00:00
Mads Ager f0f1dc15c3 [K/N] Reduce frame size by removing unused arena field. 2023-08-03 15:32:08 +00:00
Alexander Shabalin 5cbf5ad529 [K/N] Fix SP synchronization 2023-08-03 08:13:07 +00:00
Alexander Shabalin d70f891a82 [K/N] Address AtomicStack tsan reports. 2023-08-03 08:09:02 +00:00
Aleksei.Glushko 71b2a22e35 [K/N] Eliminate deadlock on finalizer thread initialization
Merge-request: KT-MR-11388
Merged-by: Alexey Glushko <aleksei.glushko@jetbrains.com>
2023-07-31 21:38:05 +00:00
Abduqodiri Qurbonzoda 0f33d71de3 Migrate Vector128 from kotlin.native to kotlinx.cinterop #KT-58402
Make kotlin.native.Vector128 a typealias for kotlinx.cinterop.Vector128
Choose source compatibility over binary compatibility.
2023-07-31 19:38:05 +00:00
Alexander Shabalin 576f6642f9 [K/N] Add hard memory boundary ^KT-54727 2023-07-27 21:27:30 +00:00
Alexander Shabalin 220ecc4788 [K/N] Track memory in big chunks ^KT-57773
Additionally removed testFixtures{} and test{} in gcScheduler/common runtime module,
because that source set became empty.
2023-07-27 21:27:30 +00:00
Alexander Shabalin 0a726d4ebf [K/N] Move CUSTOM_ALLOCATOR macro to gc modules only ^KT-55364 2023-07-27 21:27:30 +00:00
Alexander Shabalin a69cd5e333 [K/N] Extract ThreadRegistry::waitAllThreads 2023-07-27 21:27:30 +00:00
Alexander Shabalin 9baac3685d [K/N] Add tests on safe points 2023-07-27 21:27:30 +00:00
Alexander Shabalin fd522ea756 [K/N] Add condition_variable that spins on atomics 2023-07-27 21:27:30 +00:00
Aleksei.Glushko 1eda35a59c [K/N] Process objc run loop on the finalizer thread ^KT-58851
Merge-request: KT-MR-11024
Merged-by: Alexey Glushko <aleksei.glushko@jetbrains.com>
2023-07-27 14:17:48 +00:00
Abduqodiri Qurbonzoda 7010bf2c20 Move copyToArrayImpl implementation to Common source set 2023-07-27 11:16:58 +00:00
Abduqodiri Qurbonzoda 6fdfd4e8dd Null-terminate Collection.toArray destination only in JVM
In other platforms the elements following the collection elements
should not be changed.

As a part of efforts to stabilize Native stdlib.
2023-07-27 11:16:58 +00:00
Abduqodiri Qurbonzoda 672a40c7cb [K/N] Remove redundant collectionToArray functions 2023-07-27 11:16:58 +00:00
Mikhail Glukhikh e76cf24d01 Explicitly use language version 1.9 for K2-unsupported parts
This commit explicitly sets LV 1.9 for all projects with disabled FIR
bootstrap, as well as for libraries, including Native stdlib.

Related to KT-59171
2023-07-26 18:19:58 +00:00
Abduqodiri Qurbonzoda 86c1e0ded6 Remove reified constraint from Array constructors #KT-57363
This is an attempt to bring consistency to array constructors reified requirement.
Currently,
JVM - reified type in all three: arrayOfNulls, arrayOf, emptyArray
Native - reified in arrayOfNulls and arrayOf, but not in emptyArray
JS & Wasm - reified in arrayOfNulls, but not in arrayOf and emptyArray

Merge-request: KT-MR-11005
Merged-by: Abduqodiri Qurbonzoda <abduqodiri.qurbonzoda@jetbrains.com>
2023-07-26 10:17:45 +00:00
Abduqodiri Qurbonzoda 7a0af5d058 Mark the CName annotation with ExperimentalNativeApi 2023-07-25 15:01:49 +00:00
Abduqodiri Qurbonzoda e5ab1d9ccf Commonize the ExperimentalNativeApi annotation 2023-07-25 15:01:49 +00:00
Pavel Kunyavskiy 9cbd55aa72 [K/N] Intrinsify enumEntries<T>
^KT-59711
2023-07-25 14:24:44 +00:00
mvicsokolova ba7e6ff154 [K/N] Intrinsics for atomic get/set of volatile properties.
These intrinsics are equivalent to KMutableProperty0.get/set invocation and used internally to optimize allocation of a property reference.


Merge-request: KT-MR-11233
Merged-by: Maria Sokolova <maria.sokolova@jetbrains.com>
2023-07-25 10:53:37 +00:00
Troels Bjerre Lund 2818957689 [K/N] Custom allocator for all GCs ^KT-55364
Also enables the integration tests for custom allocator and the
currently available GCs.

Co-authored-by: Troels Bjerre Lund <troels@google.com>

Merge-request: KT-MR-11199
Merged-by: Alexander Shabalin <Alexander.Shabalin@jetbrains.com>
2023-07-24 16:28:47 +00:00
Ilya Gorbunov 61175889b9 KT-53154 extract implementation of enumEntries into an expect/actual internal helper function
It's required, so it can be implemented in different backends
at a different pace and in a different manner
2023-07-24 11:18:44 +00:00
Roman Efremov 8ce1417621 [Stdlib] Fix reports of MPP annotation checker
^KT-58551
2023-07-24 09:48:49 +00:00
mvicsokolova 298c4f8c32 [K/N] Introduce atomic arrays in K/N stdlib
This commit introduces API for AtomicIntArray, AtomicLongArray and AtomicArray<T>.

The current set of functions is implemented via atomic arrays intrinsics (see KT-58360) and provides sequentially consistent memory ordering guarantees and no spurious failures in compareAndSet/compareAndExchange operations.

For details see: KT-60608

Merge-request: KT-MR-11071
Merged-by: Maria Sokolova <maria.sokolova@jetbrains.com>
2023-07-21 15:30:20 +00:00
Svyatoslav Scherbina f18c6755cc Native: fix runtime compilation against older glibc versions
Replace `#include <inttypes.h>` with `cinttypes`.
Improve other includes in the same file.

^KT-58864


Co-authored-by: Alexander Shabalin <Alexander.Shabalin@jetbrains.com>
2023-07-19 14:41:51 +00:00
Abduqodiri Qurbonzoda fed453fdea Provide Common StringBuilder.append/insert with primitive type arguments #KT-57359
Merge-request: KT-MR-10892
Merged-by: Abduqodiri Qurbonzoda <abduqodiri.qurbonzoda@jetbrains.com>
2023-07-13 11:52:14 +00:00
mvicsokolova d9fa9c1b3b [K/N] Introduce intrinsics that atomically update array elements
Supported atomic update of elements for IntArray, LongArray and Array<T>
See KT-58360

Merge-request: KT-MR-11020
Merged-by: Maria Sokolova <maria.sokolova@jetbrains.com>
2023-07-12 14:32:36 +00:00
Abduqodiri Qurbonzoda f152fa537d Collection.toString() should not throw if it contains itself
Merge-request: KT-MR-10591
Merged-by: Abduqodiri Qurbonzoda <abduqodiri.qurbonzoda@jetbrains.com>
2023-07-11 09:58:38 +00:00
Aleksei.Glushko 96b44e0ad8 [K/N] concurrent weak sweep ^KT-57772 2023-07-04 13:42:59 +00:00
Abduqodiri Qurbonzoda aae8a687a4 [K/N] Internalize Retain and RetainForTarget annotations #KT-57710
As a part of efforts to stabilize Native stdlib.
2023-06-30 15:27:08 +00:00
Abduqodiri Qurbonzoda f665388704 Advance ExperimentalNativeApi opt-in requirement level to ERROR #KT-57838
As a part of efforts to stabilize Native stdlib.
2023-06-30 15:27:08 +00:00
Abduqodiri Qurbonzoda ba6ee484b8 Advance NativeRuntimeApi opt-in requirement level to ERROR #KT-57720
As a part of efforts to stabilize Native stdlib.
2023-06-30 15:27:08 +00:00
Abduqodiri Qurbonzoda 00abbc5cfe Advance ObsoleteNativeApi opt-in requirement level to ERROR #KT-57088
As a part of efforts to stabilize Native stdlib.
2023-06-30 15:27:08 +00:00
Aleksei.Glushko 5618ee84f8 [K/N] try to reimplement safe points with a load-branch-call 2023-06-30 14:12:17 +00:00
Alexander Udalov ab195b68a5 Build: remove explicit enabling of RangeUntilOperator
This feature is enabled by default since 1.8. Using the `-XXLanguage`
compiler argument leads to big warnings which are distracting during the
build.
2023-06-22 18:55:56 +00:00
Alexander.Likhachev 9d128c8d0d [Build] DeclarewriteStdlibVersion as an explicit dependency of K/N stdlib
#KTI-1221 In Progress
2023-06-22 15:16:08 +00:00
Alexander Shabalin 63e65a482c [K/N] Move GC schedulers into modules
Additionally,
- rename disabled into manual
- rename with_timer into adaptive
- remove on_safepoints
- store schedulers in GlobalData, ThreadData directly
2023-06-21 12:16:09 +00:00
Abduqodiri Qurbonzoda 1be0e3f70e Document that arrayOfNulls throws RuntimeException on negative size 2023-06-20 16:31:59 +00:00
Abduqodiri Qurbonzoda da8f9fbd04 Document that array constructor throws RuntimeException on negative size 2023-06-20 16:31:59 +00:00
Alexander Shabalin db2475f41e [K/N] Make STMS use separate threads for GC and finalizers.
Moves GC into a separate thread, and finalizers processing into yet
another thread. This makes STMS more similar to CMS.
2023-06-20 10:08:25 +00:00
Alexander Shabalin 6996e03bc9 [K/N] Build new MM only for targets with threads
Targets without threads are disabled already.
2023-06-20 10:08:25 +00:00
Abduqodiri Qurbonzoda 4ae19b2b44 [K/N] Deprecate SharedImmutable annotation #KT-57837
As a part of efforts to stabilize Native stdlib.
2023-06-19 11:35:32 +00:00