diff --git a/runtime/arch/arm/quick_entrypoints_arm.S b/runtime/arch/arm/quick_entrypoints_arm.S
index fec1ce5..539b607 100644
--- a/runtime/arch/arm/quick_entrypoints_arm.S
+++ b/runtime/arch/arm/quick_entrypoints_arm.S
@@ -890,7 +890,7 @@
     // r1: pointer to the bottom of the used area of the alloca, can restore stack till there.
 
     // Check for error = 0.
-    cbz r0, .Lentry_error
+    cbz r0, .Lexception_in_native
 
     // Release part of the alloca.
     mov sp, r1
@@ -920,10 +920,6 @@
 
     blx artQuickGenericJniEndTrampoline
 
-    // Tear down the alloca.
-    mov sp, r10
-    .cfi_def_cfa_register sp
-
     // Restore self pointer.
     mov r9, r11
 
@@ -931,6 +927,10 @@
     ldr r2, [r9, #THREAD_EXCEPTION_OFFSET]  @ load Thread::Current()->exception_
     cbnz r2, .Lexception_in_native
 
+    // Tear down the alloca.
+    mov sp, r10
+    .cfi_def_cfa_register sp
+
     // Tear down the callee-save frame. Skip arg registers.
     add     sp, #FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE-FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
     .cfi_adjust_cfa_offset -(FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE-FRAME_SIZE_REFS_ONLY_CALLEE_SAVE)
@@ -943,14 +943,11 @@
     .cfi_def_cfa_register r10
     .cfi_adjust_cfa_offset FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE-FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
 
-.Lentry_error:
-    mov sp, r10
-    .cfi_def_cfa_register sp
-    mov r9, r11
 .Lexception_in_native:
-    RESTORE_REFS_AND_ARGS_CALLEE_SAVE_FRAME
+    ldr sp, [r9, #THREAD_TOP_QUICK_FRAME_OFFSET]
+    .cfi_def_cfa_register sp
+    # This will create a new save-all frame, required by the runtime.
     DELIVER_PENDING_EXCEPTION
-
 END art_quick_generic_jni_trampoline
 
     .extern artQuickToInterpreterBridge
diff --git a/runtime/arch/arm64/quick_entrypoints_arm64.S b/runtime/arch/arm64/quick_entrypoints_arm64.S
index 770073b5..ec25a33 100644
--- a/runtime/arch/arm64/quick_entrypoints_arm64.S
+++ b/runtime/arch/arm64/quick_entrypoints_arm64.S
@@ -1510,7 +1510,7 @@
     // x1: pointer to the bottom of the used area of the alloca, can restore stack till there.
 
     // Check for error = 0.
-    cbz x0, .Lentry_error
+    cbz x0, .Lexception_in_native
 
     // Release part of the alloca.
     mov sp, x1
@@ -1545,15 +1545,15 @@
 
     bl artQuickGenericJniEndTrampoline
 
+    // Pending exceptions possible.
+    // Use xETR as xSELF might be scratched by native code
+    ldr x2, [xETR, THREAD_EXCEPTION_OFFSET]
+    cbnz x2, .Lexception_in_native
+
     // Tear down the alloca.
     mov sp, x28
     .cfi_def_cfa_register sp
 
-    // Pending exceptions possible.
-    // Use xETR as xSELF might be scratched by native code
-    ldr x1, [xETR, THREAD_EXCEPTION_OFFSET]
-    cbnz x1, .Lexception_in_native
-
     // Tear down the callee-save frame.
     RESTORE_REFS_AND_ARGS_CALLEE_SAVE_FRAME
 
@@ -1561,13 +1561,15 @@
     fmov d0, x0
     ret
 
-.Lentry_error:
-    mov sp, x28
-    .cfi_def_cfa_register sp
 .Lexception_in_native:
-    RESTORE_REFS_AND_ARGS_CALLEE_SAVE_FRAME
+    // Restore xSELF. It might have been scratched by native code.
+    mov xSELF, xETR
+    // Move to x1 then sp to please assembler.
+    ldr x1, [xSELF, # THREAD_TOP_QUICK_FRAME_OFFSET]
+    mov sp, x1
+    .cfi_def_cfa_register sp
+    # This will create a new save-all frame, required by the runtime.
     DELIVER_PENDING_EXCEPTION
-
 END art_quick_generic_jni_trampoline
 
 /*
diff --git a/runtime/arch/mips/quick_entrypoints_mips.S b/runtime/arch/mips/quick_entrypoints_mips.S
index df2feb7..16f0e70 100644
--- a/runtime/arch/mips/quick_entrypoints_mips.S
+++ b/runtime/arch/mips/quick_entrypoints_mips.S
@@ -1142,10 +1142,10 @@
     addiu   $sp, $sp, -24          # reserve arg slots
     jal     artQuickGenericJniEndTrampoline
     s.d     $f0, 16($sp)           # pass result_f
-    addiu   $sp, $sp, 24           # remove arg slots
 
     lw      $t0, THREAD_EXCEPTION_OFFSET(rSELF) # load Thread::Current()->exception_
-    bne     $t0, $zero, 2f         # check for pending exceptions
+    bne     $t0, $zero, 1f         # check for pending exceptions
+
     move    $sp, $s8               # tear down the alloca
 
     # tear dpown the callee-save frame
@@ -1156,9 +1156,8 @@
     nop
 
 1:
-    move    $sp, $s8               # tear down the alloca
-2:
-    RESTORE_REFS_AND_ARGS_CALLEE_SAVE_FRAME
+    lw $sp, THREAD_TOP_QUICK_FRAME_OFFSET(rSELF)
+    # This will create a new save-all frame, required by the runtime.
     DELIVER_PENDING_EXCEPTION
 END art_quick_generic_jni_trampoline
 
diff --git a/runtime/arch/mips64/quick_entrypoints_mips64.S b/runtime/arch/mips64/quick_entrypoints_mips64.S
index 60e692b..6f1b826 100644
--- a/runtime/arch/mips64/quick_entrypoints_mips64.S
+++ b/runtime/arch/mips64/quick_entrypoints_mips64.S
@@ -849,7 +849,7 @@
     dmfc1   $a2, $f0
 
     ld      $t0, THREAD_EXCEPTION_OFFSET(rSELF) # load Thread::Current()->exception_
-    bne     $t0, $zero, 2f         # check for pending exceptions
+    bne     $t0, $zero, 1f         # check for pending exceptions
     move    $sp, $s8               # tear down the alloca
 
     # tear dpown the callee-save frame
@@ -859,9 +859,8 @@
     dmtc1   $v0, $f0               # place return value to FP return value
 
 1:
-    move    $sp, $s8               # tear down the alloca
-2:
-    RESTORE_REFS_AND_ARGS_CALLEE_SAVE_FRAME
+    ld      $sp, THREAD_TOP_QUICK_FRAME_OFFSET(rSELF)
+    # This will create a new save-all frame, required by the runtime.
     DELIVER_PENDING_EXCEPTION
 END art_quick_generic_jni_trampoline
 
diff --git a/runtime/arch/x86/quick_entrypoints_x86.S b/runtime/arch/x86/quick_entrypoints_x86.S
index c2acdd1..47bc5ea 100644
--- a/runtime/arch/x86/quick_entrypoints_x86.S
+++ b/runtime/arch/x86/quick_entrypoints_x86.S
@@ -1349,7 +1349,7 @@
 
     // Check for error = 0.
     test %eax, %eax
-    jz .Lentry_error
+    jz .Lexception_in_native
 
     // Release part of the alloca.
     movl %edx, %esp
@@ -1371,15 +1371,16 @@
     pushl %fs:THREAD_SELF_OFFSET  // Pass Thread::Current().
     call SYMBOL(artQuickGenericJniEndTrampoline)
 
-    // Tear down the alloca.
-    movl %ebp, %esp
-    CFI_DEF_CFA_REGISTER(esp)
-
     // Pending exceptions possible.
     mov %fs:THREAD_EXCEPTION_OFFSET, %ebx
     testl %ebx, %ebx
     jnz .Lexception_in_native
 
+    // Tear down the alloca.
+    movl %ebp, %esp
+    CFI_DEF_CFA_REGISTER(esp)
+
+
     // Tear down the callee-save frame.
     // Remove space for FPR args and EAX
     addl LITERAL(4 + 4 * 8), %esp
@@ -1397,11 +1398,11 @@
     movd %edx, %xmm1
     punpckldq %xmm1, %xmm0
     ret
-.Lentry_error:
-    movl %ebp, %esp
-    CFI_DEF_CFA_REGISTER(esp)
 .Lexception_in_native:
-    RESTORE_REFS_AND_ARGS_CALLEE_SAVE_FRAME
+    movl %fs:THREAD_TOP_QUICK_FRAME_OFFSET, %esp
+    // Do a call to push a new save-all frame required by the runtime.
+    call .Lexception_call
+.Lexception_call:
     DELIVER_PENDING_EXCEPTION
 END_FUNCTION art_quick_generic_jni_trampoline
 
diff --git a/runtime/arch/x86_64/quick_entrypoints_x86_64.S b/runtime/arch/x86_64/quick_entrypoints_x86_64.S
index c865541..406126b 100644
--- a/runtime/arch/x86_64/quick_entrypoints_x86_64.S
+++ b/runtime/arch/x86_64/quick_entrypoints_x86_64.S
@@ -1361,7 +1361,7 @@
 
     // Check for error = 0.
     test %rax, %rax
-    jz .Lentry_error
+    jz .Lexception_in_native
 
     // Release part of the alloca.
     movq %rdx, %rsp
@@ -1398,16 +1398,16 @@
     movq %xmm0, %rdx
     call SYMBOL(artQuickGenericJniEndTrampoline)
 
-    // Tear down the alloca.
-    movq %rbp, %rsp
-    CFI_DEF_CFA_REGISTER(rsp)
-
     // Pending exceptions possible.
     // TODO: use cmpq, needs direct encoding because of gas bug
     movq %gs:THREAD_EXCEPTION_OFFSET, %rcx
     test %rcx, %rcx
     jnz .Lexception_in_native
 
+    // Tear down the alloca.
+    movq %rbp, %rsp
+    CFI_DEF_CFA_REGISTER(rsp)
+
     // Tear down the callee-save frame.
     // Load FPRs.
     // movq %xmm0, 16(%rsp)         // doesn't make sense!!!
@@ -1440,40 +1440,12 @@
     // store into fpr, for when it's a fpr return...
     movq %rax, %xmm0
     ret
-.Lentry_error:
-    movq %rbp, %rsp
-    CFI_DEF_CFA_REGISTER(rsp)
 .Lexception_in_native:
-    // TODO: the handle scope contains the this pointer which is used by the debugger for exception
-    //       delivery.
-    movq %xmm0, 16(%rsp)         // doesn't make sense!!!
-    movq 24(%rsp), %xmm1            // neither does this!!!
-    movq 32(%rsp), %xmm2
-    movq 40(%rsp), %xmm3
-    movq 48(%rsp), %xmm4
-    movq 56(%rsp), %xmm5
-    movq 64(%rsp), %xmm6
-    movq 72(%rsp), %xmm7
-    movq 80(%rsp), %xmm12
-    movq 88(%rsp), %xmm13
-    movq 96(%rsp), %xmm14
-    movq 104(%rsp), %xmm15
-    // was 80 + 32 bytes
-    addq LITERAL(80 + 4*8), %rsp
-    CFI_ADJUST_CFA_OFFSET(-80 - 4*8)
-    // Save callee and GPR args, mixed together to agree with core spills bitmap.
-    POP rcx  // Arg.
-    POP rdx  // Arg.
-    POP rbx  // Callee save.
-    POP rbp  // Callee save.
-    POP rsi  // Arg.
-    POP r8   // Arg.
-    POP r9   // Arg.
-    POP r12  // Callee save.
-    POP r13  // Callee save.
-    POP r14  // Callee save.
-    POP r15  // Callee save.
-
+    movq %gs:THREAD_TOP_QUICK_FRAME_OFFSET, %rsp
+    CFI_DEF_CFA_REGISTER(rsp)
+    // Do a call to push a new save-all frame required by the runtime.
+    call .Lexception_call
+.Lexception_call:
     DELIVER_PENDING_EXCEPTION
 END_FUNCTION art_quick_generic_jni_trampoline
 
