summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/js/app/yarn.lock166
-rw-r--r--dependency-versions/pom.xml6
-rw-r--r--document/src/main/java/com/yahoo/document/update/TensorModifyUpdate.java2
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/UnpackBitsNode.java2
-rw-r--r--vespajlib/abi-spec.json2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java29
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Concat.java16
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java7
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java4
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/impl/Label.java17
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny.java77
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny1.java8
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny2.java11
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny3.java17
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny4.java21
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAnyN.java14
16 files changed, 190 insertions, 209 deletions
diff --git a/client/js/app/yarn.lock b/client/js/app/yarn.lock
index 51710bddf26..99a4f7f9425 100644
--- a/client/js/app/yarn.lock
+++ b/client/js/app/yarn.lock
@@ -1311,70 +1311,70 @@
resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.0.tgz#461a952c2872dd82c8b2e9b74c4dfaff569123e2"
integrity sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==
-"@rollup/rollup-android-arm-eabi@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz#66b8d9cb2b3a474d115500f9ebaf43e2126fe496"
- integrity sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==
-
-"@rollup/rollup-android-arm64@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz#46327d5b86420d2307946bec1535fdf00356e47d"
- integrity sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==
-
-"@rollup/rollup-darwin-arm64@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz#166987224d2f8b1e2fd28ee90c447d52271d5e90"
- integrity sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==
-
-"@rollup/rollup-darwin-x64@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz#a2e6e096f74ccea6e2f174454c26aef6bcdd1274"
- integrity sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==
-
-"@rollup/rollup-linux-arm-gnueabihf@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz#09fcd4c55a2d6160c5865fec708a8e5287f30515"
- integrity sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==
-
-"@rollup/rollup-linux-arm64-gnu@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz#19a3c0b6315c747ca9acf86e9b710cc2440f83c9"
- integrity sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==
-
-"@rollup/rollup-linux-arm64-musl@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz#94aaf95fdaf2ad9335983a4552759f98e6b2e850"
- integrity sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==
-
-"@rollup/rollup-linux-riscv64-gnu@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz#160510e63f4b12618af4013bddf1761cf9fc9880"
- integrity sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==
-
-"@rollup/rollup-linux-x64-gnu@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz#5ac5d068ce0726bd0a96ca260d5bd93721c0cb98"
- integrity sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==
-
-"@rollup/rollup-linux-x64-musl@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz#bafa759ab43e8eab9edf242a8259ffb4f2a57a5d"
- integrity sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==
-
-"@rollup/rollup-win32-arm64-msvc@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz#1cc3416682e5a20d8f088f26657e6e47f8db468e"
- integrity sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==
-
-"@rollup/rollup-win32-ia32-msvc@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz#7d2251e1aa5e8a1e47c86891fe4547a939503461"
- integrity sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==
-
-"@rollup/rollup-win32-x64-msvc@4.9.6":
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz#2c1fb69e02a3f1506f52698cfdc3a8b6386df9a6"
- integrity sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==
+"@rollup/rollup-android-arm-eabi@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.10.0.tgz#786eaf6372be2fc209cc957c14aa9d3ff8fefe6a"
+ integrity sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==
+
+"@rollup/rollup-android-arm64@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.10.0.tgz#0114a042fd6396f4f3233e6171fd5b61a36ed539"
+ integrity sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==
+
+"@rollup/rollup-darwin-arm64@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.10.0.tgz#944d007c1dc71a8c9174d11671c0c34bd74a2c81"
+ integrity sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==
+
+"@rollup/rollup-darwin-x64@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.10.0.tgz#1d08cb4521a058d7736ab1c7fe988daf034a2598"
+ integrity sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==
+
+"@rollup/rollup-linux-arm-gnueabihf@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.10.0.tgz#4763eec1591bf0e99a54ad3d1ef39cb268ed7b19"
+ integrity sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==
+
+"@rollup/rollup-linux-arm64-gnu@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.10.0.tgz#e6dae70c53ace836973526c41803b877cffc6f7b"
+ integrity sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==
+
+"@rollup/rollup-linux-arm64-musl@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.10.0.tgz#5692e1a0feba0cc4a933864961afc3211177d242"
+ integrity sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==
+
+"@rollup/rollup-linux-riscv64-gnu@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.10.0.tgz#fbe3d80f7a7ac54a8847f5bddd1bc6f7b9ccb65f"
+ integrity sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==
+
+"@rollup/rollup-linux-x64-gnu@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.10.0.tgz#3f06b55ccf173446d390d0306643dff62ec99807"
+ integrity sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==
+
+"@rollup/rollup-linux-x64-musl@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.10.0.tgz#e4ac9b27041c83d7faab6205f62763103eb317ba"
+ integrity sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==
+
+"@rollup/rollup-win32-arm64-msvc@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.10.0.tgz#6ad0d4fb0066f240778ee3f61eecf7aa0357f883"
+ integrity sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==
+
+"@rollup/rollup-win32-ia32-msvc@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.10.0.tgz#29d50292381311cc8d3623e73b427b7e2e40a653"
+ integrity sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==
+
+"@rollup/rollup-win32-x64-msvc@4.10.0":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.10.0.tgz#4eedd01af3a82c1acb0fe6d837ebf339c4cbf839"
+ integrity sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==
"@sinclair/typebox@^0.27.8":
version "0.27.8"
@@ -4818,25 +4818,25 @@ rimraf@^3.0.2:
glob "^7.1.3"
rollup@^4.2.0:
- version "4.9.6"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.6.tgz#4515facb0318ecca254a2ee1315e22e09efc50a0"
- integrity sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.10.0.tgz#244c2cb54a8de004a949fe6036a0801be9060456"
+ integrity sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==
dependencies:
"@types/estree" "1.0.5"
optionalDependencies:
- "@rollup/rollup-android-arm-eabi" "4.9.6"
- "@rollup/rollup-android-arm64" "4.9.6"
- "@rollup/rollup-darwin-arm64" "4.9.6"
- "@rollup/rollup-darwin-x64" "4.9.6"
- "@rollup/rollup-linux-arm-gnueabihf" "4.9.6"
- "@rollup/rollup-linux-arm64-gnu" "4.9.6"
- "@rollup/rollup-linux-arm64-musl" "4.9.6"
- "@rollup/rollup-linux-riscv64-gnu" "4.9.6"
- "@rollup/rollup-linux-x64-gnu" "4.9.6"
- "@rollup/rollup-linux-x64-musl" "4.9.6"
- "@rollup/rollup-win32-arm64-msvc" "4.9.6"
- "@rollup/rollup-win32-ia32-msvc" "4.9.6"
- "@rollup/rollup-win32-x64-msvc" "4.9.6"
+ "@rollup/rollup-android-arm-eabi" "4.10.0"
+ "@rollup/rollup-android-arm64" "4.10.0"
+ "@rollup/rollup-darwin-arm64" "4.10.0"
+ "@rollup/rollup-darwin-x64" "4.10.0"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.10.0"
+ "@rollup/rollup-linux-arm64-gnu" "4.10.0"
+ "@rollup/rollup-linux-arm64-musl" "4.10.0"
+ "@rollup/rollup-linux-riscv64-gnu" "4.10.0"
+ "@rollup/rollup-linux-x64-gnu" "4.10.0"
+ "@rollup/rollup-linux-x64-musl" "4.10.0"
+ "@rollup/rollup-win32-arm64-msvc" "4.10.0"
+ "@rollup/rollup-win32-ia32-msvc" "4.10.0"
+ "@rollup/rollup-win32-x64-msvc" "4.10.0"
fsevents "~2.3.2"
rsvp@^4.8.4:
@@ -5447,9 +5447,9 @@ v8-to-istanbul@^9.0.1:
convert-source-map "^1.6.0"
vite@^5.0.5:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.0.tgz#4510394f48b942ecc6843025f4b926ba99a2fb8c"
- integrity sha512-STmSFzhY4ljuhz14bg9LkMTk3d98IO6DIArnTY6MeBwiD1Za2StcQtz7fzOUnRCqrHSD5+OS2reg4HOz1eoLnw==
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.1.tgz#294e39b199d669981efc7e0261b14f78ec80819e"
+ integrity sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==
dependencies:
esbuild "^0.19.3"
postcss "^8.4.35"
diff --git a/dependency-versions/pom.xml b/dependency-versions/pom.xml
index 9429d7a61a3..7b4ad01ee4d 100644
--- a/dependency-versions/pom.xml
+++ b/dependency-versions/pom.xml
@@ -52,7 +52,7 @@
<!-- Dependencies used internally in Vespa, not visible for users, or only visible in test classpath -->
- <aircompressor.vespa.version>0.25</aircompressor.vespa.version>
+ <aircompressor.vespa.version>0.26</aircompressor.vespa.version>
<airline.vespa.version>0.9</airline.vespa.version>
<antlr.vespa.version>3.5.3</antlr.vespa.version>
<antlr4.vespa.version>4.13.1</antlr4.vespa.version>
@@ -65,7 +65,7 @@
<assertj.vespa.version>3.25.3</assertj.vespa.version>
<!-- Athenz dependencies. Make sure these dependencies match those in Vespa's internal repositories -->
- <aws-sdk.vespa.version>1.12.654</aws-sdk.vespa.version>
+ <aws-sdk.vespa.version>1.12.656</aws-sdk.vespa.version>
<athenz.vespa.version>1.11.51</athenz.vespa.version>
<!-- Athenz END -->
@@ -79,7 +79,7 @@
<byte-buddy.vespa.version>1.14.11</byte-buddy.vespa.version>
<checker-qual.vespa.version>3.38.0</checker-qual.vespa.version>
<commons-beanutils.vespa.version>1.9.4</commons-beanutils.vespa.version>
- <commons-codec.vespa.version>1.16.0</commons-codec.vespa.version>
+ <commons-codec.vespa.version>1.16.1</commons-codec.vespa.version>
<commons-collections.vespa.version>3.2.2</commons-collections.vespa.version>
<commons-csv.vespa.version>1.10.0</commons-csv.vespa.version>
<commons-digester.vespa.version>3.2</commons-digester.vespa.version>
diff --git a/document/src/main/java/com/yahoo/document/update/TensorModifyUpdate.java b/document/src/main/java/com/yahoo/document/update/TensorModifyUpdate.java
index 7e15a729684..8d42438e931 100644
--- a/document/src/main/java/com/yahoo/document/update/TensorModifyUpdate.java
+++ b/document/src/main/java/com/yahoo/document/update/TensorModifyUpdate.java
@@ -119,7 +119,7 @@ public class TensorModifyUpdate extends ValueUpdate<TensorFieldValue> {
for (int i = 0; i < type.dimensions().size(); ++i) {
var dim = type.dimensions().get(i);
if (dim.isMapped()) {
- builder.add(dim.name(), (int) address.numericLabel(i));
+ builder.add(dim.name(), address.numericLabel(i));
}
}
return builder.build();
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/UnpackBitsNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/UnpackBitsNode.java
index ed672c2dcd7..81ad09dd880 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/UnpackBitsNode.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/UnpackBitsNode.java
@@ -121,7 +121,7 @@ public class UnpackBitsNode extends CompositeNode {
long newIdx = oldAddr.numericLabel(i) * 8 + bitIdx;
addrBuilder.add(dim.name(), newIdx);
} else {
- addrBuilder.add(dim.name(), (int) oldAddr.numericLabel(i));
+ addrBuilder.add(dim.name(), oldAddr.numericLabel(i));
}
}
var newAddr = addrBuilder.build();
diff --git a/vespajlib/abi-spec.json b/vespajlib/abi-spec.json
index 7f77582ea81..754352a45a4 100644
--- a/vespajlib/abi-spec.json
+++ b/vespajlib/abi-spec.json
@@ -1281,8 +1281,8 @@
"public void <init>(com.yahoo.tensor.TensorType)",
"public com.yahoo.tensor.TensorAddress$Builder add(java.lang.String)",
"public com.yahoo.tensor.TensorAddress$Builder add(java.lang.String, java.lang.String)",
- "public com.yahoo.tensor.TensorAddress$Builder add(java.lang.String, long)",
"public com.yahoo.tensor.TensorAddress$Builder add(java.lang.String, int)",
+ "public com.yahoo.tensor.TensorAddress$Builder add(java.lang.String, long)",
"public com.yahoo.tensor.TensorAddress$Builder copy()",
"public com.yahoo.tensor.TensorType type()",
"public com.yahoo.tensor.TensorAddress build()"
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
index 4fa759668b6..cfa92719f0c 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorAddress.java
@@ -1,7 +1,6 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.tensor;
-import com.yahoo.tensor.impl.Convert;
import com.yahoo.tensor.impl.Label;
import com.yahoo.tensor.impl.TensorAddressAny;
@@ -105,16 +104,16 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
/** Returns an address with only some of the dimension. Ordering will also be according to indexMap */
public TensorAddress partialCopy(int[] indexMap) {
- int[] labels = new int[indexMap.length];
+ long[] labels = new long[indexMap.length];
for (int i = 0; i < labels.length; ++i) {
- labels[i] = (int)numericLabel(indexMap[i]);
+ labels[i] = numericLabel(indexMap[i]);
}
return TensorAddressAny.ofUnsafe(labels);
}
/** Creates a complete address by taking the mapped dimmensions from this and the indexed from the indexedPart */
public TensorAddress fullAddressOf(List<TensorType.Dimension> dimensions, int[] densePart) {
- int[] labels = new int[dimensions.size()];
+ long[] labels = new long[dimensions.size()];
int mappedIndex = 0;
int indexedIndex = 0;
for (int i = 0; i < labels.length; i++) {
@@ -123,7 +122,7 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
labels[i] = densePart[indexedIndex];
indexedIndex++;
} else {
- labels[i] = (int)numericLabel(mappedIndex);
+ labels[i] = numericLabel(mappedIndex);
mappedIndex++;
}
}
@@ -144,7 +143,7 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
for (int i = 0; i < dimensions.size(); ++i) {
TensorType.Dimension dimension = dimensions.get(i);
if ( ! dimension.isIndexed())
- builder.add(dimension.name(), (int)numericLabel(i));
+ builder.add(dimension.name(), numericLabel(i));
}
return builder.build();
}
@@ -153,10 +152,10 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
public static class Builder {
final TensorType type;
- final int[] labels;
+ final long[] labels;
- private static int[] createEmptyLabels(int size) {
- int[] labels = new int[size];
+ private static long[] createEmptyLabels(int size) {
+ long[] labels = new long[size];
Arrays.fill(labels, Tensor.invalidIndex);
return labels;
}
@@ -165,7 +164,7 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
this(type, createEmptyLabels(type.dimensions().size()));
}
- private Builder(TensorType type, int[] labels) {
+ private Builder(TensorType type, long[] labels) {
this.type = type;
this.labels = labels;
}
@@ -199,10 +198,12 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
return this;
}
- public Builder add(String dimension, long label) {
- return add(dimension, Convert.safe2Int(label));
- }
+ @Deprecated
public Builder add(String dimension, int label) {
+ return add(dimension, (long) label);
+ }
+
+ public Builder add(String dimension, long label) {
Objects.requireNonNull(dimension, "dimension cannot be null");
int labelIndex = type.indexOfDimensionAsInt(dimension);
if ( labelIndex < 0)
@@ -240,7 +241,7 @@ public abstract class TensorAddress implements Comparable<TensorAddress> {
super(type);
}
- private PartialBuilder(TensorType type, int[] labels) {
+ private PartialBuilder(TensorType type, long[] labels) {
super(type, labels);
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Concat.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Concat.java
index 9125b35ea5d..2635cbecb94 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Concat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Concat.java
@@ -355,16 +355,16 @@ public class Concat<NAMETYPE extends Name> extends PrimitiveTensorFunction<NAMET
}
TensorAddress combine(TensorAddress match, TensorAddress leftOnly, TensorAddress rightOnly, int concatDimIdx) {
- int[] labels = new int[plan.resultType.rank()];
+ long[] labels = new long[plan.resultType.rank()];
int out = 0;
int m = 0;
int a = 0;
int b = 0;
for (var how : plan.combineHow) {
switch (how) {
- case left -> labels[out++] = (int) leftOnly.numericLabel(a++);
- case right -> labels[out++] = (int) rightOnly.numericLabel(b++);
- case both -> labels[out++] = (int) match.numericLabel(m++);
+ case left -> labels[out++] = leftOnly.numericLabel(a++);
+ case right -> labels[out++] = rightOnly.numericLabel(b++);
+ case both -> labels[out++] = match.numericLabel(m++);
case concat -> labels[out++] = concatDimIdx;
default -> throw new IllegalArgumentException("cannot handle: " + how);
}
@@ -399,8 +399,8 @@ public class Concat<NAMETYPE extends Name> extends PrimitiveTensorFunction<NAMET
CellVectorMapMap decompose(Tensor input, SplitHow how) {
var iter = input.cellIterator();
- int[] commonLabels = new int[(int)how.numCommon()];
- int[] separateLabels = new int[(int)how.numSeparate()];
+ long[] commonLabels = new long[(int)how.numCommon()];
+ long[] separateLabels = new long[(int)how.numSeparate()];
CellVectorMapMap result = new CellVectorMapMap();
while (iter.hasNext()) {
var cell = iter.next();
@@ -410,8 +410,8 @@ public class Concat<NAMETYPE extends Name> extends PrimitiveTensorFunction<NAMET
int separateIdx = 0;
for (int i = 0; i < how.handleDims.size(); i++) {
switch (how.handleDims.get(i)) {
- case common -> commonLabels[commonIdx++] = (int) addr.numericLabel(i);
- case separate -> separateLabels[separateIdx++] = (int) addr.numericLabel(i);
+ case common -> commonLabels[commonIdx++] = addr.numericLabel(i);
+ case separate -> separateLabels[separateIdx++] = addr.numericLabel(i);
case concat -> ccDimIndex = addr.numericLabel(i);
default -> throw new IllegalArgumentException("cannot handle: " + how.handleDims.get(i));
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java
index fb345264f56..9f6624752d1 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Join.java
@@ -12,7 +12,6 @@ import com.yahoo.tensor.TypeResolver;
import com.yahoo.tensor.evaluation.EvaluationContext;
import com.yahoo.tensor.evaluation.Name;
import com.yahoo.tensor.evaluation.TypeContext;
-import com.yahoo.tensor.impl.Convert;
import com.yahoo.tensor.impl.TensorAddressAny;
import java.util.ArrayList;
@@ -377,7 +376,7 @@ public class Join<NAMETYPE extends Name> extends PrimitiveTensorFunction<NAMETYP
private static TensorAddress joinAddresses(TensorAddress a, int[] aToIndexes, TensorAddress b, int[] bToIndexes,
TensorType joinedType) {
- int[] joinedLabels = new int[joinedType.dimensions().size()];
+ long[] joinedLabels = new long[joinedType.dimensions().size()];
Arrays.fill(joinedLabels, Tensor.invalidIndex);
mapContent(a, joinedLabels, aToIndexes);
boolean compatible = mapContent(b, joinedLabels, bToIndexes);
@@ -391,10 +390,10 @@ public class Join<NAMETYPE extends Name> extends PrimitiveTensorFunction<NAMETYP
* @return true if the mapping was successful, false if one of the destination positions was
* occupied by a different value
*/
- private static boolean mapContent(TensorAddress from, int[] to, int[] indexMap) {
+ private static boolean mapContent(TensorAddress from, long[] to, int[] indexMap) {
for (int i = 0, size = from.size(); i < size; i++) {
int toIndex = indexMap[i];
- int label = Convert.safe2Int(from.numericLabel(i));
+ long label = from.numericLabel(i);
if (to[toIndex] != Tensor.invalidIndex && to[toIndex] != label)
return false;
to[toIndex] = label;
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java
index 38ac42a5f1f..8f831611a0a 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java
@@ -52,7 +52,7 @@ public class Slice<NAMETYPE extends Name> extends PrimitiveTensorFunction<NAMETY
public List<TensorFunction<NAMETYPE>> selectorFunctions() {
var result = new ArrayList<TensorFunction<NAMETYPE>>();
for (var dimVal : subspaceAddress) {
- dimVal.index().ifPresent(fun -> fun.asTensorFunction().ifPresent(tf -> result.add(tf)));
+ dimVal.index().flatMap(ScalarFunction::asTensorFunction).ifPresent(result::add);
}
return result;
}
@@ -131,7 +131,7 @@ public class Slice<NAMETYPE extends Name> extends PrimitiveTensorFunction<NAMETY
for (int i = 0; i < address.size(); i++) {
String dimension = type.dimensions().get(i).name();
if (subspaceType.dimension(type.dimensions().get(i).name()).isPresent())
- b.add(dimension, (int)address.numericLabel(i));
+ b.add(dimension, address.numericLabel(i));
}
return b.build();
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/impl/Label.java b/vespajlib/src/main/java/com/yahoo/tensor/impl/Label.java
index 7c1e8646245..8933131fa53 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/impl/Label.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/impl/Label.java
@@ -18,7 +18,7 @@ public class Label {
private static final String[] SMALL_INDEXES = createSmallIndexesAsStrings(1000);
- private final static Map<String, Integer> string2Enum = new ConcurrentHashMap<>();
+ private final static Map<String, Long> string2Enum = new ConcurrentHashMap<>();
// Index 0 is unused, that is a valid positive number
// 1(-1) is reserved for the Tensor.INVALID_INDEX
@@ -33,7 +33,7 @@ public class Label {
return asStrings;
}
- private static int addNewUniqueString(String s) {
+ private static long addNewUniqueString(String s) {
synchronized (string2Enum) {
if (numUniqeStrings >= uniqueStrings.length) {
uniqueStrings = Arrays.copyOf(uniqueStrings, uniqueStrings.length*2);
@@ -56,28 +56,25 @@ public class Label {
return true;
}
- public static int toNumber(String s) {
+ public static long toNumber(String s) {
if (s == null) { return Tensor.invalidIndex; }
try {
if (validNumericIndex(s)) {
- return Integer.parseInt(s);
+ return Long.parseLong(s, 10);
}
} catch (NumberFormatException e) {
}
return string2Enum.computeIfAbsent(s, Label::addNewUniqueString);
}
- public static String fromNumber(int v) {
+ public static String fromNumber(long v) {
if (v >= 0) {
return asNumericString(v);
} else {
if (v == Tensor.invalidIndex) { return null; }
- return uniqueStrings[-v];
+ int index = -Convert.safe2Int(v);
+ return uniqueStrings[index];
}
}
- public static String fromNumber(long v) {
- return fromNumber(Convert.safe2Int(v));
- }
-
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny.java b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny.java
index 2e70811a67c..9003d263699 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny.java
@@ -5,7 +5,8 @@ package com.yahoo.tensor.impl;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorAddress;
-import static com.yahoo.tensor.impl.Convert.safe2Int;
+import java.util.Arrays;
+
import static com.yahoo.tensor.impl.Label.toNumber;
import static com.yahoo.tensor.impl.Label.fromNumber;
@@ -21,7 +22,7 @@ abstract public class TensorAddressAny extends TensorAddress {
@Override
public String label(int i) {
- return fromNumber((int)numericLabel(i));
+ return fromNumber(numericLabel(i));
}
public static TensorAddress of() {
@@ -45,11 +46,11 @@ abstract public class TensorAddressAny extends TensorAddress {
}
public static TensorAddress of(String[] labels) {
- int[] labelsAsInt = new int[labels.length];
+ long[] labelsAsLong = new long[labels.length];
for (int i = 0; i < labels.length; i++) {
- labelsAsInt[i] = toNumber(labels[i]);
+ labelsAsLong[i] = toNumber(labels[i]);
}
- return ofUnsafe(labelsAsInt);
+ return ofUnsafe(labelsAsLong);
}
public static TensorAddress of(int label) {
@@ -71,80 +72,60 @@ abstract public class TensorAddressAny extends TensorAddress {
public static TensorAddress of(int ... labels) {
return switch (labels.length) {
case 0 -> of();
- case 1 -> new TensorAddressAny1(sanitize(labels[0]));
- case 2 -> new TensorAddressAny2(sanitize(labels[0]), sanitize(labels[1]));
- case 3 -> new TensorAddressAny3(sanitize(labels[0]), sanitize(labels[1]), sanitize(labels[2]));
- case 4 -> new TensorAddressAny4(sanitize(labels[0]), sanitize(labels[1]), sanitize(labels[2]), sanitize(labels[3]));
+ case 1 -> of(labels[0]);
+ case 2 -> of(labels[0], labels[1]);
+ case 3 -> of(labels[0], labels[1], labels[2]);
+ case 4 -> of(labels[0], labels[1], labels[2], labels[3]);
default -> {
+ long[] copy = new long[labels.length];
for (int i = 0; i < labels.length; i++) {
- sanitize(labels[i]);
+ copy[i] = sanitize(labels[i]);
}
- yield new TensorAddressAnyN(labels);
+ yield new TensorAddressAnyN(copy);
}
};
}
- public static TensorAddress of(long label) {
- return of(safe2Int(label));
- }
-
- public static TensorAddress of(long label0, long label1) {
- return of(safe2Int(label0), safe2Int(label1));
- }
-
- public static TensorAddress of(long label0, long label1, long label2) {
- return of(safe2Int(label0), safe2Int(label1), safe2Int(label2));
- }
-
- public static TensorAddress of(long label0, long label1, long label2, long label3) {
- return of(safe2Int(label0), safe2Int(label1), safe2Int(label2), safe2Int(label3));
- }
-
public static TensorAddress of(long ... labels) {
return switch (labels.length) {
case 0 -> of();
- case 1 -> ofUnsafe(safe2Int(labels[0]));
- case 2 -> ofUnsafe(safe2Int(labels[0]), safe2Int(labels[1]));
- case 3 -> ofUnsafe(safe2Int(labels[0]), safe2Int(labels[1]), safe2Int(labels[2]));
- case 4 -> ofUnsafe(safe2Int(labels[0]), safe2Int(labels[1]), safe2Int(labels[2]), safe2Int(labels[3]));
- default -> {
- int[] labelsAsInt = new int[labels.length];
- for (int i = 0; i < labels.length; i++) {
- labelsAsInt[i] = safe2Int(labels[i]);
- }
- yield of(labelsAsInt);
- }
+ case 1 -> of(labels[0]);
+ case 2 -> of(labels[0], labels[1]);
+ case 3 -> of(labels[0], labels[1], labels[2]);
+ case 4 -> of(labels[0], labels[1], labels[2], labels[3]);
+ default -> new TensorAddressAnyN(Arrays.copyOf(labels, labels.length));
+
};
}
- private static TensorAddress ofUnsafe(int label) {
+ private static TensorAddress of(long label) {
return new TensorAddressAny1(label);
}
- private static TensorAddress ofUnsafe(int label0, int label1) {
+ private static TensorAddress of(long label0, long label1) {
return new TensorAddressAny2(label0, label1);
}
- private static TensorAddress ofUnsafe(int label0, int label1, int label2) {
+ public static TensorAddress of(long label0, long label1, long label2) {
return new TensorAddressAny3(label0, label1, label2);
}
- private static TensorAddress ofUnsafe(int label0, int label1, int label2, int label3) {
+ public static TensorAddress of(long label0, long label1, long label2, long label3) {
return new TensorAddressAny4(label0, label1, label2, label3);
}
- public static TensorAddress ofUnsafe(int ... labels) {
+ public static TensorAddress ofUnsafe(long ... labels) {
return switch (labels.length) {
case 0 -> of();
- case 1 -> ofUnsafe(labels[0]);
- case 2 -> ofUnsafe(labels[0], labels[1]);
- case 3 -> ofUnsafe(labels[0], labels[1], labels[2]);
- case 4 -> ofUnsafe(labels[0], labels[1], labels[2], labels[3]);
+ case 1 -> of(labels[0]);
+ case 2 -> of(labels[0], labels[1]);
+ case 3 -> of(labels[0], labels[1], labels[2]);
+ case 4 -> of(labels[0], labels[1], labels[2], labels[3]);
default -> new TensorAddressAnyN(labels);
};
}
- private static int sanitize(int label) {
+ private static long sanitize(long label) {
if (label < Tensor.invalidIndex) {
throw new IndexOutOfBoundsException("cell label " + label + " must be positive");
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny1.java b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny1.java
index a9be6173781..91b2e889ffa 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny1.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny1.java
@@ -11,9 +11,9 @@ import com.yahoo.tensor.TensorAddress;
*/
final class TensorAddressAny1 extends TensorAddressAny {
- private final int label;
+ private final long label;
- TensorAddressAny1(int label) { this.label = label; }
+ TensorAddressAny1(long label) { this.label = label; }
@Override public int size() { return 1; }
@@ -27,11 +27,11 @@ final class TensorAddressAny1 extends TensorAddressAny {
@Override
public TensorAddress withLabel(int labelIndex, long label) {
- if (labelIndex == 0) return new TensorAddressAny1(Convert.safe2Int(label));
+ if (labelIndex == 0) return new TensorAddressAny1(label);
throw new IllegalArgumentException("No label " + labelIndex);
}
- @Override public int hashCode() { return Math.abs(label); }
+ @Override public int hashCode() { return (int)Math.abs(label); }
@Override
public boolean equals(Object o) {
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny2.java b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny2.java
index 43f65d495cf..771b2499dc5 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny2.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny2.java
@@ -13,9 +13,9 @@ import static java.lang.Math.abs;
*/
final class TensorAddressAny2 extends TensorAddressAny {
- private final int label0, label1;
+ private final long label0, label1;
- TensorAddressAny2(int label0, int label1) {
+ TensorAddressAny2(long label0, long label1) {
this.label0 = label0;
this.label1 = label1;
}
@@ -34,15 +34,16 @@ final class TensorAddressAny2 extends TensorAddressAny {
@Override
public TensorAddress withLabel(int labelIndex, long label) {
return switch (labelIndex) {
- case 0 -> new TensorAddressAny2(Convert.safe2Int(label), label1);
- case 1 -> new TensorAddressAny2(label0, Convert.safe2Int(label));
+ case 0 -> new TensorAddressAny2(label, label1);
+ case 1 -> new TensorAddressAny2(label0, label);
default -> throw new IllegalArgumentException("No label " + labelIndex);
};
}
@Override
public int hashCode() {
- return abs(label0) | (abs(label1) << 32 - Integer.numberOfLeadingZeros(abs(label0)));
+ long hash = abs(label0) | (abs(label1) << (64 - Long.numberOfLeadingZeros(abs(label0))));
+ return (int) hash;
}
@Override
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny3.java b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny3.java
index c22ff47b3c4..998a6a073fe 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny3.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny3.java
@@ -13,9 +13,9 @@ import static java.lang.Math.abs;
*/
final class TensorAddressAny3 extends TensorAddressAny {
- private final int label0, label1, label2;
+ private final long label0, label1, label2;
- TensorAddressAny3(int label0, int label1, int label2) {
+ TensorAddressAny3(long label0, long label1, long label2) {
this.label0 = label0;
this.label1 = label1;
this.label2 = label2;
@@ -36,18 +36,19 @@ final class TensorAddressAny3 extends TensorAddressAny {
@Override
public TensorAddress withLabel(int labelIndex, long label) {
return switch (labelIndex) {
- case 0 -> new TensorAddressAny3(Convert.safe2Int(label), label1, label2);
- case 1 -> new TensorAddressAny3(label0, Convert.safe2Int(label), label2);
- case 2 -> new TensorAddressAny3(label0, label1, Convert.safe2Int(label));
+ case 0 -> new TensorAddressAny3(label, label1, label2);
+ case 1 -> new TensorAddressAny3(label0, label, label2);
+ case 2 -> new TensorAddressAny3(label0, label1, label);
default -> throw new IllegalArgumentException("No label " + labelIndex);
};
}
@Override
public int hashCode() {
- return abs(label0) |
- (abs(label1) << (1*32 - Integer.numberOfLeadingZeros(abs(label0)))) |
- (abs(label2) << (2*32 - (Integer.numberOfLeadingZeros(abs(label0)) + Integer.numberOfLeadingZeros(abs(label1)))));
+ long hash = abs(label0) |
+ (abs(label1) << (1*64 - Long.numberOfLeadingZeros(abs(label0)))) |
+ (abs(label2) << (2*64 - (Long.numberOfLeadingZeros(abs(label0)) + Long.numberOfLeadingZeros(abs(label1)))));
+ return (int) hash;
}
@Override
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny4.java b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny4.java
index 6eb6b9216bf..197d1e7d580 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny4.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAny4.java
@@ -13,9 +13,9 @@ import static java.lang.Math.abs;
*/
final class TensorAddressAny4 extends TensorAddressAny {
- private final int label0, label1, label2, label3;
+ private final long label0, label1, label2, label3;
- TensorAddressAny4(int label0, int label1, int label2, int label3) {
+ TensorAddressAny4(long label0, long label1, long label2, long label3) {
this.label0 = label0;
this.label1 = label1;
this.label2 = label2;
@@ -38,20 +38,21 @@ final class TensorAddressAny4 extends TensorAddressAny {
@Override
public TensorAddress withLabel(int labelIndex, long label) {
return switch (labelIndex) {
- case 0 -> new TensorAddressAny4(Convert.safe2Int(label), label1, label2, label3);
- case 1 -> new TensorAddressAny4(label0, Convert.safe2Int(label), label2, label3);
- case 2 -> new TensorAddressAny4(label0, label1, Convert.safe2Int(label), label3);
- case 3 -> new TensorAddressAny4(label0, label1, label2, Convert.safe2Int(label));
+ case 0 -> new TensorAddressAny4(label, label1, label2, label3);
+ case 1 -> new TensorAddressAny4(label0, label, label2, label3);
+ case 2 -> new TensorAddressAny4(label0, label1,label, label3);
+ case 3 -> new TensorAddressAny4(label0, label1, label2, label);
default -> throw new IllegalArgumentException("No label " + labelIndex);
};
}
@Override
public int hashCode() {
- return abs(label0) |
- (abs(label1) << (1*32 - Integer.numberOfLeadingZeros(abs(label0)))) |
- (abs(label2) << (2*32 - (Integer.numberOfLeadingZeros(abs(label0)) + Integer.numberOfLeadingZeros(abs(label1))))) |
- (abs(label3) << (3*32 - (Integer.numberOfLeadingZeros(abs(label0)) + Integer.numberOfLeadingZeros(abs(label1)) + Integer.numberOfLeadingZeros(abs(label1)))));
+ long hash = abs(label0) |
+ (abs(label1) << (1*64 - Long.numberOfLeadingZeros(abs(label0)))) |
+ (abs(label2) << (2*64 - (Long.numberOfLeadingZeros(abs(label0)) + Long.numberOfLeadingZeros(abs(label1))))) |
+ (abs(label3) << (3*64 - (Long.numberOfLeadingZeros(abs(label0)) + Long.numberOfLeadingZeros(abs(label1)) + Long.numberOfLeadingZeros(abs(label1)))));
+ return (int) hash;
}
@Override
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAnyN.java b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAnyN.java
index d5bac62bf18..2126ab21709 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAnyN.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/impl/TensorAddressAnyN.java
@@ -15,9 +15,9 @@ import static java.lang.Math.abs;
*/
final class TensorAddressAnyN extends TensorAddressAny {
- private final int[] labels;
+ private final long[] labels;
- TensorAddressAnyN(int[] labels) {
+ TensorAddressAnyN(long[] labels) {
if (labels.length < 1) throw new IllegalArgumentException("Need at least 1 label");
this.labels = labels;
}
@@ -28,17 +28,17 @@ final class TensorAddressAnyN extends TensorAddressAny {
@Override
public TensorAddress withLabel(int labelIndex, long label) {
- int[] copy = Arrays.copyOf(labels, labels.length);
- copy[labelIndex] = Convert.safe2Int(label);
+ long[] copy = Arrays.copyOf(labels, labels.length);
+ copy[labelIndex] = label;
return new TensorAddressAnyN(copy);
}
@Override public int hashCode() {
- int hash = abs(labels[0]);
+ long hash = abs(labels[0]);
for (int i = 0; i < size(); i++) {
- hash = hash | (abs(labels[i]) << (32 - Integer.numberOfLeadingZeros(hash)));
+ hash = hash | (abs(labels[i]) << (32 - Long.numberOfLeadingZeros(hash)));
}
- return hash;
+ return (int) hash;
}
@Override