From df707e406877e9c0426dd051c00933ebb331673e Mon Sep 17 00:00:00 2001 From: Igor Murashkin Date: Tue, 2 Feb 2016 16:56:50 -0800 Subject: runtime: Don't skip verification for -Xverify:soft-fail When forcing the interpreter into access checks mode, make sure that the regular verification is still run, giving the verifier an opportunity to throw a VerifyError. If verification would've succeeded (without -Xverify:soft-fail flag), override this and soft-fail, to force the interpreter-with-access-checks to be run instead of the normal faster interpreter. This fixes the following run-tests under the interpeter-access-checks: * 135 * 412 * 471 * 506 * 800 Bug: 22414682 Change-Id: I5cb86a8bba71c7af9361a63c0802786c852b857b --- compiler/driver/compiler_driver.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'compiler/driver/compiler_driver.cc') diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc index f1b745895f..9ab7280793 100644 --- a/compiler/driver/compiler_driver.cc +++ b/compiler/driver/compiler_driver.cc @@ -2306,9 +2306,9 @@ class SetVerifiedClassVisitor : public CompilationVisitor { mirror::Class::SetStatus(klass, mirror::Class::kStatusVerified, soa.Self()); // Mark methods as pre-verified. If we don't do this, the interpreter will run with // access checks. - klass->SetPreverifiedFlagOnAllMethods( + klass->SetSkipAccessChecksFlagOnAllMethods( GetInstructionSetPointerSize(manager_->GetCompiler()->GetInstructionSet())); - klass->SetPreverified(); + klass->SetVerificationAttempted(); } // Record the final class status if necessary. ClassReference ref(manager_->GetDexFile(), class_def_index); -- cgit v1.2.3-59-g8ed1b