diff options
author | 2022-04-06 09:30:50 +0000 | |
---|---|---|
committer | 2024-11-05 15:24:05 +0000 | |
commit | 29ec7aef84f4b47d89edee274562b22a177b00b8 (patch) | |
tree | f958dafda289458ce7dac0ad86f7596636ee7ecf /runtime/mirror/class.h | |
parent | 96dc77238e2b5a962911a6da06d5e1b869dc92f8 (diff) |
Use `std::string_view` for `ClassTable` operations.
Use `std::string_view` instead of `const char*` descriptor.
This uses faster `memcmp` instead of the slower`strcmp` for
descriptor comparison.
Note that the `ScopedTrace` passes `const char*` across the
`libartpalette` boundary, so we cannot easily replace the
`const char* descriptor` with `std::string_view descriptor`
in certain `ClassLinker` functions because we actually need
to pass a null-terminated string and the `string_view` API
does not technically guarantee null-terminated data.
Therefore we resort to explicitly passing around the
descriptor and its length as separate arguments.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Bug: 181943478
Bug: 338123769
Change-Id: Ie3fa251390acc582c54b4686d18696eb89b32361
Diffstat (limited to 'runtime/mirror/class.h')
-rw-r--r-- | runtime/mirror/class.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/runtime/mirror/class.h b/runtime/mirror/class.h index 6384bfabc0..9560f985ac 100644 --- a/runtime/mirror/class.h +++ b/runtime/mirror/class.h @@ -1252,7 +1252,7 @@ class EXPORT MANAGED Class final : public Object { const char* GetDescriptor(std::string* storage) REQUIRES_SHARED(Locks::mutator_lock_); bool DescriptorEquals(ObjPtr<mirror::Class> match) REQUIRES_SHARED(Locks::mutator_lock_); - bool DescriptorEquals(const char* match) REQUIRES_SHARED(Locks::mutator_lock_); + bool DescriptorEquals(std::string_view match) REQUIRES_SHARED(Locks::mutator_lock_); uint32_t DescriptorHash() REQUIRES_SHARED(Locks::mutator_lock_); @@ -1440,11 +1440,10 @@ class EXPORT MANAGED Class final : public Object { ALWAYS_INLINE uint32_t GetDirectMethodsStartOffset() REQUIRES_SHARED(Locks::mutator_lock_); bool ProxyDescriptorEquals(ObjPtr<mirror::Class> match) REQUIRES_SHARED(Locks::mutator_lock_); - bool ProxyDescriptorEquals(const char* match) REQUIRES_SHARED(Locks::mutator_lock_); + bool ProxyDescriptorEquals(std::string_view match) REQUIRES_SHARED(Locks::mutator_lock_); static uint32_t UpdateHashForProxyClass(uint32_t hash, ObjPtr<mirror::Class> proxy_class) REQUIRES_SHARED(Locks::mutator_lock_); - template<VerifyObjectFlags kVerifyFlags> void GetAccessFlagsDCheck() REQUIRES_SHARED(Locks::mutator_lock_); |