Adds ThrowAbstractMethodError to common throws.

Change-Id: Ib9b6b634a934b075a168534e50b2160a4e4dbc65
diff --git a/src/common_throws.cc b/src/common_throws.cc
index 66e512e..0497901 100644
--- a/src/common_throws.cc
+++ b/src/common_throws.cc
@@ -66,6 +66,14 @@
   }
 }
 
+// AbstractMethodError
+
+void ThrowAbstractMethodError(const mirror::AbstractMethod* method) {
+  ThrowException(NULL, "Ljava/lang/AbstractMethodError;", NULL,
+                 StringPrintf("abstract method \"%s\"",
+                              PrettyMethod(method).c_str()).c_str());
+}
+
 // ArithmeticException
 
 void ThrowArithmeticExceptionDivideByZero() {
diff --git a/src/common_throws.h b/src/common_throws.h
index fbaf4c1..4bf12c0 100644
--- a/src/common_throws.h
+++ b/src/common_throws.h
@@ -30,6 +30,11 @@
 class StringPiece;
 class ThrowLocation;
 
+// AbstractMethodError
+
+void ThrowAbstractMethodError(const mirror::AbstractMethod* method)
+    SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
+
 // ArithmeticException
 
 void ThrowArithmeticExceptionDivideByZero() SHARED_LOCKS_REQUIRED(Locks::mutator_lock_);
diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc
index a89fb11..16e04a5 100644
--- a/src/interpreter/interpreter.cc
+++ b/src/interpreter/interpreter.cc
@@ -420,9 +420,7 @@
     num_regs = code_item->registers_size_;
     num_ins = code_item->ins_size_;
   } else if (method->IsAbstract()) {
-    ThrowLocation throw_location = self->GetCurrentLocationForThrow();
-    self->ThrowNewExceptionF(throw_location, "Ljava/lang/AbstractMethodError;",
-                             "abstract method \"%s\"", PrettyMethod(method).c_str());
+    ThrowAbstractMethodError(method);
     return;
   } else {
     DCHECK(method->IsNative() || method->IsProxyMethod());
@@ -511,9 +509,7 @@
     num_regs = code_item->registers_size_;
     num_ins = code_item->ins_size_;
   } else if (method->IsAbstract()) {
-    ThrowLocation throw_location = self->GetCurrentLocationForThrow();
-    self->ThrowNewExceptionF(throw_location, "Ljava/lang/AbstractMethodError;",
-                             "abstract method \"%s\"", PrettyMethod(method).c_str());
+    ThrowAbstractMethodError(method);
     return;
   } else {
     DCHECK(method->IsNative() || method->IsProxyMethod());
@@ -2988,9 +2984,7 @@
     num_regs =  code_item->registers_size_;
     num_ins = code_item->ins_size_;
   } else if (method->IsAbstract()) {
-    ThrowLocation throw_location = self->GetCurrentLocationForThrow();
-    self->ThrowNewExceptionF(throw_location, "Ljava/lang/AbstractMethodError;",
-                             "abstract method \"%s\"", PrettyMethod(method).c_str());
+    ThrowAbstractMethodError(method);
     return;
   } else {
     DCHECK(method->IsNative());
diff --git a/src/oat/runtime/support_stubs.cc b/src/oat/runtime/support_stubs.cc
index 71b67d0..096cb9c 100644
--- a/src/oat/runtime/support_stubs.cc
+++ b/src/oat/runtime/support_stubs.cc
@@ -409,9 +409,7 @@
 #else
   UNUSED(sp);
 #endif
-  ThrowLocation throw_location = self->GetCurrentLocationForThrow();
-  self->ThrowNewExceptionF(throw_location, "Ljava/lang/AbstractMethodError;",
-                           "abstract method \"%s\"", PrettyMethod(method).c_str());
+  ThrowAbstractMethodError(method);
   self->QuickDeliverException();
 }