diff options
author | 2017-01-19 14:57:28 -0800 | |
---|---|---|
committer | 2017-01-20 11:32:03 -0800 | |
commit | a7e38d8aaacfca85b40b5df654f85c0979968672 (patch) | |
tree | 34322c79fc328a608fc17303453c8ec1f38b9eaa /runtime/mirror/class_ext.cc | |
parent | 05778764cb11162b6f3ff72386135ed45a07af33 (diff) |
Use original dex file for retransformation.
The spec requires us to pass the dex file as it appeared before any
retransformation-capable agents had modified it to the
ClassFileLoadHooks when RetransformClasses is called. We do this by
saving the initial dex file bytes into the class as a byte[].
Bug: 32369916
Test: mma -j40 test-art-host
Change-Id: Ic6af3738cd2a831e91ba1144f502fa58b3c333e4
Diffstat (limited to 'runtime/mirror/class_ext.cc')
-rw-r--r-- | runtime/mirror/class_ext.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/runtime/mirror/class_ext.cc b/runtime/mirror/class_ext.cc index 7c6a710cef..efd949e031 100644 --- a/runtime/mirror/class_ext.cc +++ b/runtime/mirror/class_ext.cc @@ -113,6 +113,11 @@ void ClassExt::SetVerifyError(ObjPtr<Object> err) { } } +void ClassExt::SetOriginalDexFileBytes(ObjPtr<ByteArray> bytes) { + DCHECK(!Runtime::Current()->IsActiveTransaction()); + SetFieldObject<false>(OFFSET_OF_OBJECT_MEMBER(ClassExt, original_dex_file_bytes_), bytes); +} + void ClassExt::SetClass(ObjPtr<Class> dalvik_system_ClassExt) { CHECK(dalvik_system_ClassExt != nullptr); dalvik_system_ClassExt_ = GcRoot<Class>(dalvik_system_ClassExt); |