Skip to content

Commit 1fba6d2

Browse files
elizarovqwwdfsad
authored andcommitted
Minor perf improvement when scheduling delayed task
* ThreadSafeHeap.addLastIf is inline to avoid closure allocation
1 parent 4b0f4de commit 1fba6d2

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

core/kotlinx-coroutines-core/src/internal/ThreadSafeHeap.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public class ThreadSafeHeap<T> : SynchronizedObject() where T: ThreadSafeHeapNod
4848
// @Synchronized // NOTE! NOTE! NOTE! inline fun cannot be @Synchronized
4949
public inline fun removeFirstIf(predicate: (T) -> Boolean): T? = synchronized(this) {
5050
val first = firstImpl() ?: return null
51-
return if (predicate(first)) {
51+
if (predicate(first)) {
5252
removeAtImpl(0)
5353
} else {
5454
null
@@ -58,14 +58,15 @@ public class ThreadSafeHeap<T> : SynchronizedObject() where T: ThreadSafeHeapNod
5858
@Synchronized
5959
public fun addLast(node: T) = addImpl(node)
6060

61-
@Synchronized
62-
public fun addLastIf(node: T, cond: () -> Boolean): Boolean =
61+
// @Synchronized // NOTE! NOTE! NOTE! inline fun cannot be @Synchronized
62+
public inline fun addLastIf(node: T, cond: () -> Boolean): Boolean = synchronized(this) {
6363
if (cond()) {
6464
addImpl(node)
6565
true
6666
} else {
6767
false
6868
}
69+
}
6970

7071
@Synchronized
7172
public fun remove(node: T): Boolean {

0 commit comments

Comments
 (0)