summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Srbecky <dsrbecky@google.com>2021-02-23 22:45:33 +0000
committerDavid Srbecky <dsrbecky@google.com>2021-03-02 16:35:35 +0000
commit11943fce963dedeaa9b2d261afa7c30f4bcc0b81 (patch)
treea26ff297580721e498b6a8c66e8c3cfcf55b7410
parentee1c9613d97cf87399e4213ef9d8c66c5fb4a6bd (diff)
Move dex file registration in ti_redefine.
AppendToBootClassPath includes dex file registration, so it was being registered twice on that code path. Test: test.py -b -r --host --64 Change-Id: I14146e38e21958b557151f046da6b898e685b688
-rw-r--r--openjdkjvmti/ti_redefine.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/openjdkjvmti/ti_redefine.cc b/openjdkjvmti/ti_redefine.cc
index 12d00ad052..487d9dae4d 100644
--- a/openjdkjvmti/ti_redefine.cc
+++ b/openjdkjvmti/ti_redefine.cc
@@ -2487,9 +2487,11 @@ jvmtiError Redefiner::Run() {
// At this point we can no longer fail without corrupting the runtime state.
for (RedefinitionDataIter data = holder.begin(); data != holder.end(); ++data) {
art::ClassLinker* cl = runtime_->GetClassLinker();
- cl->RegisterExistingDexCache(data.GetNewDexCache(), data.GetSourceClassLoader());
if (data.GetSourceClassLoader() == nullptr) {
+ // AppendToBootClassPath includes dex file registration.
cl->AppendToBootClassPath(self_, &data.GetRedefinition().GetDexFile());
+ } else {
+ cl->RegisterExistingDexCache(data.GetNewDexCache(), data.GetSourceClassLoader());
}
}
UnregisterAllBreakpoints();