summaryrefslogtreecommitdiff
path: root/compiler/optimizing/intrinsics.cc
diff options
context:
space:
mode:
author Roland Levillain <rpl@google.com> 2019-02-05 14:19:51 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2019-02-05 14:19:51 +0000
commit2860c19944b64c581a8af63339805409c0584d2f (patch)
tree838afe42daa933ffc03b96873c67673e14b4da9f /compiler/optimizing/intrinsics.cc
parent7909e1e4cc741b38b25328e2f9077beb7ecd018b (diff)
parent1d775d2ecfe847395e67310d588626962744c2d0 (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.cc10
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