diff options
| author | 2015-12-15 12:39:34 +0000 | |
|---|---|---|
| committer | 2015-12-15 12:39:34 +0000 | |
| commit | 089ff4886aa9b5e7cec04d2ef5cdeb9d68e5dc43 (patch) | |
| tree | 84ad42399e1055f3596d7df6f786d9f7b8605ee3 /runtime/entrypoints/quick/quick_entrypoints.h | |
| parent | bd00c8226ebc28d2745ac4d0408b11c156771773 (diff) | |
| parent | 7c1559a06041c9c299d5ab514d54b2102f204a84 (diff) | |
Merge "x86 Baker's read barrier fast path implementation."
Diffstat (limited to 'runtime/entrypoints/quick/quick_entrypoints.h')
| -rw-r--r-- | runtime/entrypoints/quick/quick_entrypoints.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/runtime/entrypoints/quick/quick_entrypoints.h b/runtime/entrypoints/quick/quick_entrypoints.h index 27865e3dc4..f5b68fa922 100644 --- a/runtime/entrypoints/quick/quick_entrypoints.h +++ b/runtime/entrypoints/quick/quick_entrypoints.h @@ -79,11 +79,17 @@ extern void ReadBarrierJni(mirror::CompressedReference<mirror::Object>* handle_o // functions directly. For x86 and x86-64, compilers need a wrapper // assembly function, to handle mismatch in ABI. +// Mark the heap reference `obj`. This entry point is used by read +// barrier fast path implementations generated by the compiler to mark +// an object that is referenced by a field of a gray object. +extern "C" mirror::Object* artReadBarrierMark(mirror::Object* obj) + SHARED_REQUIRES(Locks::mutator_lock_) HOT_ATTR; + // 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". -extern "C" mirror::Object* artReadBarrierSlow(mirror::Object* ref, mirror::Object* obj, +// This is the read barrier slow path for instance and static fields +// and reference type arrays. +extern "C" mirror::Object* artReadBarrierSlow(mirror::Object* ref, + mirror::Object* obj, uint32_t offset) SHARED_REQUIRES(Locks::mutator_lock_) HOT_ATTR; |