Move implementations from class_root.h to -inl.h .
Make it possible to include the definition of enum ClassRoot
without pulling in a lot of other headers.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Test: aosp_taimen-userdebug boots.
Change-Id: Ic90fdd70bfe0c5428a5c9a0d7901ea7e15b03488
diff --git a/compiler/optimizing/inliner.cc b/compiler/optimizing/inliner.cc
index 126bf25..5472839 100644
--- a/compiler/optimizing/inliner.cc
+++ b/compiler/optimizing/inliner.cc
@@ -21,7 +21,7 @@
#include "base/logging.h"
#include "builder.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "constant_folding.h"
#include "data_type-inl.h"
#include "dead_code_elimination.h"
diff --git a/compiler/optimizing/instruction_simplifier.cc b/compiler/optimizing/instruction_simplifier.cc
index 8e0b414..5ac77a5 100644
--- a/compiler/optimizing/instruction_simplifier.cc
+++ b/compiler/optimizing/instruction_simplifier.cc
@@ -18,7 +18,7 @@
#include "art_method-inl.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "data_type-inl.h"
#include "escape.h"
#include "intrinsics.h"
diff --git a/compiler/optimizing/intrinsics.cc b/compiler/optimizing/intrinsics.cc
index d940105..1563a7e 100644
--- a/compiler/optimizing/intrinsics.cc
+++ b/compiler/optimizing/intrinsics.cc
@@ -20,7 +20,7 @@
#include "art_method-inl.h"
#include "base/utils.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/invoke_type.h"
#include "driver/compiler_options.h"
#include "gc/space/image_space.h"
diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc
index 810871c..a5e0991 100644
--- a/compiler/optimizing/nodes.cc
+++ b/compiler/optimizing/nodes.cc
@@ -23,7 +23,7 @@
#include "base/logging.h"
#include "base/stl_util.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "code_generator.h"
#include "common_dominator.h"
#include "intrinsics.h"
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index 3945b17..bf9afa2 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -32,7 +32,6 @@
#include "base/scoped_arena_allocator.h"
#include "base/timing_logger.h"
#include "builder.h"
-#include "class_root.h"
#include "code_generator.h"
#include "compiled_method.h"
#include "compiler.h"
diff --git a/compiler/optimizing/reference_type_propagation.cc b/compiler/optimizing/reference_type_propagation.cc
index 4929e0a..fb7222c 100644
--- a/compiler/optimizing/reference_type_propagation.cc
+++ b/compiler/optimizing/reference_type_propagation.cc
@@ -22,7 +22,7 @@
#include "base/scoped_arena_containers.h"
#include "base/enums.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "handle_scope-inl.h"
#include "mirror/class-inl.h"
#include "mirror/dex_cache.h"
diff --git a/dex2oat/linker/image_writer.cc b/dex2oat/linker/image_writer.cc
index b7776ff..d56fea9 100644
--- a/dex2oat/linker/image_writer.cc
+++ b/dex2oat/linker/image_writer.cc
@@ -35,7 +35,7 @@
#include "base/stl_util.h"
#include "base/unix_file/fd_file.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "compiled_method.h"
#include "dex/dex_file-inl.h"
#include "dex/dex_file_types.h"
diff --git a/oatdump/oatdump.cc b/oatdump/oatdump.cc
index 3acea42..1f843b3 100644
--- a/oatdump/oatdump.cc
+++ b/oatdump/oatdump.cc
@@ -44,7 +44,7 @@
#include "base/unix_file/fd_file.h"
#include "class_linker-inl.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "compiled_method.h"
#include "debug/debug_info.h"
#include "debug/elf_debug_writer.h"
diff --git a/openjdkjvmti/ti_class_definition.cc b/openjdkjvmti/ti_class_definition.cc
index ec267155..a480ac0 100644
--- a/openjdkjvmti/ti_class_definition.cc
+++ b/openjdkjvmti/ti_class_definition.cc
@@ -34,7 +34,7 @@
#include "base/array_slice.h"
#include "base/logging.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/dex_file.h"
#include "fixed_up_dex_file.h"
#include "handle.h"
diff --git a/openjdkjvmti/ti_heap.cc b/openjdkjvmti/ti_heap.cc
index 974a710..905ed95 100644
--- a/openjdkjvmti/ti_heap.cc
+++ b/openjdkjvmti/ti_heap.cc
@@ -29,7 +29,6 @@
#include "base/mutex.h"
#include "base/utils.h"
#include "class_linker.h"
-#include "class_root.h"
#include "deopt_manager.h"
#include "dex/primitive.h"
#include "events-inl.h"
diff --git a/openjdkjvmti/ti_redefine.cc b/openjdkjvmti/ti_redefine.cc
index a6b597b..05d198b 100644
--- a/openjdkjvmti/ti_redefine.cc
+++ b/openjdkjvmti/ti_redefine.cc
@@ -61,7 +61,7 @@
#include "base/utils.h"
#include "class_linker-inl.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "class_status.h"
#include "debugger.h"
#include "dex/art_dex_file_loader.h"
diff --git a/runtime/arch/stub_test.cc b/runtime/arch/stub_test.cc
index 2b47cef..772681d 100644
--- a/runtime/arch/stub_test.cc
+++ b/runtime/arch/stub_test.cc
@@ -21,7 +21,7 @@
#include "base/callee_save_type.h"
#include "base/enums.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_runtime_test.h"
#include "entrypoints/quick/quick_entrypoints_enum.h"
#include "imt_conflict_table.h"
diff --git a/runtime/art_method.cc b/runtime/art_method.cc
index d0b6fde..a2a45ce 100644
--- a/runtime/art_method.cc
+++ b/runtime/art_method.cc
@@ -26,7 +26,7 @@
#include "base/enums.h"
#include "base/stl_util.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "debugger.h"
#include "dex/class_accessor-inl.h"
#include "dex/descriptors_names.h"
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 6573bc0..b6f417d 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -57,7 +57,7 @@
#include "cha.h"
#include "class_linker-inl.h"
#include "class_loader_utils.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "class_table-inl.h"
#include "compiler_callbacks.h"
#include "debug_print.h"
diff --git a/runtime/class_linker_test.cc b/runtime/class_linker_test.cc
index 931f6df..a7561de 100644
--- a/runtime/class_linker_test.cc
+++ b/runtime/class_linker_test.cc
@@ -26,7 +26,7 @@
#include "art_method-inl.h"
#include "base/enums.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_runtime_test.h"
#include "dex/dex_file_types.h"
#include "dex/signature-inl.h"
diff --git a/runtime/class_loader_context.cc b/runtime/class_loader_context.cc
index d2119db..fe78ba0 100644
--- a/runtime/class_loader_context.cc
+++ b/runtime/class_loader_context.cc
@@ -26,7 +26,7 @@
#include "base/stl_util.h"
#include "class_linker.h"
#include "class_loader_utils.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/art_dex_file_loader.h"
#include "dex/dex_file.h"
#include "dex/dex_file_loader.h"
diff --git a/runtime/class_loader_context_test.cc b/runtime/class_loader_context_test.cc
index e2e6075..ff466c0 100644
--- a/runtime/class_loader_context_test.cc
+++ b/runtime/class_loader_context_test.cc
@@ -23,7 +23,7 @@
#include "base/dchecked_vector.h"
#include "base/stl_util.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_runtime_test.h"
#include "dex/dex_file.h"
#include "handle_scope-inl.h"
diff --git a/runtime/class_root-inl.h b/runtime/class_root-inl.h
new file mode 100644
index 0000000..d88b8e1
--- /dev/null
+++ b/runtime/class_root-inl.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ART_RUNTIME_CLASS_ROOT_INL_H_
+#define ART_RUNTIME_CLASS_ROOT_INL_H_
+
+#include "class_root.h"
+
+#include "class_linker-inl.h"
+#include "mirror/class.h"
+#include "mirror/object_array-inl.h"
+#include "obj_ptr-inl.h"
+#include "runtime.h"
+
+namespace art {
+
+template <ReadBarrierOption kReadBarrierOption>
+inline ObjPtr<mirror::Class> GetClassRoot(ClassRoot class_root,
+ ObjPtr<mirror::ObjectArray<mirror::Class>> class_roots) {
+ DCHECK(class_roots != nullptr);
+ if (kReadBarrierOption == kWithReadBarrier) {
+ // With read barrier all references must point to the to-space.
+ // Without read barrier, this check could fail.
+ DCHECK_EQ(class_roots, Runtime::Current()->GetClassLinker()->GetClassRoots());
+ }
+ DCHECK_LT(static_cast<uint32_t>(class_root), static_cast<uint32_t>(ClassRoot::kMax));
+ int32_t index = static_cast<int32_t>(class_root);
+ ObjPtr<mirror::Class> klass =
+ class_roots->GetWithoutChecks<kDefaultVerifyFlags, kReadBarrierOption>(index);
+ DCHECK(klass != nullptr);
+ return klass;
+}
+
+template <ReadBarrierOption kReadBarrierOption>
+inline ObjPtr<mirror::Class> GetClassRoot(ClassRoot class_root, ClassLinker* linker)
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ return GetClassRoot<kReadBarrierOption>(class_root, linker->GetClassRoots<kReadBarrierOption>());
+}
+
+template <ReadBarrierOption kReadBarrierOption>
+inline ObjPtr<mirror::Class> GetClassRoot(ClassRoot class_root)
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ return GetClassRoot<kReadBarrierOption>(class_root, Runtime::Current()->GetClassLinker());
+}
+
+namespace detail {
+
+class ClassNotFoundExceptionTag;
+template <class Tag> struct NoMirrorType;
+
+template <class MirrorType>
+struct ClassRootSelector; // No definition for unspecialized ClassRoot selector.
+
+#define SPECIALIZE_CLASS_ROOT_SELECTOR(name, descriptor, mirror_type) \
+ template <> \
+ struct ClassRootSelector<mirror_type> { \
+ static constexpr ClassRoot value = ClassRoot::name; \
+ };
+
+CLASS_ROOT_LIST(SPECIALIZE_CLASS_ROOT_SELECTOR)
+
+#undef SPECIALIZE_CLASS_ROOT_SELECTOR
+
+} // namespace detail
+
+template <class MirrorType, ReadBarrierOption kReadBarrierOption>
+inline ObjPtr<mirror::Class> GetClassRoot(ObjPtr<mirror::ObjectArray<mirror::Class>> class_roots)
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ return GetClassRoot<kReadBarrierOption>(detail::ClassRootSelector<MirrorType>::value,
+ class_roots);
+}
+
+template <class MirrorType, ReadBarrierOption kReadBarrierOption>
+inline ObjPtr<mirror::Class> GetClassRoot(ClassLinker* linker)
+ REQUIRES_SHARED(Locks::mutator_lock_) {
+ return GetClassRoot<kReadBarrierOption>(detail::ClassRootSelector<MirrorType>::value, linker);
+}
+
+template <class MirrorType, ReadBarrierOption kReadBarrierOption>
+inline ObjPtr<mirror::Class> GetClassRoot() REQUIRES_SHARED(Locks::mutator_lock_) {
+ return GetClassRoot<kReadBarrierOption>(detail::ClassRootSelector<MirrorType>::value);
+}
+
+} // namespace art
+
+#endif // ART_RUNTIME_CLASS_ROOT_INL_H_
diff --git a/runtime/class_root.cc b/runtime/class_root.cc
index 08820b0..6a6fd26 100644
--- a/runtime/class_root.cc
+++ b/runtime/class_root.cc
@@ -16,10 +16,12 @@
#include "class_root.h"
+#include "base/logging.h"
+
namespace art {
const char* GetClassRootDescriptor(ClassRoot class_root) {
- static const char* class_roots_descriptors[] = {
+ static const char* const class_roots_descriptors[] = {
#define CLASS_ROOT_DESCRIPTOR(name, descriptor, mirror_type) descriptor,
CLASS_ROOT_LIST(CLASS_ROOT_DESCRIPTOR)
#undef CLASS_ROOT_DESCRIPTOR
diff --git a/runtime/class_root.h b/runtime/class_root.h
index 835ec90..85e074c 100644
--- a/runtime/class_root.h
+++ b/runtime/class_root.h
@@ -17,20 +17,22 @@
#ifndef ART_RUNTIME_CLASS_ROOT_H_
#define ART_RUNTIME_CLASS_ROOT_H_
-#include "class_linker-inl.h"
-#include "gc_root-inl.h"
-#include "mirror/class.h"
-#include "mirror/object_array-inl.h"
-#include "obj_ptr-inl.h"
-#include "runtime.h"
+#include <stdint.h>
+
+#include "base/locks.h"
+#include "read_barrier_option.h"
namespace art {
+class ClassLinker;
+template<class MirrorType> class ObjPtr;
+
namespace mirror {
class ArrayElementVarHandle;
class ByteArrayViewVarHandle;
class ByteBufferViewVarHandle;
class CallSite;
+class Class;
class ClassExt;
class ClassLoader;
class Constructor;
@@ -43,6 +45,7 @@
class MethodHandlesLookup;
class MethodType;
class Object;
+template<class T> class ObjectArray;
class Proxy;
template<typename T> class PrimitiveArray;
class Reference;
@@ -121,72 +124,26 @@
const char* GetClassRootDescriptor(ClassRoot class_root);
template <ReadBarrierOption kReadBarrierOption = kWithReadBarrier>
-inline ObjPtr<mirror::Class> GetClassRoot(
- ClassRoot class_root,
- ObjPtr<mirror::ObjectArray<mirror::Class>> class_roots) REQUIRES_SHARED(Locks::mutator_lock_) {
- DCHECK(class_roots != nullptr);
- if (kReadBarrierOption == kWithReadBarrier) {
- // With read barrier all references must point to the to-space.
- // Without read barrier, this check could fail.
- DCHECK_EQ(class_roots, Runtime::Current()->GetClassLinker()->GetClassRoots());
- }
- DCHECK_LT(static_cast<uint32_t>(class_root), static_cast<uint32_t>(ClassRoot::kMax));
- int32_t index = static_cast<int32_t>(class_root);
- ObjPtr<mirror::Class> klass =
- class_roots->GetWithoutChecks<kDefaultVerifyFlags, kReadBarrierOption>(index);
- DCHECK(klass != nullptr);
- return klass;
-}
+ObjPtr<mirror::Class> GetClassRoot(ClassRoot class_root,
+ ObjPtr<mirror::ObjectArray<mirror::Class>> class_roots)
+ REQUIRES_SHARED(Locks::mutator_lock_);
template <ReadBarrierOption kReadBarrierOption = kWithReadBarrier>
-inline ObjPtr<mirror::Class> GetClassRoot(ClassRoot class_root, ClassLinker* linker)
- REQUIRES_SHARED(Locks::mutator_lock_) {
- return GetClassRoot<kReadBarrierOption>(class_root, linker->GetClassRoots<kReadBarrierOption>());
-}
+ObjPtr<mirror::Class> GetClassRoot(ClassRoot class_root, ClassLinker* linker)
+ REQUIRES_SHARED(Locks::mutator_lock_);
template <ReadBarrierOption kReadBarrierOption = kWithReadBarrier>
-inline ObjPtr<mirror::Class> GetClassRoot(ClassRoot class_root)
- REQUIRES_SHARED(Locks::mutator_lock_) {
- return GetClassRoot<kReadBarrierOption>(class_root, Runtime::Current()->GetClassLinker());
-}
-
-namespace detail {
-
-class ClassNotFoundExceptionTag;
-template <class Tag> struct NoMirrorType;
-
-template <class MirrorType>
-struct ClassRootSelector; // No definition for unspecialized ClassRoot selector.
-
-#define SPECIALIZE_CLASS_ROOT_SELECTOR(name, descriptor, mirror_type) \
- template <> \
- struct ClassRootSelector<mirror_type> { \
- static constexpr ClassRoot value = ClassRoot::name; \
- };
-
-CLASS_ROOT_LIST(SPECIALIZE_CLASS_ROOT_SELECTOR)
-
-#undef SPECIALIZE_CLASS_ROOT_SELECTOR
-
-} // namespace detail
+ObjPtr<mirror::Class> GetClassRoot(ClassRoot class_root) REQUIRES_SHARED(Locks::mutator_lock_);
template <class MirrorType, ReadBarrierOption kReadBarrierOption = kWithReadBarrier>
-inline ObjPtr<mirror::Class> GetClassRoot(ObjPtr<mirror::ObjectArray<mirror::Class>> class_roots)
- REQUIRES_SHARED(Locks::mutator_lock_) {
- return GetClassRoot<kReadBarrierOption>(detail::ClassRootSelector<MirrorType>::value,
- class_roots);
-}
+ObjPtr<mirror::Class> GetClassRoot(ObjPtr<mirror::ObjectArray<mirror::Class>> class_roots)
+ REQUIRES_SHARED(Locks::mutator_lock_);
template <class MirrorType, ReadBarrierOption kReadBarrierOption = kWithReadBarrier>
-inline ObjPtr<mirror::Class> GetClassRoot(ClassLinker* linker)
- REQUIRES_SHARED(Locks::mutator_lock_) {
- return GetClassRoot<kReadBarrierOption>(detail::ClassRootSelector<MirrorType>::value, linker);
-}
+ObjPtr<mirror::Class> GetClassRoot(ClassLinker* linker) REQUIRES_SHARED(Locks::mutator_lock_);
template <class MirrorType, ReadBarrierOption kReadBarrierOption = kWithReadBarrier>
-inline ObjPtr<mirror::Class> GetClassRoot() REQUIRES_SHARED(Locks::mutator_lock_) {
- return GetClassRoot<kReadBarrierOption>(detail::ClassRootSelector<MirrorType>::value);
-}
+ObjPtr<mirror::Class> GetClassRoot() REQUIRES_SHARED(Locks::mutator_lock_);
} // namespace art
diff --git a/runtime/dex/dex_file_annotations.cc b/runtime/dex/dex_file_annotations.cc
index 99c56a1..366d41c 100644
--- a/runtime/dex/dex_file_annotations.cc
+++ b/runtime/dex/dex_file_annotations.cc
@@ -24,7 +24,7 @@
#include "art_method-inl.h"
#include "base/sdk_version.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/dex_file-inl.h"
#include "dex/dex_instruction-inl.h"
#include "jni/jni_internal.h"
diff --git a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
index 55be920..5ac9152 100644
--- a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
+++ b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc
@@ -19,7 +19,7 @@
#include "base/enums.h"
#include "callee_save_frame.h"
#include "common_throws.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "debug_print.h"
#include "debugger.h"
#include "dex/dex_file-inl.h"
diff --git a/runtime/gc/accounting/mod_union_table_test.cc b/runtime/gc/accounting/mod_union_table_test.cc
index e66a174..2fc9ee8 100644
--- a/runtime/gc/accounting/mod_union_table_test.cc
+++ b/runtime/gc/accounting/mod_union_table_test.cc
@@ -17,7 +17,7 @@
#include "mod_union_table-inl.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_runtime_test.h"
#include "gc/space/space-inl.h"
#include "mirror/array-alloc-inl.h"
diff --git a/runtime/gc/collector/concurrent_copying.cc b/runtime/gc/collector/concurrent_copying.cc
index ff73437..7a1a505 100644
--- a/runtime/gc/collector/concurrent_copying.cc
+++ b/runtime/gc/collector/concurrent_copying.cc
@@ -24,7 +24,7 @@
#include "base/quasi_atomic.h"
#include "base/stl_util.h"
#include "base/systrace.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "debugger.h"
#include "gc/accounting/atomic_stack.h"
#include "gc/accounting/heap_bitmap-inl.h"
diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc
index f18fb53..645e28f 100644
--- a/runtime/gc/heap.cc
+++ b/runtime/gc/heap.cc
@@ -42,7 +42,7 @@
#include "base/systrace.h"
#include "base/time_utils.h"
#include "base/utils.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_throws.h"
#include "debugger.h"
#include "dex/dex_file-inl.h"
diff --git a/runtime/gc/heap_verification_test.cc b/runtime/gc/heap_verification_test.cc
index 7835c29..ca6a30b 100644
--- a/runtime/gc/heap_verification_test.cc
+++ b/runtime/gc/heap_verification_test.cc
@@ -18,7 +18,7 @@
#include "base/memory_tool.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "handle_scope-inl.h"
#include "mirror/object-inl.h"
#include "mirror/object_array-alloc-inl.h"
diff --git a/runtime/gc/reference_processor.cc b/runtime/gc/reference_processor.cc
index 498013e..2e74edf 100644
--- a/runtime/gc/reference_processor.cc
+++ b/runtime/gc/reference_processor.cc
@@ -20,7 +20,7 @@
#include "base/mutex.h"
#include "base/time_utils.h"
#include "base/utils.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "collector/garbage_collector.h"
#include "jni/java_vm_ext.h"
#include "mirror/class-inl.h"
diff --git a/runtime/gc/space/image_space.cc b/runtime/gc/space/image_space.cc
index 9958956..5484f49 100644
--- a/runtime/gc/space/image_space.cc
+++ b/runtime/gc/space/image_space.cc
@@ -43,7 +43,7 @@
#include "base/systrace.h"
#include "base/time_utils.h"
#include "base/utils.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/art_dex_file_loader.h"
#include "dex/dex_file_loader.h"
#include "exec_utils.h"
diff --git a/runtime/handle.cc b/runtime/handle.cc
index 0028dee..af77e23 100644
--- a/runtime/handle.cc
+++ b/runtime/handle.cc
@@ -38,7 +38,7 @@
#include "mirror/throwable.h"
#include "mirror/var_handle.h"
-#include "class_root.h"
+#include "class_root-inl.h"
namespace art {
diff --git a/runtime/hidden_api.cc b/runtime/hidden_api.cc
index 05b2311..636b8c8 100644
--- a/runtime/hidden_api.cc
+++ b/runtime/hidden_api.cc
@@ -22,7 +22,6 @@
#include "art_method-inl.h"
#include "base/dumpable.h"
#include "base/file_utils.h"
-#include "class_root.h"
#include "dex/class_accessor-inl.h"
#include "dex/dex_file_loader.h"
#include "mirror/class_ext.h"
diff --git a/runtime/hprof/hprof.cc b/runtime/hprof/hprof.cc
index 516c435..27560c8 100644
--- a/runtime/hprof/hprof.cc
+++ b/runtime/hprof/hprof.cc
@@ -50,7 +50,7 @@
#include "base/time_utils.h"
#include "base/unix_file/fd_file.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_throws.h"
#include "debugger.h"
#include "dex/dex_file-inl.h"
diff --git a/runtime/interpreter/interpreter_common.cc b/runtime/interpreter/interpreter_common.cc
index 4d964f1..726de6e 100644
--- a/runtime/interpreter/interpreter_common.cc
+++ b/runtime/interpreter/interpreter_common.cc
@@ -20,7 +20,7 @@
#include "base/casts.h"
#include "base/enums.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "debugger.h"
#include "dex/dex_file_types.h"
#include "entrypoints/runtime_asm_entrypoints.h"
diff --git a/runtime/interpreter/interpreter_common.h b/runtime/interpreter/interpreter_common.h
index c6d8569..6c272f3 100644
--- a/runtime/interpreter/interpreter_common.h
+++ b/runtime/interpreter/interpreter_common.h
@@ -39,7 +39,7 @@
#include "base/logging.h"
#include "base/macros.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_dex_operations.h"
#include "common_throws.h"
#include "dex/dex_file-inl.h"
diff --git a/runtime/interpreter/unstarted_runtime_test.cc b/runtime/interpreter/unstarted_runtime_test.cc
index 8020962..792444a 100644
--- a/runtime/interpreter/unstarted_runtime_test.cc
+++ b/runtime/interpreter/unstarted_runtime_test.cc
@@ -23,7 +23,7 @@
#include "base/enums.h"
#include "base/memory_tool.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_runtime_test.h"
#include "dex/descriptors_names.h"
#include "dex/dex_instruction.h"
diff --git a/runtime/jit/jit.cc b/runtime/jit/jit.cc
index 2e49067..2ef1cb4 100644
--- a/runtime/jit/jit.cc
+++ b/runtime/jit/jit.cc
@@ -27,7 +27,7 @@
#include "base/runtime_debug.h"
#include "base/scoped_flock.h"
#include "base/utils.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "debugger.h"
#include "dex/type_lookup_table.h"
#include "gc/space/image_space.h"
diff --git a/runtime/jni/check_jni.cc b/runtime/jni/check_jni.cc
index 4a8453a..3206011 100644
--- a/runtime/jni/check_jni.cc
+++ b/runtime/jni/check_jni.cc
@@ -31,7 +31,7 @@
#include "base/time_utils.h"
#include "class_linker-inl.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/descriptors_names.h"
#include "dex/dex_file-inl.h"
#include "gc/space/space.h"
diff --git a/runtime/jni/jni_id_manager.cc b/runtime/jni/jni_id_manager.cc
index 8070505..402259b 100644
--- a/runtime/jni/jni_id_manager.cc
+++ b/runtime/jni/jni_id_manager.cc
@@ -27,6 +27,7 @@
#include "base/globals.h"
#include "base/locks.h"
#include "base/mutex.h"
+#include "class_root-inl.h"
#include "gc/allocation_listener.h"
#include "gc/heap.h"
#include "jni/jni_internal.h"
diff --git a/runtime/jni/jni_internal.cc b/runtime/jni/jni_internal.cc
index 9bbde23..c3694dc 100644
--- a/runtime/jni/jni_internal.cc
+++ b/runtime/jni/jni_internal.cc
@@ -31,7 +31,7 @@
#include "base/safe_map.h"
#include "base/stl_util.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/dex_file-inl.h"
#include "dex/utf.h"
#include "fault_handler.h"
diff --git a/runtime/method_handles.cc b/runtime/method_handles.cc
index 2dc9f67..78e7561 100644
--- a/runtime/method_handles.cc
+++ b/runtime/method_handles.cc
@@ -18,7 +18,7 @@
#include "android-base/stringprintf.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_dex_operations.h"
#include "common_throws.h"
#include "interpreter/shadow_frame-inl.h"
diff --git a/runtime/method_handles_test.cc b/runtime/method_handles_test.cc
index 688febc..eb3f2ad 100644
--- a/runtime/method_handles_test.cc
+++ b/runtime/method_handles_test.cc
@@ -17,7 +17,7 @@
#include "method_handles.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_runtime_test.h"
#include "handle_scope-inl.h"
#include "jvalue-inl.h"
diff --git a/runtime/mirror/array.cc b/runtime/mirror/array.cc
index e011e1c..bd9f9ca 100644
--- a/runtime/mirror/array.cc
+++ b/runtime/mirror/array.cc
@@ -21,7 +21,7 @@
#include "class-inl.h"
#include "class.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_throws.h"
#include "dex/dex_file-inl.h"
#include "gc/accounting/card_table-inl.h"
diff --git a/runtime/mirror/class.cc b/runtime/mirror/class.cc
index b1c36ab..33ce785 100644
--- a/runtime/mirror/class.cc
+++ b/runtime/mirror/class.cc
@@ -32,7 +32,7 @@
#include "class_ext-inl.h"
#include "class_linker-inl.h"
#include "class_loader.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/descriptors_names.h"
#include "dex/dex_file-inl.h"
#include "dex/dex_file_annotations.h"
diff --git a/runtime/mirror/class_ext-inl.h b/runtime/mirror/class_ext-inl.h
index 99f7f49..b8493c1 100644
--- a/runtime/mirror/class_ext-inl.h
+++ b/runtime/mirror/class_ext-inl.h
@@ -23,7 +23,6 @@
#include "art_method-inl.h"
#include "base/enums.h"
#include "base/globals.h"
-#include "class_root.h"
#include "handle_scope.h"
#include "jni/jni_internal.h"
#include "jni_id_type.h"
diff --git a/runtime/mirror/class_ext.cc b/runtime/mirror/class_ext.cc
index ba1ae5f..7543ab6 100644
--- a/runtime/mirror/class_ext.cc
+++ b/runtime/mirror/class_ext.cc
@@ -22,7 +22,7 @@
#include "base/utils.h"
#include "class-alloc-inl.h"
#include "class-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/dex_file-inl.h"
#include "gc/accounting/card_table-inl.h"
#include "mirror/object.h"
diff --git a/runtime/mirror/emulated_stack_frame.cc b/runtime/mirror/emulated_stack_frame.cc
index cfdab8f..19e40dc 100644
--- a/runtime/mirror/emulated_stack_frame.cc
+++ b/runtime/mirror/emulated_stack_frame.cc
@@ -19,7 +19,7 @@
#include "array-alloc-inl.h"
#include "array-inl.h"
#include "class-alloc-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "handle.h"
#include "jvalue-inl.h"
#include "method_handles-inl.h"
diff --git a/runtime/mirror/field-inl.h b/runtime/mirror/field-inl.h
index 4f544c9..9fe5eac 100644
--- a/runtime/mirror/field-inl.h
+++ b/runtime/mirror/field-inl.h
@@ -21,7 +21,7 @@
#include "art_field-inl.h"
#include "class-alloc-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex_cache-inl.h"
#include "object-inl.h"
diff --git a/runtime/mirror/method.cc b/runtime/mirror/method.cc
index c829026..f83f03c 100644
--- a/runtime/mirror/method.cc
+++ b/runtime/mirror/method.cc
@@ -17,7 +17,7 @@
#include "method.h"
#include "art_method.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "mirror/class-alloc-inl.h"
#include "mirror/object-inl.h"
#include "obj_ptr-inl.h"
diff --git a/runtime/mirror/method_handle_impl.cc b/runtime/mirror/method_handle_impl.cc
index dd25fc9..4f1a18b 100644
--- a/runtime/mirror/method_handle_impl.cc
+++ b/runtime/mirror/method_handle_impl.cc
@@ -17,7 +17,7 @@
#include "method_handle_impl-inl.h"
#include "class-alloc-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
namespace art {
namespace mirror {
diff --git a/runtime/mirror/method_handles_lookup.cc b/runtime/mirror/method_handles_lookup.cc
index e0e7b06..e9c41f9 100644
--- a/runtime/mirror/method_handles_lookup.cc
+++ b/runtime/mirror/method_handles_lookup.cc
@@ -17,7 +17,7 @@
#include "method_handles_lookup.h"
#include "class-alloc-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/modifiers.h"
#include "handle_scope.h"
#include "jni/jni_internal.h"
diff --git a/runtime/mirror/method_type.cc b/runtime/mirror/method_type.cc
index 1d88d85..821de7b 100644
--- a/runtime/mirror/method_type.cc
+++ b/runtime/mirror/method_type.cc
@@ -17,7 +17,7 @@
#include "method_type-inl.h"
#include "class-alloc-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "method_handles.h"
#include "obj_ptr-inl.h"
#include "object_array-alloc-inl.h"
diff --git a/runtime/mirror/method_type_test.cc b/runtime/mirror/method_type_test.cc
index 4e9ba51..742960b 100644
--- a/runtime/mirror/method_type_test.cc
+++ b/runtime/mirror/method_type_test.cc
@@ -22,7 +22,7 @@
#include "class-inl.h"
#include "class_linker-inl.h"
#include "class_loader.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_runtime_test.h"
#include "handle_scope-inl.h"
#include "object_array-alloc-inl.h"
diff --git a/runtime/mirror/object_test.cc b/runtime/mirror/object_test.cc
index 8ef7025..80ed832 100644
--- a/runtime/mirror/object_test.cc
+++ b/runtime/mirror/object_test.cc
@@ -30,7 +30,7 @@
#include "class-inl.h"
#include "class_linker-inl.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_runtime_test.h"
#include "dex/dex_file.h"
#include "entrypoints/entrypoint_utils-inl.h"
diff --git a/runtime/mirror/stack_trace_element.cc b/runtime/mirror/stack_trace_element.cc
index 2a272d3..7fc6c09 100644
--- a/runtime/mirror/stack_trace_element.cc
+++ b/runtime/mirror/stack_trace_element.cc
@@ -18,7 +18,7 @@
#include "class-alloc-inl.h"
#include "class.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "gc/accounting/card_table-inl.h"
#include "handle_scope-inl.h"
#include "object-inl.h"
diff --git a/runtime/mirror/string-alloc-inl.h b/runtime/mirror/string-alloc-inl.h
index e2b0805..5f3abd7 100644
--- a/runtime/mirror/string-alloc-inl.h
+++ b/runtime/mirror/string-alloc-inl.h
@@ -23,7 +23,7 @@
#include "array.h"
#include "base/bit_utils.h"
#include "class.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "gc/allocator_type.h"
#include "gc/heap-inl.h"
#include "obj_ptr.h"
diff --git a/runtime/mirror/throwable.cc b/runtime/mirror/throwable.cc
index faa605c..a03277c 100644
--- a/runtime/mirror/throwable.cc
+++ b/runtime/mirror/throwable.cc
@@ -22,7 +22,7 @@
#include "base/enums.h"
#include "base/utils.h"
#include "class-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/dex_file-inl.h"
#include "gc/accounting/card_table-inl.h"
#include "obj_ptr-inl.h"
diff --git a/runtime/mirror/var_handle.cc b/runtime/mirror/var_handle.cc
index 6d5ff2c..3079c35 100644
--- a/runtime/mirror/var_handle.cc
+++ b/runtime/mirror/var_handle.cc
@@ -21,7 +21,7 @@
#include "base/casts.h"
#include "class-inl.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "intrinsics_enum.h"
#include "jni/jni_internal.h"
#include "jvalue-inl.h"
diff --git a/runtime/mirror/var_handle_test.cc b/runtime/mirror/var_handle_test.cc
index 6c765d6..bb67a4a 100644
--- a/runtime/mirror/var_handle_test.cc
+++ b/runtime/mirror/var_handle_test.cc
@@ -24,7 +24,7 @@
#include "class-inl.h"
#include "class_linker-inl.h"
#include "class_loader.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_runtime_test.h"
#include "handle_scope-inl.h"
#include "jvalue-inl.h"
diff --git a/runtime/native/java_lang_Class.cc b/runtime/native/java_lang_Class.cc
index 5a73bf3..c47d5e4 100644
--- a/runtime/native/java_lang_Class.cc
+++ b/runtime/native/java_lang_Class.cc
@@ -22,7 +22,7 @@
#include "art_method-inl.h"
#include "base/enums.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "common_throws.h"
#include "dex/descriptors_names.h"
#include "dex/dex_file-inl.h"
diff --git a/runtime/native/java_lang_reflect_Constructor.cc b/runtime/native/java_lang_reflect_Constructor.cc
index f9cdc36..e11b0e4 100644
--- a/runtime/native/java_lang_reflect_Constructor.cc
+++ b/runtime/native/java_lang_reflect_Constructor.cc
@@ -21,7 +21,7 @@
#include "art_method-inl.h"
#include "base/enums.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/dex_file_annotations.h"
#include "jni/jni_internal.h"
#include "mirror/class-alloc-inl.h"
diff --git a/runtime/native/java_lang_reflect_Executable.cc b/runtime/native/java_lang_reflect_Executable.cc
index 2ce56b5..fef16b9 100644
--- a/runtime/native/java_lang_reflect_Executable.cc
+++ b/runtime/native/java_lang_reflect_Executable.cc
@@ -20,7 +20,7 @@
#include "nativehelper/jni_macros.h"
#include "art_method-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/dex_file_annotations.h"
#include "handle.h"
#include "jni/jni_internal.h"
diff --git a/runtime/native/java_lang_reflect_Method.cc b/runtime/native/java_lang_reflect_Method.cc
index 0d9a257..66fef4c 100644
--- a/runtime/native/java_lang_reflect_Method.cc
+++ b/runtime/native/java_lang_reflect_Method.cc
@@ -22,7 +22,7 @@
#include "base/enums.h"
#include "class_linker-inl.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "dex/dex_file_annotations.h"
#include "jni/jni_internal.h"
#include "mirror/class-inl.h"
diff --git a/runtime/proxy_test.h b/runtime/proxy_test.h
index bdd902f..0a871a4 100644
--- a/runtime/proxy_test.h
+++ b/runtime/proxy_test.h
@@ -22,7 +22,7 @@
#include "art_method-inl.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "mirror/class-inl.h"
#include "mirror/method.h"
#include "obj_ptr-inl.h"
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index 8fbc178..5104297 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -68,7 +68,7 @@
#include "base/unix_file/fd_file.h"
#include "base/utils.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "compiler_callbacks.h"
#include "debugger.h"
#include "dex/art_dex_file_loader.h"
diff --git a/runtime/thread.cc b/runtime/thread.cc
index e92e391..21b8d05 100644
--- a/runtime/thread.cc
+++ b/runtime/thread.cc
@@ -56,7 +56,7 @@
#include "base/to_str.h"
#include "base/utils.h"
#include "class_linker-inl.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "debugger.h"
#include "dex/descriptors_names.h"
#include "dex/dex_file-inl.h"
diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc
index 740fd09..c4593f2 100644
--- a/runtime/verifier/method_verifier.cc
+++ b/runtime/verifier/method_verifier.cc
@@ -34,7 +34,7 @@
#include "base/time_utils.h"
#include "base/utils.h"
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "compiler_callbacks.h"
#include "dex/class_accessor-inl.h"
#include "dex/descriptors_names.h"
diff --git a/runtime/verifier/reg_type_cache-inl.h b/runtime/verifier/reg_type_cache-inl.h
index f62e8b6..036719d 100644
--- a/runtime/verifier/reg_type_cache-inl.h
+++ b/runtime/verifier/reg_type_cache-inl.h
@@ -18,7 +18,7 @@
#define ART_RUNTIME_VERIFIER_REG_TYPE_CACHE_INL_H_
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "mirror/class-inl.h"
#include "mirror/method_handle_impl.h"
#include "mirror/method_type.h"
diff --git a/test/1985-structural-redefine-stack-scope/stack_scope.cc b/test/1985-structural-redefine-stack-scope/stack_scope.cc
index 5c5215b..02d04dd 100644
--- a/test/1985-structural-redefine-stack-scope/stack_scope.cc
+++ b/test/1985-structural-redefine-stack-scope/stack_scope.cc
@@ -21,7 +21,7 @@
#include <vector>
#include "class_linker.h"
-#include "class_root.h"
+#include "class_root-inl.h"
#include "jni.h"
#include "jni/jni_internal.h"
#include "mirror/class.h"