924 // TODO: verify method and klass metadata (compare against vptr?)
925 void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}
926 void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line){}
927
928 #define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)
929 #define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)
930
931 // only if +VerifyFPU
932 void verify_FPU(int stack_depth, const char* s = "illegal FPU state");
933
934 // prints msg, dumps registers and stops execution
935 void stop(const char* msg);
936
937 // prints msg and continues
938 void warn(const char* msg);
939
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,
|
924 // TODO: verify method and klass metadata (compare against vptr?)
925 void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}
926 void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line){}
927
928 #define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)
929 #define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)
930
931 // only if +VerifyFPU
932 void verify_FPU(int stack_depth, const char* s = "illegal FPU state");
933
934 // prints msg, dumps registers and stops execution
935 void stop(const char* msg);
936
937 // prints msg and continues
938 void warn(const char* msg);
939
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 = "");
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,
|