OSDN Git Service

Add exception check to AllocateInternalWithGc
authorMathieu Chartier <mathieuc@google.com>
Wed, 3 Sep 2014 18:21:08 +0000 (11:21 -0700)
committerMathieu Chartier <mathieuc@google.com>
Wed, 3 Sep 2014 18:26:09 +0000 (11:26 -0700)
Trying to figure out if the pending exception comes before or during
AllocateInternalWithGc.

Bug: 17164348

Change-Id: Id46d82bfc0f84d16e5ffdafe41658aee4cc2c702

runtime/gc/heap.cc

index ce914e5..7e7b859 100644 (file)
@@ -1225,6 +1225,8 @@ mirror::Object* Heap::AllocateInternalWithGc(Thread* self, AllocatorType allocat
                                              size_t* usable_size,
                                              mirror::Class** klass) {
   bool was_default_allocator = allocator == GetCurrentAllocator();
+  // Make sure there is no pending exception since we may need to throw an OOME.
+  self->AssertNoPendingException();
   DCHECK(klass != nullptr);
   StackHandleScope<1> hs(self);
   HandleWrapper<mirror::Class> h(hs.NewHandleWrapper(klass));