Skip to content

Commit a4160ee

Browse files
committed
Calculation of hash for huge integers moved to PInt
1 parent 811e525 commit a4160ee

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/ints/IntBuiltins.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@
5757
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
5858
import com.oracle.graal.python.builtins.PythonBuiltins;
5959
import com.oracle.graal.python.builtins.modules.MathGuards;
60-
import com.oracle.graal.python.builtins.modules.SysModuleBuiltins;
6160
import com.oracle.graal.python.builtins.objects.PNone;
6261
import com.oracle.graal.python.builtins.objects.PNotImplemented;
6362
import com.oracle.graal.python.builtins.objects.array.PArray;
@@ -2657,9 +2656,8 @@ long hash(long self) {
26572656
}
26582657

26592658
@Specialization
2660-
@TruffleBoundary
26612659
long hash(PInt self) {
2662-
return self.getValue().remainder(BigInteger.valueOf(SysModuleBuiltins.HASH_MODULUS)).longValue();
2660+
return self.hash();
26632661
}
26642662

26652663
@Specialization

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/ints/PInt.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
import com.oracle.graal.python.PythonLanguage;
3333
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
34+
import com.oracle.graal.python.builtins.modules.SysModuleBuiltins;
3435
import com.oracle.graal.python.builtins.objects.cext.PythonNativeWrapperLibrary;
3536
import com.oracle.graal.python.builtins.objects.function.PArguments.ThreadState;
3637
import com.oracle.graal.python.builtins.objects.object.PythonBuiltinObject;
@@ -538,4 +539,15 @@ public BigInteger subtract(PInt other) {
538539
public BigInteger add(PInt other) {
539540
return add(other.value);
540541
}
542+
543+
@ExportMessage
544+
public long hash() {
545+
return hashBigInteger(value);
546+
}
547+
548+
@TruffleBoundary
549+
public static long hashBigInteger(BigInteger i) {
550+
long h = i.remainder(BigInteger.valueOf(SysModuleBuiltins.HASH_MODULUS)).longValue();
551+
return h == -1 ? -2 : h;
552+
}
541553
}

0 commit comments

Comments
 (0)