Make PopSirt inlinable, pass self to SirtRef.

Change-Id: Ieb91526b1cb1f8644ceb3c5b99649f658f43bbc1
diff --git a/src/object.cc b/src/object.cc
index 0cf2aa8..8582a21 100644
--- a/src/object.cc
+++ b/src/object.cc
@@ -35,6 +35,7 @@
 #include "object_utils.h"
 #include "runtime.h"
 #include "runtime_support.h"
+#include "sirt_ref.h"
 #include "stack.h"
 #include "utils.h"
 #include "well_known_classes.h"
@@ -54,7 +55,7 @@
   // Using c->AllocObject() here would be wrong.
   size_t num_bytes = SizeOf();
   Heap* heap = Runtime::Current()->GetHeap();
-  SirtRef<Object> copy(heap->AllocObject(c, num_bytes));
+  SirtRef<Object> copy(Thread::Current(), heap->AllocObject(c, num_bytes));
   if (copy.get() == NULL) {
     return NULL;
   }
@@ -696,7 +697,7 @@
 
     // stash current exception
     Thread* self = Thread::Current();
-    SirtRef<Throwable> exception(self->GetException());
+    SirtRef<Throwable> exception(self, self->GetException());
     CHECK(exception.get() != NULL);
 
     // clear exception to call FindSystemClass
@@ -1447,7 +1448,7 @@
 }
 
 String* String::Alloc(Class* java_lang_String, int32_t utf16_length) {
-  SirtRef<CharArray> array(CharArray::Alloc(utf16_length));
+  SirtRef<CharArray> array(Thread::Current(), CharArray::Alloc(utf16_length));
   if (array.get() == NULL) {
     return NULL;
   }
@@ -1455,7 +1456,8 @@
 }
 
 String* String::Alloc(Class* java_lang_String, CharArray* array) {
-  SirtRef<CharArray> array_ref(array);  // hold reference in case AllocObject causes GC
+  // Hold reference in case AllocObject causes GC.
+  SirtRef<CharArray> array_ref(Thread::Current(), array);
   String* string = down_cast<String*>(java_lang_String->AllocObject());
   if (string == NULL) {
     return NULL;