diff options
| author | 2011-07-21 22:00:15 -0700 | |
|---|---|---|
| committer | 2011-07-22 15:16:43 -0700 | |
| commit | 45a76cb99104a222d6a9bd768a084893dcb7cf30 (patch) | |
| tree | 995557ba95942309ffe9c4a13819a10da8c4b4bb /src/assembler_arm.h | |
| parent | 69759eaa6fd4386f1e6d8748052ad221087b3476 (diff) | |
Exception and suspend count polling on JNI bridge return.
Change-Id: I0e5597fcbdcdb88100b18d63323e7ba8d27f13fe
Diffstat (limited to 'src/assembler_arm.h')
| -rw-r--r-- | src/assembler_arm.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/assembler_arm.h b/src/assembler_arm.h index 3981f4a76c..acaf870a58 100644 --- a/src/assembler_arm.h +++ b/src/assembler_arm.h @@ -446,6 +446,7 @@ class Assembler { void StoreStackOffsetToThread(ThreadOffset thr_offs, FrameOffset fr_offs, ManagedRegister scratch); + void StoreStackPointerToThread(ThreadOffset thr_offs); void Move(ManagedRegister dest, ManagedRegister src); void Copy(FrameOffset dest, FrameOffset src, ManagedRegister scratch, @@ -464,12 +465,24 @@ class Assembler { void Call(ManagedRegister base, Offset offset, ManagedRegister scratch); + // Generate code to check if Thread::Current()->suspend_count_ is non-zero + // and branch to a SuspendSlowPath if it is. The SuspendSlowPath will continue + // at the next instruction. + void SuspendPoll(ManagedRegister scratch, ManagedRegister return_reg, + FrameOffset return_save_location, size_t return_size); + + // Generate code to check if Thread::Current()->exception_ is non-null + // and branch to a ExceptionSlowPath if it is. + void ExceptionPoll(ManagedRegister scratch); + // Emit data (e.g. encoded instruction or immediate) to the // instruction stream. void Emit(int32_t value); void Bind(Label* label); + void EmitSlowPaths() { buffer_.EmitSlowPaths(this); } + size_t CodeSize() const { return buffer_.Size(); } void FinalizeInstructions(const MemoryRegion& region) { |