diff options
author | Sebastien Hertz <shertz@google.com> | 2013-07-09 17:27:07 +0200 |
---|---|---|
committer | Sebastien Hertz <shertz@google.com> | 2013-07-09 18:09:30 +0200 |
commit | 56adf601ed9d1d11a2c462caa262e7de66a9e172 (patch) | |
tree | a994d1346436e86dfd26a9c0a7d3de7c118c70dc /src | |
parent | 3dd9f76ff8fa99be9ff6b18354528c5def7b26f7 (diff) | |
download | art-56adf601ed9d1d11a2c462caa262e7de66a9e172.zip art-56adf601ed9d1d11a2c462caa262e7de66a9e172.tar.gz art-56adf601ed9d1d11a2c462caa262e7de66a9e172.tar.bz2 |
Adds ThrowAbstractMethodError to common throws.
Change-Id: Ib9b6b634a934b075a168534e50b2160a4e4dbc65
Diffstat (limited to 'src')
-rw-r--r-- | src/common_throws.cc | 8 | ||||
-rw-r--r-- | src/common_throws.h | 5 | ||||
-rw-r--r-- | src/interpreter/interpreter.cc | 12 | ||||
-rw-r--r-- | src/oat/runtime/support_stubs.cc | 4 |
4 files changed, 17 insertions, 12 deletions
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 @@ static void ThrowException(const ThrowLocation* throw_location, const char* exce } } +// 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 Object; 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 @@ static void DoInvoke(Thread* self, ShadowFrame& shadow_frame, 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 @@ static void DoInvokeVirtualQuick(Thread* self, ShadowFrame& shadow_frame, 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 @@ void EnterInterpreterFromInvoke(Thread* self, AbstractMethod* method, Object* re 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 @@ extern "C" void artThrowAbstractMethodErrorFromCode(mirror::AbstractMethod* meth #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(); } |