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
|