summaryrefslogtreecommitdiff
path: root/vm/mterp/armv5te/OP_THROW_VERIFICATION_ERROR.S
diff options
context:
space:
mode:
Diffstat (limited to 'vm/mterp/armv5te/OP_THROW_VERIFICATION_ERROR.S')
-rw-r--r--vm/mterp/armv5te/OP_THROW_VERIFICATION_ERROR.S13
1 files changed, 13 insertions, 0 deletions
diff --git a/vm/mterp/armv5te/OP_THROW_VERIFICATION_ERROR.S b/vm/mterp/armv5te/OP_THROW_VERIFICATION_ERROR.S
new file mode 100644
index 0000000..afe9fd8
--- /dev/null
+++ b/vm/mterp/armv5te/OP_THROW_VERIFICATION_ERROR.S
@@ -0,0 +1,13 @@
+%verify executed
+ /*
+ * Handle a throw-verification-error instruction. This throws an
+ * exception for an error discovered during verification. The
+ * exception is indicated by AA, with some detail provided by BBBB.
+ */
+ /* op AA, ref@BBBB */
+ ldr r0, [rSELF, #offThread_method] @ r0<- self->method
+ FETCH(r2, 1) @ r2<- BBBB
+ EXPORT_PC() @ export the PC
+ mov r1, rINST, lsr #8 @ r1<- AA
+ bl dvmThrowVerificationError @ always throws
+ b common_exceptionThrown @ handle exception