diff options
author | 2016-09-27 18:43:30 -0700 | |
---|---|---|
committer | 2016-09-29 17:31:09 -0700 | |
commit | 0795f23920ee9aabf28e45c63cd592dcccf00216 (patch) | |
tree | ff3f880c5e84f3316532b47d0e9a7729ade848ac /runtime/obj_ptr-inl.h | |
parent | d1224dce59eb0019507e41da5e10f12dda66bee4 (diff) |
Clean up ScopedThreadStateChange to use ObjPtr
Also fixed inclusion of -inl.h files in .h files by adding
scoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h
Changed AddLocalReference / Decode to use ObjPtr.
Changed libartbenchmark to be debug to avoid linkage errors.
Bug: 31113334
Test: test-art-host
Change-Id: I4d2e160483a29d21e1e0e440585ed328b9811483
Diffstat (limited to 'runtime/obj_ptr-inl.h')
-rw-r--r-- | runtime/obj_ptr-inl.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/runtime/obj_ptr-inl.h b/runtime/obj_ptr-inl.h index 3dfcf9e2cf..1c698b5c4d 100644 --- a/runtime/obj_ptr-inl.h +++ b/runtime/obj_ptr-inl.h @@ -41,6 +41,7 @@ inline void ObjPtr<MirrorType, kPoison>::AssertValid() const { template<class MirrorType, bool kPoison> inline uintptr_t ObjPtr<MirrorType, kPoison>::Encode(MirrorType* ptr) { uintptr_t ref = reinterpret_cast<uintptr_t>(ptr); + DCHECK_ALIGNED(ref, kObjectAlignment); if (kPoison && ref != 0) { DCHECK_LE(ref, 0xFFFFFFFFU); ref >>= kObjectAlignmentShift; @@ -52,6 +53,12 @@ inline uintptr_t ObjPtr<MirrorType, kPoison>::Encode(MirrorType* ptr) { return ref; } +template<class MirrorType, bool kPoison> +inline std::ostream& operator<<(std::ostream& os, ObjPtr<MirrorType, kPoison> ptr) { + // May be used for dumping bad pointers, do not use the checked version. + return os << ptr.DecodeUnchecked(); +} + } // namespace art #endif // ART_RUNTIME_OBJ_PTR_INL_H_ |