diff options
Diffstat (limited to 'runtime/entrypoints/quick/quick_entrypoints.h')
-rw-r--r-- | runtime/entrypoints/quick/quick_entrypoints.h | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/runtime/entrypoints/quick/quick_entrypoints.h b/runtime/entrypoints/quick/quick_entrypoints.h index 3d3f7a1bdb..27865e3dc4 100644 --- a/runtime/entrypoints/quick/quick_entrypoints.h +++ b/runtime/entrypoints/quick/quick_entrypoints.h @@ -31,12 +31,12 @@ namespace art { namespace mirror { class Array; class Class; +template<class MirrorType> class CompressedReference; class Object; -template<class MirrorType> -class CompressedReference; } // namespace mirror class ArtMethod; +template<class MirrorType> class GcRoot; class Thread; // Pointers to functions that are called by quick compiler generated code via thread-local storage. @@ -72,9 +72,14 @@ extern void ReadBarrierJni(mirror::CompressedReference<mirror::Object>* handle_o Thread* self) NO_THREAD_SAFETY_ANALYSIS HOT_ATTR; + // Read barrier entrypoints. -// Compilers for ARM, ARM64, MIPS, MIPS64 can insert a call to this function directly. -// For x86 and x86_64, compilers need a wrapper assembly function, to handle mismatch in ABI. +// +// Compilers for ARM, ARM64, MIPS, MIPS64 can insert a call to these +// functions directly. For x86 and x86-64, compilers need a wrapper +// assembly function, to handle mismatch in ABI. + +// Read barrier entrypoint for heap references. // This is the read barrier slow path for instance and static fields and reference-type arrays. // TODO: Currently the read barrier does not have a fast path for compilers to directly generate. // Ideally the slow path should only take one parameter "ref". @@ -82,6 +87,10 @@ extern "C" mirror::Object* artReadBarrierSlow(mirror::Object* ref, mirror::Objec uint32_t offset) SHARED_REQUIRES(Locks::mutator_lock_) HOT_ATTR; +// Read barrier entrypoint for GC roots. +extern "C" mirror::Object* artReadBarrierForRootSlow(GcRoot<mirror::Object>* root) + SHARED_REQUIRES(Locks::mutator_lock_) HOT_ATTR; + } // namespace art #endif // ART_RUNTIME_ENTRYPOINTS_QUICK_QUICK_ENTRYPOINTS_H_ |