Simplify identity hashcode implementation.
PiperOrigin-RevId: 357871100
Change-Id: I10a2c43ff3f52f90001ed90ccc3816d35c9cc614
diff --git a/dev/core/test/com/google/gwt/dev/CompilerTest.java b/dev/core/test/com/google/gwt/dev/CompilerTest.java
index a8bce00..cfcae5d 100644
--- a/dev/core/test/com/google/gwt/dev/CompilerTest.java
+++ b/dev/core/test/com/google/gwt/dev/CompilerTest.java
@@ -2767,6 +2767,7 @@
"java.lang.Throwable$HasJavaThrowable",
"java.lang.Throwable$NativeError",
"java.lang.Throwable$NativeTypeError",
+ "javaemul.internal.HashCodes",
"javaemul.internal.NativeRegExp",
"javaemul.internal.NativeRegExp$Match"));
return staleTypeNames;
diff --git a/user/super/com/google/gwt/emul/javaemul/internal/HashCodes.java b/user/super/com/google/gwt/emul/javaemul/internal/HashCodes.java
index 8e4bdd4..0fdd055 100644
--- a/user/super/com/google/gwt/emul/javaemul/internal/HashCodes.java
+++ b/user/super/com/google/gwt/emul/javaemul/internal/HashCodes.java
@@ -15,10 +15,12 @@
*/
package javaemul.internal;
-/**
- * Contains logics for calculating hash codes in JavaScript.
- */
+import jsinterop.annotations.JsType;
+
+/** Contains logics for calculating hash codes in JavaScript. */
+@JsType
public class HashCodes {
+
public static int getIdentityHashCode(Object o) {
switch (JsUtils.typeOf(o)) {
case "string":
@@ -32,7 +34,13 @@
}
}
- public static int getObjectIdentityHashCode(Object o) {
- return ObjectHashing.getHashCode(o);
+ private static int nextHash;
+
+ public static native int getObjectIdentityHashCode(Object o) /*-{
+ return o.$H || (o.$H = @HashCodes::getNextHash()());
+ }-*/;
+
+ public static int getNextHash() {
+ return ++nextHash;
}
}
diff --git a/user/super/com/google/gwt/emul/javaemul/internal/ObjectHashing.java b/user/super/com/google/gwt/emul/javaemul/internal/ObjectHashing.java
deleted file mode 100644
index 8821833..0000000
--- a/user/super/com/google/gwt/emul/javaemul/internal/ObjectHashing.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2016 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package javaemul.internal;
-
-/**
- * Utility class to generate hash code for Objects.
- */
-class ObjectHashing {
-
- private static int nextHashId = 0;
- private static final String HASH_CODE_PROPERTY = "$H";
-
- public static native int getHashCode(Object o) /*-{
- return o.$H || (o.$H = @ObjectHashing::getNextHashId()());
- }-*/;
-
- /**
- * Called from JSNI. Do not change this implementation without updating:
- * <ul>
- * <li>{@link com.google.gwt.user.client.rpc.impl.SerializerBase}</li>
- * </ul>
- */
- private static int getNextHashId() {
- return ++nextHashId;
- }
-}