| Index: runtime/lib/object.cc
|
| diff --git a/runtime/lib/object.cc b/runtime/lib/object.cc
|
| index 530b2107f47935b2622909def56db1f0196104d2..e1b7a71c8eb53bfc7acd3a25760dcfbd6a5940a6 100644
|
| --- a/runtime/lib/object.cc
|
| +++ b/runtime/lib/object.cc
|
| @@ -116,54 +116,12 @@ DEFINE_NATIVE_ENTRY(Object_noSuchMethod, 6) {
|
|
|
| DEFINE_NATIVE_ENTRY(Object_runtimeType, 1) {
|
| const Instance& instance = Instance::CheckedHandle(arguments->NativeArgAt(0));
|
| - if (instance.IsString()) {
|
| - return Type::StringType();
|
| - } else if (instance.IsInteger()) {
|
| - return Type::IntType();
|
| - } else if (instance.IsDouble()) {
|
| - return Type::Double();
|
| - }
|
| + // Special handling for following types outside this native.
|
| + ASSERT(!instance.IsString() && !instance.IsInteger() && !instance.IsDouble());
|
| return instance.GetType();
|
| }
|
|
|
|
|
| -DEFINE_NATIVE_ENTRY(Object_haveSameRuntimeType, 2) {
|
| - const Instance& left = Instance::CheckedHandle(arguments->NativeArgAt(0));
|
| - const Instance& right = Instance::CheckedHandle(arguments->NativeArgAt(1));
|
| -
|
| - const intptr_t left_cid = left.GetClassId();
|
| - const intptr_t right_cid = right.GetClassId();
|
| -
|
| - if (left_cid != right_cid) {
|
| - if (RawObject::IsIntegerClassId(left_cid)) {
|
| - return Bool::Get(RawObject::IsIntegerClassId(right_cid)).raw();
|
| - } else if (RawObject::IsStringClassId(right_cid)) {
|
| - return Bool::Get(RawObject::IsStringClassId(right_cid)).raw();
|
| - } else {
|
| - return Bool::False().raw();
|
| - }
|
| - }
|
| -
|
| - const Class& cls = Class::Handle(left.clazz());
|
| - if (cls.IsClosureClass()) {
|
| - // TODO(vegorov): provide faster implementation for closure classes.
|
| - const AbstractType& left_type = AbstractType::Handle(left.GetType());
|
| - const AbstractType& right_type = AbstractType::Handle(right.GetType());
|
| - return Bool::Get(left_type.raw() == right_type.raw()).raw();
|
| - }
|
| -
|
| - if (!cls.IsGeneric()) {
|
| - return Bool::True().raw();
|
| - }
|
| -
|
| - const TypeArguments& left_type_arguments =
|
| - TypeArguments::Handle(left.GetTypeArguments());
|
| - const TypeArguments& right_type_arguments =
|
| - TypeArguments::Handle(right.GetTypeArguments());
|
| - return Bool::Get(left_type_arguments.Equals(right_type_arguments)).raw();
|
| -}
|
| -
|
| -
|
| DEFINE_NATIVE_ENTRY(Object_instanceOf, 4) {
|
| const Instance& instance =
|
| Instance::CheckedHandle(zone, arguments->NativeArgAt(0));
|
|
|