summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Brian Carlstrom <bdc@google.com> 2012-01-17 18:14:39 -0800
committer Brian Carlstrom <bdc@google.com> 2012-01-17 18:19:02 -0800
commit73a15f4ca25453bb86d5e93c8d005e0eb3868e18 (patch)
treee70345def04ba046aacbe8fd582e405687b76e44
parent0f14ae16a2c3e6c4f8a7c24aba558097b78e1d48 (diff)
Tolerate GC map being added twice, if it has the same contents
Change-Id: I3b973c06aa5b170e0b8fb7e28136b65fc8855880
-rw-r--r--src/dex_verifier.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/dex_verifier.cc b/src/dex_verifier.cc
index 1b4a26207d..c2190426b0 100644
--- a/src/dex_verifier.cc
+++ b/src/dex_verifier.cc
@@ -3840,7 +3840,11 @@ const uint8_t* PcToReferenceMap::FindBitMap(uint16_t dex_pc, bool error_if_not_p
DexVerifier::GcMapTable DexVerifier::gc_maps_;
void DexVerifier::SetGcMap(Compiler::MethodReference ref, const std::vector<uint8_t>& gc_map) {
- CHECK(GetGcMap(ref) == NULL);
+ const std::vector<uint8_t>* existing_gc_map = GetGcMap(ref);
+ if (existing_gc_map != NULL) {
+ CHECK(*existing_gc_map == gc_map);
+ delete existing_gc_map;
+ }
gc_maps_[ref] = &gc_map;
CHECK(GetGcMap(ref) != NULL);
}