diff options
| author | 2017-08-08 21:44:57 +0000 | |
|---|---|---|
| committer | 2017-08-08 21:44:57 +0000 | |
| commit | 18e91619f38349e29367567a70f2f974a8cdaf67 (patch) | |
| tree | 4b862a57195b67785e3cc4e5a763ccfc1ce85aa0 /compiler/driver/compiler_driver_test.cc | |
| parent | 785e3555685279767f52f1280ea13ba35b112e86 (diff) | |
| parent | 0b1c341d2d89a483142cd14bdeb4650ab00184f1 (diff) | |
Merge "Support class unloading in dex2oat for quicken multidex"
Diffstat (limited to 'compiler/driver/compiler_driver_test.cc')
| -rw-r--r-- | compiler/driver/compiler_driver_test.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/compiler/driver/compiler_driver_test.cc b/compiler/driver/compiler_driver_test.cc index 4da3e0df39..392d57c0f2 100644 --- a/compiler/driver/compiler_driver_test.cc +++ b/compiler/driver/compiler_driver_test.cc @@ -23,6 +23,7 @@ #include "art_method-inl.h" #include "class_linker-inl.h" #include "common_compiler_test.h" +#include "compiler_callbacks.h" #include "dex_file.h" #include "dex_file_types.h" #include "gc/heap.h" @@ -368,7 +369,9 @@ TEST_F(CompilerDriverVerifyTest, VerifyCompilation) { // Test that a class of status kStatusRetryVerificationAtRuntime is indeed recorded that way in the // driver. -TEST_F(CompilerDriverVerifyTest, RetryVerifcationStatus) { +// Test that checks that classes can be assumed as verified if unloading mode is enabled and +// the class status is at least verified. +TEST_F(CompilerDriverVerifyTest, RetryVerifcationStatusCheckVerified) { Thread* const self = Thread::Current(); jobject class_loader; std::vector<const DexFile*> dex_files; @@ -382,6 +385,7 @@ TEST_F(CompilerDriverVerifyTest, RetryVerifcationStatus) { dex_file = dex_files.front(); } compiler_driver_->SetDexFilesForOatFile(dex_files); + callbacks_->SetDoesClassUnloading(true, compiler_driver_.get()); ClassReference ref(dex_file, 0u); // Test that the status is read from the compiler driver as expected. for (size_t i = mirror::Class::kStatusRetryVerificationAtRuntime; @@ -397,6 +401,12 @@ TEST_F(CompilerDriverVerifyTest, RetryVerifcationStatus) { mirror::Class::Status status = {}; ASSERT_TRUE(compiler_driver_->GetCompiledClass(ref, &status)); EXPECT_EQ(status, expected_status); + + // Check that we can assume verified if we are a status that is at least verified. + if (status >= mirror::Class::kStatusVerified) { + // Check that the class can be assumed as verified in the compiler driver. + EXPECT_TRUE(callbacks_->CanAssumeVerified(ref)) << status; + } } } |