summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2022-08-26 10:42:44 +0200
committerGitHub <noreply@github.com>2022-08-26 10:42:44 +0200
commitdb4fce7cab1470c85e32cf8c0db10accb47f9a5d (patch)
tree5c8ced9d0b78c7494a28fc7783711f1502488716
parent5beba0e1309056ebc30b2c0778eac17e827cfe74 (diff)
parente8b44bb91561034bb92c4671f5b25bd79702adc6 (diff)
Merge pull request #23798 from vespa-engine/bratseth/fastpath-hashmap-and-set
Bratseth/fastpath hashmap and set
-rw-r--r--container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java8
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java7
2 files changed, 11 insertions, 4 deletions
diff --git a/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java b/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java
index cb1b2d6888c..8ff54ab6728 100644
--- a/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java
+++ b/container-core/src/main/java/com/yahoo/processing/request/CloneHelper.java
@@ -7,6 +7,8 @@ import com.yahoo.lang.PublicCloneable;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.logging.Logger;
import java.util.LinkedList;
import java.util.ArrayList;
@@ -81,7 +83,7 @@ public class CloneHelper {
@SuppressWarnings({"removal"})
protected Object objectClone(Object object) {
- // Fastpath for our commonly used classes
+ // Fastpath for commonly used classes
if (object instanceof FreezableClass)
return ((FreezableClass)object).clone();
else if (object instanceof PublicCloneable)
@@ -92,6 +94,10 @@ public class CloneHelper {
return ((LinkedList<?>) object).clone();
else if (object instanceof ArrayList)
return ((ArrayList<?>) object).clone();
+ else if (object instanceof HashMap)
+ return ((HashMap<?, ?>) object).clone();
+ else if (object instanceof HashSet)
+ return ((HashSet<?>) object).clone();
try {
return cloneByReflection(object);
} catch (ClassCastException e) {
diff --git a/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java b/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java
index 46859ab1cbe..db8925c5da4 100644
--- a/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java
@@ -5,6 +5,7 @@ import com.yahoo.processing.request.properties.PropertyMap;
import org.junit.jupiter.api.Test;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
@@ -27,11 +28,11 @@ public class PropertyMapTestCase {
assertNotNull(map.get("nonclonable"));
PropertyMap mapClone = map.clone();
- assertTrue(map.get("clonable") != mapClone.get("clonable"));
+ assertNotSame(map.get("clonable"), mapClone.get("clonable"));
assertEquals(map.get("nonclonable"), mapClone.get("nonclonable"));
- assertTrue(map.get("clonableArray") != mapClone.get("clonableArray"));
- assertTrue(first(map.get("clonableArray")) != first(mapClone.get("clonableArray")));
+ assertNotSame(map.get("clonableArray"), mapClone.get("clonableArray"));
+ assertNotSame(first(map.get("clonableArray")), first(mapClone.get("clonableArray")));
assertEquals(first(map.get("nonclonableArray")), first(mapClone.get("nonclonableArray")));
}