From 77dde26c7c26807c55ca11d8b406afd5414148d3 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Thu, 18 Nov 2021 16:47:03 +0300 Subject: [PATCH] JVM KT-48944 improve performance of FunctionReference#equals 'getOwner()' computes KDeclarationContainer for function references, which can be costly. Compare other FunctionReference properties first. --- .../jvm/runtime/kotlin/jvm/internal/FunctionReference.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/FunctionReference.java b/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/FunctionReference.java index 553677fe8e0..1d3285d28d3 100644 --- a/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/FunctionReference.java +++ b/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/FunctionReference.java @@ -105,12 +105,12 @@ public class FunctionReference extends CallableReference implements FunctionBase if (obj instanceof FunctionReference) { FunctionReference other = (FunctionReference) obj; - return Intrinsics.areEqual(getOwner(), other.getOwner()) && - getName().equals(other.getName()) && + return getName().equals(other.getName()) && getSignature().equals(other.getSignature()) && flags == other.flags && arity == other.arity && - Intrinsics.areEqual(getBoundReceiver(), other.getBoundReceiver()); + Intrinsics.areEqual(getBoundReceiver(), other.getBoundReceiver()) && + Intrinsics.areEqual(getOwner(), other.getOwner()); } if (obj instanceof KFunction) { return obj.equals(compute());