< prev index next >

src/cpu/aarch64/vm/macroAssembler_aarch64.hpp

Print this page
rev 12502 : 8172144: AArch64: Implement "JEP 270: Reserved Stack Areas for Critical Sections"
Reviewed-by: duke


 940   static void debug64(char* msg, int64_t pc, int64_t regs[]);
 941 
 942   void untested()                                { stop("untested"); }
 943 
 944   void unimplemented(const char* what = "")      { char* b = new char[1024];  jio_snprintf(b, 1024, "unimplemented: %s", what);  stop(b); }
 945 
 946   void should_not_reach_here()                   { stop("should not reach here"); }
 947 
 948   // Stack overflow checking
 949   void bang_stack_with_offset(int offset) {
 950     // stack grows down, caller passes positive offset
 951     assert(offset > 0, "must bang with negative offset");
 952     mov(rscratch2, -offset);
 953     str(zr, Address(sp, rscratch2));
 954   }
 955 
 956   // Writes to stack successive pages until offset reached to check for
 957   // stack overflow + shadow pages.  Also, clobbers tmp
 958   void bang_stack_size(Register size, Register tmp);
 959 



 960   virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
 961                                                 Register tmp,
 962                                                 int offset);
 963 
 964   // Support for serializing memory accesses between threads
 965   void serialize_memory(Register thread, Register tmp);
 966 
 967   // Arithmetics
 968 
 969   void addptr(const Address &dst, int32_t src);
 970   void cmpptr(Register src1, Address src2);
 971 
 972   // Various forms of CAS
 973 
 974   void cmpxchgptr(Register oldv, Register newv, Register addr, Register tmp,
 975                   Label &suceed, Label *fail);
 976 
 977   void cmpxchgw(Register oldv, Register newv, Register addr, Register tmp,
 978                   Label &suceed, Label *fail);
 979 




 940   static void debug64(char* msg, int64_t pc, int64_t regs[]);
 941 
 942   void untested()                                { stop("untested"); }
 943 
 944   void unimplemented(const char* what = "")      { char* b = new char[1024];  jio_snprintf(b, 1024, "unimplemented: %s", what);  stop(b); }
 945 
 946   void should_not_reach_here()                   { stop("should not reach here"); }
 947 
 948   // Stack overflow checking
 949   void bang_stack_with_offset(int offset) {
 950     // stack grows down, caller passes positive offset
 951     assert(offset > 0, "must bang with negative offset");
 952     mov(rscratch2, -offset);
 953     str(zr, Address(sp, rscratch2));
 954   }
 955 
 956   // Writes to stack successive pages until offset reached to check for
 957   // stack overflow + shadow pages.  Also, clobbers tmp
 958   void bang_stack_size(Register size, Register tmp);
 959 
 960   // Check for reserved stack access in method being exited (for JIT)
 961   void reserved_stack_check();
 962 
 963   virtual RegisterOrConstant delayed_value_impl(intptr_t* delayed_value_addr,
 964                                                 Register tmp,
 965                                                 int offset);
 966 
 967   // Support for serializing memory accesses between threads
 968   void serialize_memory(Register thread, Register tmp);
 969 
 970   // Arithmetics
 971 
 972   void addptr(const Address &dst, int32_t src);
 973   void cmpptr(Register src1, Address src2);
 974 
 975   // Various forms of CAS
 976 
 977   void cmpxchgptr(Register oldv, Register newv, Register addr, Register tmp,
 978                   Label &suceed, Label *fail);
 979 
 980   void cmpxchgw(Register oldv, Register newv, Register addr, Register tmp,
 981                   Label &suceed, Label *fail);
 982 


< prev index next >