Fix --input-vdex in the presence of a compact dex file.
The vdex file can have a compact dex file and therefore shared data size
be non-zero.
Partial revert of:
https://android-review.googlesource.com/c/platform/art/+/1942514
Test: golem benchmarks
Bug: 170086509
Change-Id: I6ea964236362e97c74a159840b1c241f10d22922
diff --git a/dex2oat/linker/oat_writer.cc b/dex2oat/linker/oat_writer.cc
index c5f3adf..a8b0e1a 100644
--- a/dex2oat/linker/oat_writer.cc
+++ b/dex2oat/linker/oat_writer.cc
@@ -3241,8 +3241,9 @@
// Write shared dex file data section and fix up the dex file headers.
if (shared_data_size != 0u) {
DCHECK_EQ(RoundUp(vdex_size_, 4u), vdex_dex_shared_data_offset_);
- DCHECK(!use_existing_vdex);
- memset(vdex_begin_ + vdex_size_, 0, vdex_dex_shared_data_offset_ - vdex_size_);
+ if (!use_existing_vdex) {
+ memset(vdex_begin_ + vdex_size_, 0, vdex_dex_shared_data_offset_ - vdex_size_);
+ }
size_dex_file_alignment_ += vdex_dex_shared_data_offset_ - vdex_size_;
vdex_size_ = vdex_dex_shared_data_offset_;
@@ -3254,7 +3255,7 @@
memcpy(vdex_begin_ + vdex_size_, section->Begin(), shared_data_size);
section->Clear();
dex_container_.reset();
- } else {
+ } else if (!use_existing_vdex) {
memcpy(vdex_begin_ + vdex_size_, raw_dex_file_shared_data_begin, shared_data_size);
}
vdex_size_ += shared_data_size;