OSDN Git Service

Query declaring class before querying IsNative.
authorNicolas Geoffray <ngeoffray@google.com>
Fri, 4 Mar 2016 16:43:27 +0000 (16:43 +0000)
committerNicolas Geoffray <ngeoffray@google.com>
Fri, 4 Mar 2016 16:43:27 +0000 (16:43 +0000)
IsNative checks that the declaring class is not null.

Change-Id: I9b775858cdb685eb633b3d8a8a271a3d451bb8a9

runtime/mirror/class-inl.h

index cbcb4b9..103a8b7 100644 (file)
@@ -940,7 +940,7 @@ void mirror::Class::VisitNativeRoots(Visitor& visitor, size_t pointer_size) {
   }
   for (ArtMethod& method : GetMethods(pointer_size)) {
     method.VisitRoots(visitor, pointer_size);
-    if (!method.IsNative()) {
+    if (method.GetDeclaringClassUnchecked() != nullptr && !method.IsNative()) {
       ProfilingInfo* profiling_info = method.GetProfilingInfo(pointer_size);
       if (profiling_info != nullptr) {
         profiling_info->VisitRoots(visitor);