From 2eabc61c9592f18eb02211dd3e76e6d7e6793747 Mon Sep 17 00:00:00 2001 From: Mathieu Chartier Date: Fri, 25 May 2018 14:31:16 -0700 Subject: Fix class_def_idx increment for FastVerify Fixes vdex golem benchmarks. Also fixed logic that was overwriting the expected ClassStatus for debug builds. This is why the tests were passing but the CHECK was failing for non debug dex2oat. Added regression test in dex2oat_test. Bug: 80309967 Test: test-art-host Change-Id: I91c48ffbe894ab471572418142fcb4ae85bf0864 --- compiler/driver/compiler_driver.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'compiler/driver/compiler_driver.cc') diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc index 1b809d232a..decb330f3b 100644 --- a/compiler/driver/compiler_driver.cc +++ b/compiler/driver/compiler_driver.cc @@ -1935,11 +1935,10 @@ bool CompilerDriver::FastVerify(jobject jclass_loader, // Just update the compiled_classes_ map. The compiler doesn't need to resolve // the type. ClassReference ref(dex_file, class_def_idx); - ClassStatus existing = ClassStatus::kNotReady; - DCHECK(compiled_classes_.Get(ref, &existing)) << ref.dex_file->GetLocation(); + const ClassStatus existing = ClassStatus::kNotReady; ClassStateTable::InsertResult result = compiled_classes_.Insert(ref, existing, ClassStatus::kVerified); - CHECK_EQ(result, ClassStateTable::kInsertResultSuccess); + CHECK_EQ(result, ClassStateTable::kInsertResultSuccess) << ref.dex_file->GetLocation(); } else { // Update the class status, so later compilation stages know they don't need to verify // the class. @@ -1962,8 +1961,8 @@ bool CompilerDriver::FastVerify(jobject jclass_loader, class_loader, soa.Self()); } + ++class_def_idx; } - ++class_def_idx; } return true; } -- cgit v1.2.3-59-g8ed1b