Skip to content

Commit e18df3b

Browse files
committed
Implement method hash using the library
1 parent b8cf170 commit e18df3b

File tree

3 files changed

+14
-17
lines changed

3 files changed

+14
-17
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/method/AbstractMethodBuiltins.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__SELF__;
3535
import static com.oracle.graal.python.nodes.SpecialMethodNames.__CALL__;
3636
import static com.oracle.graal.python.nodes.SpecialMethodNames.__EQ__;
37-
import static com.oracle.graal.python.nodes.SpecialMethodNames.__HASH__;
3837

3938
import java.util.List;
4039

@@ -44,7 +43,6 @@
4443
import com.oracle.graal.python.builtins.PythonBuiltins;
4544
import com.oracle.graal.python.builtins.modules.BuiltinFunctions.GetAttrNode;
4645
import com.oracle.graal.python.builtins.objects.PNone;
47-
import com.oracle.graal.python.builtins.objects.PythonAbstractObject;
4846
import com.oracle.graal.python.builtins.objects.function.PKeyword;
4947
import com.oracle.graal.python.builtins.objects.module.PythonModule;
5048
import com.oracle.graal.python.builtins.objects.object.PythonObject;
@@ -56,7 +54,6 @@
5654
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
5755
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
5856
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
59-
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
6057
import com.oracle.graal.python.nodes.function.builtins.PythonVarargsBuiltinNode;
6158
import com.oracle.graal.python.util.PythonUtils;
6259
import com.oracle.truffle.api.CompilerDirectives;
@@ -187,20 +184,6 @@ boolean eq(@SuppressWarnings("unused") Object self, @SuppressWarnings("unused")
187184
}
188185
}
189186

190-
@Builtin(name = __HASH__, minNumOfPositionalArgs = 1)
191-
@GenerateNodeFactory
192-
public abstract static class HashNode extends PythonUnaryBuiltinNode {
193-
@Specialization
194-
Object doGeneric(PMethod self) {
195-
return PythonAbstractObject.systemHashCode(self.getSelf()) ^ PythonAbstractObject.systemHashCode(self.getFunction());
196-
}
197-
198-
@Specialization
199-
Object doGeneric(PBuiltinMethod self) {
200-
return PythonAbstractObject.systemHashCode(self.getSelf()) ^ PythonAbstractObject.systemHashCode(self.getFunction());
201-
}
202-
}
203-
204187
@Builtin(name = __MODULE__, minNumOfPositionalArgs = 1, maxNumOfPositionalArgs = 2, isGetter = true, isSetter = true)
205188
@GenerateNodeFactory
206189
abstract static class GetModuleNode extends PythonBuiltinNode {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/method/PBuiltinMethod.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
*/
2626
package com.oracle.graal.python.builtins.objects.method;
2727

28+
import com.oracle.graal.python.builtins.objects.PythonAbstractObject;
29+
import com.oracle.graal.python.builtins.objects.function.PArguments.ThreadState;
2830
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
2931
import com.oracle.graal.python.builtins.objects.object.PythonBuiltinObject;
3032
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
@@ -65,4 +67,9 @@ public String toString() {
6567
public boolean isCallable() {
6668
return true;
6769
}
70+
71+
@ExportMessage
72+
protected long hashWithState(@SuppressWarnings("unused") ThreadState state) {
73+
return PythonAbstractObject.systemHashCode(this.getSelf()) ^ PythonAbstractObject.systemHashCode(this.getFunction());
74+
}
6875
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/method/PMethod.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
*/
2626
package com.oracle.graal.python.builtins.objects.method;
2727

28+
import com.oracle.graal.python.builtins.objects.PythonAbstractObject;
29+
import com.oracle.graal.python.builtins.objects.function.PArguments.ThreadState;
2830
import com.oracle.graal.python.builtins.objects.object.PythonBuiltinObject;
2931
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
3032
import com.oracle.truffle.api.CompilerAsserts;
@@ -77,4 +79,9 @@ protected SourceSection getSourceLocation(@CachedLibrary("this.function") Intero
7779
protected boolean hasSourceLocation(@CachedLibrary("this.function") InteropLibrary lib) {
7880
return lib.hasSourceLocation(function);
7981
}
82+
83+
@ExportMessage
84+
protected long hashWithState(@SuppressWarnings("unused") ThreadState state) {
85+
return PythonAbstractObject.systemHashCode(this.getSelf()) ^ PythonAbstractObject.systemHashCode(this.getFunction());
86+
}
8087
}

0 commit comments

Comments
 (0)