diff options
author | 2019-02-05 14:19:51 +0000 | |
---|---|---|
committer | 2019-02-05 14:19:51 +0000 | |
commit | 2860c19944b64c581a8af63339805409c0584d2f (patch) | |
tree | 838afe42daa933ffc03b96873c67673e14b4da9f /compiler/optimizing/intrinsics.cc | |
parent | 7909e1e4cc741b38b25328e2f9077beb7ecd018b (diff) | |
parent | 1d775d2ecfe847395e67310d588626962744c2d0 (diff) |
Merge "Check that the String class is not movable in String.equals intrinsics."
Diffstat (limited to 'compiler/optimizing/intrinsics.cc')
-rw-r--r-- | compiler/optimizing/intrinsics.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/compiler/optimizing/intrinsics.cc b/compiler/optimizing/intrinsics.cc index 2721cb5a0f..2de0f0c737 100644 --- a/compiler/optimizing/intrinsics.cc +++ b/compiler/optimizing/intrinsics.cc @@ -20,6 +20,7 @@ #include "art_method-inl.h" #include "base/utils.h" #include "class_linker.h" +#include "class_root.h" #include "dex/invoke_type.h" #include "driver/compiler_options.h" #include "gc/space/image_space.h" @@ -362,4 +363,13 @@ IntrinsicVisitor::IntegerValueOfInfo IntrinsicVisitor::ComputeIntegerValueOfInfo return info; } +void IntrinsicVisitor::AssertNonMovableStringClass() { + if (kIsDebugBuild) { + Thread* const self = Thread::Current(); + ReaderMutexLock mu(self, *Locks::mutator_lock_); + ObjPtr<mirror::Class> string_class = GetClassRoot<art::mirror::String>(); + CHECK(!art::Runtime::Current()->GetHeap()->IsMovableObject(string_class)); + } +} + } // namespace art |