summaryrefslogtreecommitdiff
path: root/compiler/utils/jni_macro_assembler.h
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/utils/jni_macro_assembler.h')
-rw-r--r--compiler/utils/jni_macro_assembler.h42
1 files changed, 20 insertions, 22 deletions
diff --git a/compiler/utils/jni_macro_assembler.h b/compiler/utils/jni_macro_assembler.h
index bbe0f734ba..48b3f015af 100644
--- a/compiler/utils/jni_macro_assembler.h
+++ b/compiler/utils/jni_macro_assembler.h
@@ -63,8 +63,7 @@ class JNIMacroAssembler : public DeletableArenaObject<kArenaAllocAssembler> {
// Emit code that will create an activation on the stack
virtual void BuildFrame(size_t frame_size,
ManagedRegister method_reg,
- ArrayRef<const ManagedRegister> callee_save_regs,
- const ManagedRegisterEntrySpills& entry_spills) = 0;
+ ArrayRef<const ManagedRegister> callee_save_regs) = 0;
// Emit code that will remove an activation from the stack
//
@@ -83,18 +82,16 @@ class JNIMacroAssembler : public DeletableArenaObject<kArenaAllocAssembler> {
virtual void StoreRef(FrameOffset dest, ManagedRegister src) = 0;
virtual void StoreRawPtr(FrameOffset dest, ManagedRegister src) = 0;
- virtual void StoreImmediateToFrame(FrameOffset dest, uint32_t imm, ManagedRegister scratch) = 0;
+ virtual void StoreImmediateToFrame(FrameOffset dest, uint32_t imm) = 0;
virtual void StoreStackOffsetToThread(ThreadOffset<kPointerSize> thr_offs,
- FrameOffset fr_offs,
- ManagedRegister scratch) = 0;
+ FrameOffset fr_offs) = 0;
virtual void StoreStackPointerToThread(ThreadOffset<kPointerSize> thr_offs) = 0;
virtual void StoreSpanning(FrameOffset dest,
ManagedRegister src,
- FrameOffset in_off,
- ManagedRegister scratch) = 0;
+ FrameOffset in_off) = 0;
// Load routines
virtual void Load(ManagedRegister dest, FrameOffset src, size_t size) = 0;
@@ -117,17 +114,19 @@ class JNIMacroAssembler : public DeletableArenaObject<kArenaAllocAssembler> {
// Copying routines
virtual void Move(ManagedRegister dest, ManagedRegister src, size_t size) = 0;
- virtual void CopyRawPtrFromThread(FrameOffset fr_offs,
- ThreadOffset<kPointerSize> thr_offs,
- ManagedRegister scratch) = 0;
+ virtual void CopyRawPtrFromThread(FrameOffset fr_offs, ThreadOffset<kPointerSize> thr_offs) = 0;
virtual void CopyRawPtrToThread(ThreadOffset<kPointerSize> thr_offs,
FrameOffset fr_offs,
ManagedRegister scratch) = 0;
- virtual void CopyRef(FrameOffset dest, FrameOffset src, ManagedRegister scratch) = 0;
+ virtual void CopyRef(FrameOffset dest, FrameOffset src) = 0;
+ virtual void CopyRef(FrameOffset dest,
+ ManagedRegister base,
+ MemberOffset offs,
+ bool unpoison_reference) = 0;
- virtual void Copy(FrameOffset dest, FrameOffset src, ManagedRegister scratch, size_t size) = 0;
+ virtual void Copy(FrameOffset dest, FrameOffset src, size_t size) = 0;
virtual void Copy(FrameOffset dest,
ManagedRegister src_base,
@@ -170,8 +169,8 @@ class JNIMacroAssembler : public DeletableArenaObject<kArenaAllocAssembler> {
virtual void ZeroExtend(ManagedRegister mreg, size_t size) = 0;
// Exploit fast access in managed code to Thread::Current()
- virtual void GetCurrentThread(ManagedRegister tr) = 0;
- virtual void GetCurrentThread(FrameOffset dest_offset, ManagedRegister scratch) = 0;
+ virtual void GetCurrentThread(ManagedRegister dest) = 0;
+ virtual void GetCurrentThread(FrameOffset dest_offset) = 0;
// Set up out_reg to hold a Object** into the handle scope, or to be null if the
// value is null and null_allowed. in_reg holds a possibly stale reference
@@ -186,7 +185,6 @@ class JNIMacroAssembler : public DeletableArenaObject<kArenaAllocAssembler> {
// value is null and null_allowed.
virtual void CreateHandleScopeEntry(FrameOffset out_off,
FrameOffset handlescope_offset,
- ManagedRegister scratch,
bool null_allowed) = 0;
// src holds a handle scope entry (Object**) load this into dst
@@ -198,23 +196,23 @@ class JNIMacroAssembler : public DeletableArenaObject<kArenaAllocAssembler> {
virtual void VerifyObject(FrameOffset src, bool could_be_null) = 0;
// Jump to address held at [base+offset] (used for tail calls).
- virtual void Jump(ManagedRegister base, Offset offset, ManagedRegister scratch) = 0;
+ virtual void Jump(ManagedRegister base, Offset offset) = 0;
// Call to address held at [base+offset]
- virtual void Call(ManagedRegister base, Offset offset, ManagedRegister scratch) = 0;
- virtual void Call(FrameOffset base, Offset offset, ManagedRegister scratch) = 0;
- virtual void CallFromThread(ThreadOffset<kPointerSize> offset, ManagedRegister scratch) = 0;
+ virtual void Call(ManagedRegister base, Offset offset) = 0;
+ virtual void Call(FrameOffset base, Offset offset) = 0;
+ virtual void CallFromThread(ThreadOffset<kPointerSize> offset) = 0;
// Generate code to check if Thread::Current()->exception_ is non-null
// and branch to a ExceptionSlowPath if it is.
- virtual void ExceptionPoll(ManagedRegister scratch, size_t stack_adjust) = 0;
+ virtual void ExceptionPoll(size_t stack_adjust) = 0;
// Create a new label that can be used with Jump/Bind calls.
virtual std::unique_ptr<JNIMacroLabel> CreateLabel() = 0;
// Emit an unconditional jump to the label.
virtual void Jump(JNIMacroLabel* label) = 0;
- // Emit a conditional jump to the label by applying a unary condition test to the register.
- virtual void Jump(JNIMacroLabel* label, JNIMacroUnaryCondition cond, ManagedRegister test) = 0;
+ // Emit a conditional jump to the label by applying a unary condition test to the GC marking flag.
+ virtual void TestGcMarking(JNIMacroLabel* label, JNIMacroUnaryCondition cond) = 0;
// Code at this offset will serve as the target for the Jump call.
virtual void Bind(JNIMacroLabel* label) = 0;