Using gcmap instead of shadow frame.
Fix misuse of TBAAJRuntime & TBAARuntimeInfo. Now, the TBAAJRuntime is
only for runtime support function.
Update DexPC before lock object and suspend.
Change-Id: I40fa37f4863fe6e127328a8413285ee3c62e8505
diff --git a/src/verifier/method_verifier.cc b/src/verifier/method_verifier.cc
index d6cd665dd..b96989d 100644
--- a/src/verifier/method_verifier.cc
+++ b/src/verifier/method_verifier.cc
@@ -979,7 +979,6 @@
return true;
}
-#if !defined(ART_USE_LLVM_COMPILER)
static const std::vector<uint8_t>* CreateLengthPrefixedDexGcMap(const std::vector<uint8_t>& gc_map) {
std::vector<uint8_t>* length_prefixed_gc_map = new std::vector<uint8_t>;
length_prefixed_gc_map->push_back((gc_map.size() & 0xff000000) >> 24);
@@ -997,7 +996,6 @@
(length_prefixed_gc_map->at(3) << 0)));
return length_prefixed_gc_map;
}
-#endif
bool MethodVerifier::VerifyCodeFlow() {
uint16_t registers_size = code_item_->registers_size_;
@@ -1029,7 +1027,6 @@
Compiler::MethodReference ref(dex_file_, dex_method_idx_);
-#if !defined(ART_USE_LLVM_COMPILER)
/* Generate a register map and add it to the method. */
UniquePtr<const std::vector<uint8_t> > map(GenerateGcMap());
@@ -1043,13 +1040,13 @@
const std::vector<uint8_t>* dex_gc_map = CreateLengthPrefixedDexGcMap(*(map.get()));
verifier::MethodVerifier::SetDexGcMap(ref, *dex_gc_map);
-#else // defined(ART_USE_LLVM_COMPILER)
+#if defined(ART_USE_LLVM_COMPILER)
/* Generate Inferred Register Category for LLVM-based Code Generator */
const InferredRegCategoryMap* table = GenerateInferredRegCategoryMap();
verifier::MethodVerifier::SetInferredRegCategoryMap(ref, *table);
-
#endif
+
return true;
}
@@ -3498,17 +3495,6 @@
for (size_t i = 0; i < insns_size; ++i) {
if (RegisterLine* line = reg_table_.GetLine(i)) {
const Instruction* inst = Instruction::At(code_item_->insns_ + i);
-
- // GC points
- if (inst->IsBranch() || inst->IsInvoke()) {
- for (size_t r = 0; r < regs_size; ++r) {
- const RegType &rt = line->GetRegisterType(r);
- if (rt.IsNonZeroReferenceTypes()) {
- table->SetRegCanBeObject(r);
- }
- }
- }
-
/* We only use InferredRegCategoryMap in one case */
if (inst->IsBranch()) {
for (size_t r = 0; r < regs_size; ++r) {