diff options
Diffstat (limited to 'runtime/dex_file.h')
| -rw-r--r-- | runtime/dex_file.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/runtime/dex_file.h b/runtime/dex_file.h index a9f1e8da05..8a3db6ccf3 100644 --- a/runtime/dex_file.h +++ b/runtime/dex_file.h @@ -1517,9 +1517,17 @@ class ClassDataItemIterator { class EncodedStaticFieldValueIterator { public: - EncodedStaticFieldValueIterator(const DexFile& dex_file, Handle<mirror::DexCache>* dex_cache, + // A constructor for static tools. You cannot call + // ReadValueToField() for an object created by this. + EncodedStaticFieldValueIterator(const DexFile& dex_file, + const DexFile::ClassDef& class_def); + + // A constructor meant to be called from runtime code. + EncodedStaticFieldValueIterator(const DexFile& dex_file, + Handle<mirror::DexCache>* dex_cache, Handle<mirror::ClassLoader>* class_loader, - ClassLinker* linker, const DexFile::ClassDef& class_def) + ClassLinker* linker, + const DexFile::ClassDef& class_def) SHARED_REQUIRES(Locks::mutator_lock_); template<bool kTransactionActive> @@ -1548,7 +1556,18 @@ class EncodedStaticFieldValueIterator { kBoolean = 0x1f }; + ValueType GetValueType() const { return type_; } + const jvalue& GetJavaValue() const { return jval_; } + private: + EncodedStaticFieldValueIterator(const DexFile& dex_file, + Handle<mirror::DexCache>* dex_cache, + Handle<mirror::ClassLoader>* class_loader, + ClassLinker* linker, + const DexFile::ClassDef& class_def, + size_t pos, + ValueType type); + static constexpr uint8_t kEncodedValueTypeMask = 0x1f; // 0b11111 static constexpr uint8_t kEncodedValueArgShift = 5; |