Index: runtime/vm/intrinsifier_x64.cc |
diff --git a/runtime/vm/intrinsifier_x64.cc b/runtime/vm/intrinsifier_x64.cc |
index f0ca5913f9164fb4d092aecb7eee663df629afac..3b97a1bf80b551b928e90e98d4abb018a306f006 100644 |
--- a/runtime/vm/intrinsifier_x64.cc |
+++ b/runtime/vm/intrinsifier_x64.cc |
@@ -1754,6 +1754,23 @@ void Intrinsifier::String_getHashCode(Assembler* assembler) { |
} |
+void Intrinsifier::Object_getHash(Assembler* assembler) { |
+ __ movq(RAX, Address(RSP, +1 * kWordSize)); // Object. |
+ __ movl(RAX, FieldAddress(RAX, String::hash_offset())); |
+ __ SmiTag(RAX); |
+ __ ret(); |
+} |
+ |
+ |
+void Intrinsifier::Object_setHash(Assembler* assembler) { |
+ __ movq(RAX, Address(RSP, +2 * kWordSize)); // Object. |
+ __ movq(RDX, Address(RSP, +1 * kWordSize)); // Value. |
+ __ SmiUntag(RDX); |
+ __ movl(FieldAddress(RAX, String::hash_offset()), RDX); |
+ __ ret(); |
+} |
+ |
+ |
void GenerateSubstringMatchesSpecialization(Assembler* assembler, |
intptr_t receiver_cid, |
intptr_t other_cid, |