diff options
Diffstat (limited to 'runtime/method_handles.h')
| -rw-r--r-- | runtime/method_handles.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/runtime/method_handles.h b/runtime/method_handles.h index 7e60a5c170d..fce3d066393 100644 --- a/runtime/method_handles.h +++ b/runtime/method_handles.h @@ -174,19 +174,26 @@ class ShadowFrameSetter { : shadow_frame_(shadow_frame), arg_index_(first_dst_reg) {} ALWAYS_INLINE void Set(uint32_t value) REQUIRES_SHARED(Locks::mutator_lock_) { + DCHECK_LT(arg_index_, shadow_frame_->NumberOfVRegs()); shadow_frame_->SetVReg(arg_index_++, value); } ALWAYS_INLINE void SetReference(ObjPtr<mirror::Object> value) REQUIRES_SHARED(Locks::mutator_lock_) { + DCHECK_LT(arg_index_, shadow_frame_->NumberOfVRegs()); shadow_frame_->SetVRegReference(arg_index_++, value.Ptr()); } ALWAYS_INLINE void SetLong(int64_t value) REQUIRES_SHARED(Locks::mutator_lock_) { + DCHECK_LT(arg_index_, shadow_frame_->NumberOfVRegs()); shadow_frame_->SetVRegLong(arg_index_, value); arg_index_ += 2; } + ALWAYS_INLINE bool Done() const { + return arg_index_ == shadow_frame_->NumberOfVRegs(); + } + private: ShadowFrame* shadow_frame_; size_t arg_index_; |
