Index: runtime/vm/dart_entry.cc |
diff --git a/runtime/vm/dart_entry.cc b/runtime/vm/dart_entry.cc |
index 880046533839020af52f698d5deacca0b02927ed..9c8af15f8f5022f6514c060ad6a919097ef05595 100644 |
--- a/runtime/vm/dart_entry.cc |
+++ b/runtime/vm/dart_entry.cc |
@@ -509,6 +509,24 @@ RawObject* DartLibraryCalls::Equals(const Instance& left, |
return result.raw(); |
} |
+// On success, returns a RawInstance. On failure, a RawError. |
+RawObject* DartLibraryCalls::IdentityHashCode(const Instance& object) { |
+ const int kNumArguments = 1; |
+ Thread* thread = Thread::Current(); |
+ Zone* zone = thread->zone(); |
+ const Library& libcore = Library::Handle(zone, Library::CoreLibrary()); |
+ ASSERT(!libcore.IsNull()); |
+ const Function& function = Function::Handle( |
+ zone, libcore.LookupFunctionAllowPrivate(Symbols::identityHashCode())); |
+ ASSERT(!function.IsNull()); |
+ const Array& args = Array::Handle(zone, Array::New(kNumArguments)); |
+ args.SetAt(0, object); |
+ const Object& result = |
+ Object::Handle(zone, DartEntry::InvokeFunction(function, args)); |
+ ASSERT(result.IsInstance() || result.IsError()); |
+ return result.raw(); |
+} |
+ |
RawObject* DartLibraryCalls::LookupHandler(Dart_Port port_id) { |
Thread* thread = Thread::Current(); |
Zone* zone = thread->zone(); |