ART: Some more IWYU in common headers
Forward-declare a few structs and classes. Remove unused includes.
Bug: 119869270
Test: mmma art
Change-Id: I21215cee39269b373784d6a82577039322a4a950
diff --git a/libdexfile/dex/class_accessor-inl.h b/libdexfile/dex/class_accessor-inl.h
index c9e5360..8562d05 100644
--- a/libdexfile/dex/class_accessor-inl.h
+++ b/libdexfile/dex/class_accessor-inl.h
@@ -24,6 +24,8 @@
#include "base/utils.h"
#include "class_iterator.h"
#include "code_item_accessors-inl.h"
+#include "dex_file.h"
+#include "method_reference.h"
namespace art {
@@ -71,6 +73,11 @@
}
}
+inline MethodReference ClassAccessor::Method::GetReference() const {
+ return MethodReference(&dex_file_, GetIndex());
+}
+
+
inline void ClassAccessor::Field::Read() {
index_ += DecodeUnsignedLeb128(&ptr_pos_);
access_flags_ = DecodeUnsignedLeb128(&ptr_pos_);
@@ -231,6 +238,10 @@
return dex_file_.GetClassDef(class_def_index_).class_idx_;
}
+inline const dex::ClassDef& ClassAccessor::GetClassDef() const {
+ return dex_file_.GetClassDef(GetClassDefIndex());
+}
+
} // namespace art
#endif // ART_LIBDEXFILE_DEX_CLASS_ACCESSOR_INL_H_
diff --git a/libdexfile/dex/class_accessor.h b/libdexfile/dex/class_accessor.h
index cf6e509..1628256 100644
--- a/libdexfile/dex/class_accessor.h
+++ b/libdexfile/dex/class_accessor.h
@@ -18,14 +18,21 @@
#define ART_LIBDEXFILE_DEX_CLASS_ACCESSOR_H_
#include "code_item_accessors.h"
-#include "dex_file.h"
+#include "dex_file_types.h"
#include "invoke_type.h"
-#include "method_reference.h"
#include "modifiers.h"
namespace art {
+namespace dex {
+struct ClassDef;
+struct CodeItem;
+} // namespace dex
+
class ClassIteratorData;
+class DexFile;
+template <typename Iter> class IterationRange;
+class MethodReference;
// Classes to access Dex data.
class ClassAccessor {
@@ -92,9 +99,7 @@
: GetVirtualMethodInvokeType(class_access_flags);
}
- MethodReference GetReference() const {
- return MethodReference(&dex_file_, GetIndex());
- }
+ MethodReference GetReference() const;
CodeItemInstructionAccessor GetInstructions() const;
CodeItemDataAccessor GetInstructionsAndData() const;
@@ -273,7 +278,7 @@
ClassAccessor(const DexFile& dex_file,
const uint8_t* class_data,
- uint32_t class_def_index = DexFile::kDexNoIndex32,
+ uint32_t class_def_index = dex::kDexNoIndex,
bool parse_hiddenapi_class_data = false);
// Return the code item for a method.
@@ -361,9 +366,7 @@
return class_def_index_;
}
- const dex::ClassDef& GetClassDef() const {
- return dex_file_.GetClassDef(GetClassDefIndex());
- }
+ const dex::ClassDef& GetClassDef() const;
protected:
// Template visitor to reduce copy paste for visiting elements.
diff --git a/runtime/art_field-inl.h b/runtime/art_field-inl.h
index fb41418..6f976d1 100644
--- a/runtime/art_field-inl.h
+++ b/runtime/art_field-inl.h
@@ -29,7 +29,6 @@
#include "jvalue.h"
#include "mirror/dex_cache-inl.h"
#include "mirror/object-inl.h"
-#include "scoped_thread_state_change-inl.h"
#include "thread-current-inl.h"
namespace art {
diff --git a/runtime/art_method-inl.h b/runtime/art_method-inl.h
index 02196ba..e28ffa2 100644
--- a/runtime/art_method-inl.h
+++ b/runtime/art_method-inl.h
@@ -43,7 +43,6 @@
#include "quick/quick_method_frame_info.h"
#include "read_barrier-inl.h"
#include "runtime-inl.h"
-#include "scoped_thread_state_change-inl.h"
#include "thread-current-inl.h"
namespace art {
diff --git a/runtime/class_linker.h b/runtime/class_linker.h
index fa5df44..b9ac9ca 100644
--- a/runtime/class_linker.h
+++ b/runtime/class_linker.h
@@ -40,6 +40,7 @@
namespace dex {
struct ClassDef;
+struct MethodHandleItem;
} // namespace dex
namespace gc {
diff --git a/runtime/interpreter/shadow_frame.h b/runtime/interpreter/shadow_frame.h
index ca98999..3f6b729 100644
--- a/runtime/interpreter/shadow_frame.h
+++ b/runtime/interpreter/shadow_frame.h
@@ -23,7 +23,6 @@
#include "base/locks.h"
#include "base/macros.h"
-#include "dex/dex_file.h"
#include "lock_count_data.h"
#include "read_barrier.h"
#include "stack_reference.h"
diff --git a/runtime/mirror/class-inl.h b/runtime/mirror/class-inl.h
index 0f19bac..40c7d30 100644
--- a/runtime/mirror/class-inl.h
+++ b/runtime/mirror/class-inl.h
@@ -32,6 +32,7 @@
#include "dex/invoke_type.h"
#include "dex_cache.h"
#include "iftable.h"
+#include "imtable.h"
#include "object-inl.h"
#include "object_array.h"
#include "read_barrier-inl.h"
diff --git a/runtime/mirror/class.h b/runtime/mirror/class.h
index 5682def..f7a41f7 100644
--- a/runtime/mirror/class.h
+++ b/runtime/mirror/class.h
@@ -23,12 +23,10 @@
#include "base/stride_iterator.h"
#include "class_flags.h"
#include "class_status.h"
-#include "dex/dex_file_structs.h"
#include "dex/dex_file_types.h"
#include "dex/modifiers.h"
#include "dex/primitive.h"
#include "gc/allocator_type.h"
-#include "imtable.h"
#include "object.h"
#include "object_array.h"
#include "read_barrier_option.h"
@@ -36,11 +34,17 @@
namespace art {
+namespace dex {
+struct ClassDef;
+class TypeList;
+} // namespace dex
+
class ArtField;
class ArtMethod;
struct ClassOffsets;
class DexFile;
template<class T> class Handle;
+class ImTable;
enum InvokeType : uint32_t;
template <typename Iter> class IterationRange;
template<typename T> class LengthPrefixedArray;