Revert "lambda: Add support for invoke-interface for boxed innate lambdas"
955-lambda is flaky
Bug: 24618608
Bug: 25107649
This reverts commit 457e874459ae638145cab6d572e34d48480e39d2.
Change-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7
diff --git a/runtime/mirror/class-inl.h b/runtime/mirror/class-inl.h
index a8685b8..9e416dc 100644
--- a/runtime/mirror/class-inl.h
+++ b/runtime/mirror/class-inl.h
@@ -695,11 +695,7 @@
}
inline const DexFile& Class::GetDexFile() {
- DexCache* dex_cache = GetDexCache();
- DCHECK(dex_cache != nullptr);
- const DexFile* dex_file = dex_cache->GetDexFile();
- DCHECK(dex_file != nullptr);
- return *dex_file;
+ return *GetDexCache()->GetDexFile();
}
inline bool Class::DescriptorEquals(const char* match) {
@@ -707,8 +703,8 @@
return match[0] == '[' && GetComponentType()->DescriptorEquals(match + 1);
} else if (IsPrimitive()) {
return strcmp(Primitive::Descriptor(GetPrimitiveType()), match) == 0;
- } else if (IsAnyProxyClass()) {
- return AnyProxyDescriptorEquals(match);
+ } else if (IsProxyClass()) {
+ return ProxyDescriptorEquals(match);
} else {
const DexFile& dex_file = GetDexFile();
const DexFile::TypeId& type_id = dex_file.GetTypeId(GetClassDef()->class_idx_);
@@ -724,32 +720,22 @@
}
}
-inline ObjectArray<Class>* Class::GetInterfacesForAnyProxy() {
- CHECK(IsAnyProxyClass());
+inline ObjectArray<Class>* Class::GetInterfaces() {
+ CHECK(IsProxyClass());
// First static field.
auto* field = GetStaticField(0);
DCHECK_STREQ(field->GetName(), "interfaces");
MemberOffset field_offset = field->GetOffset();
- ObjectArray<Class>* interfaces_array = GetFieldObject<ObjectArray<Class>>(field_offset);
-
- CHECK(interfaces_array != nullptr);
- if (UNLIKELY(IsLambdaProxyClass())) {
- DCHECK_EQ(1, interfaces_array->GetLength())
- << "Lambda proxies cannot have multiple direct interfaces implemented";
- }
- return interfaces_array;
+ return GetFieldObject<ObjectArray<Class>>(field_offset);
}
-inline ObjectArray<ObjectArray<Class>>* Class::GetThrowsForAnyProxy() {
- CHECK(IsAnyProxyClass());
+inline ObjectArray<ObjectArray<Class>>* Class::GetThrows() {
+ CHECK(IsProxyClass());
// Second static field.
auto* field = GetStaticField(1);
DCHECK_STREQ(field->GetName(), "throws");
-
MemberOffset field_offset = field->GetOffset();
- auto* throws_array = GetFieldObject<ObjectArray<ObjectArray<Class>>>(field_offset);
- CHECK(throws_array != nullptr);
- return throws_array;
+ return GetFieldObject<ObjectArray<ObjectArray<Class>>>(field_offset);
}
inline MemberOffset Class::GetDisableIntrinsicFlagOffset() {
@@ -810,8 +796,8 @@
return 0;
} else if (IsArrayClass()) {
return 2;
- } else if (IsAnyProxyClass()) {
- mirror::ObjectArray<mirror::Class>* interfaces = GetInterfacesForAnyProxy();
+ } else if (IsProxyClass()) {
+ mirror::ObjectArray<mirror::Class>* interfaces = GetInterfaces();
return interfaces != nullptr ? interfaces->GetLength() : 0;
} else {
const DexFile::TypeList* interfaces = GetInterfaceTypeList();