From: Fred Shih Date: Wed, 6 Aug 2014 23:44:22 +0000 (-0700) Subject: Fixed build breakage due to incorrect class TypeId. X-Git-Tag: android-x86-6.0-r1~145^2~2379^2^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4fc785398707ede68f29768748b7fe5fa39dde24;p=android-x86%2Fart.git Fixed build breakage due to incorrect class TypeId. Fixed incorrect type id being inserted in code buffer and got rid of inefficient pointer wrapping in LoadClassType. Change-Id: I7ee1d957ebcd816445c26199723ac50787d926d7 --- diff --git a/compiler/dex/quick/codegen_util.cc b/compiler/dex/quick/codegen_util.cc index 9f604277a..511297c71 100644 --- a/compiler/dex/quick/codegen_util.cc +++ b/compiler/dex/quick/codegen_util.cc @@ -512,7 +512,7 @@ void Mir2Lir::InstallLiteralPools() { target_method_idx, class_dex_file, code_buffer_.size()); - const DexFile::TypeId& target_method_id = cu_->dex_file->GetTypeId(target_method_idx); + const DexFile::TypeId& target_method_id = class_dex_file->GetTypeId(target_method_idx); // unique value based on target to ensure code deduplication works PushPointer(code_buffer_, &target_method_id, cu_->target64); data_lir = NEXT_LIR(data_lir); @@ -1243,8 +1243,8 @@ void Mir2Lir::LoadClassType(const DexFile& dex_file, uint32_t type_idx, LIR* data_target = ScanLiteralPoolClass(class_literal_list_, dex_file, type_idx); if (data_target == nullptr) { data_target = AddWordData(&class_literal_list_, type_idx); + data_target->operands[1] = WrapPointer(const_cast(&dex_file)); } - data_target->operands[1] = WrapPointer(const_cast(&dex_file)); // Loads a Class pointer, which is a reference as it lives in the heap. LIR* load_pc_rel = OpPcRelLoad(TargetReg(symbolic_reg, kRef), data_target); AppendLIR(load_pc_rel);