583 void check_klass_subtype(Register sub_klass,
584 Register super_klass,
585 Register temp_reg,
586 Label& L_success);
587
588 void clinit_barrier(Register klass,
589 Register thread,
590 Label* L_fast_path = NULL,
591 Label* L_slow_path = NULL);
592
593 // method handles (JSR 292)
594 Address argument_address(RegisterOrConstant arg_slot, int extra_slot_offset = 0);
595
596 //----
597 void set_word_if_not_zero(Register reg); // sets reg to 1 if not zero, otherwise 0
598
599 // Debugging
600
601 // only if +VerifyOops
602 // TODO: Make these macros with file and line like sparc version!
603 void verify_oop(Register reg, const char* s = "broken oop");
604 void verify_oop_addr(Address addr, const char * s = "broken oop addr");
605
606 // TODO: verify method and klass metadata (compare against vptr?)
607 void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}
608 void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line){}
609
610 #define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)
611 #define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)
612
613 // Verify or restore cpu control state after JNI call
614 void restore_cpu_control_state_after_jni();
615
616 // prints msg, dumps registers and stops execution
617 void stop(const char* msg);
618
619 // prints msg and continues
620 void warn(const char* msg);
621
622 // dumps registers and other state
623 void print_state();
624
625 static void debug32(int rdi, int rsi, int rbp, int rsp, int rbx, int rdx, int rcx, int rax, int eip, char* msg);
626 static void debug64(char* msg, int64_t pc, int64_t regs[]);
627 static void print_state32(int rdi, int rsi, int rbp, int rsp, int rbx, int rdx, int rcx, int rax, int eip);
628 static void print_state64(int64_t pc, int64_t regs[]);
629
|
583 void check_klass_subtype(Register sub_klass,
584 Register super_klass,
585 Register temp_reg,
586 Label& L_success);
587
588 void clinit_barrier(Register klass,
589 Register thread,
590 Label* L_fast_path = NULL,
591 Label* L_slow_path = NULL);
592
593 // method handles (JSR 292)
594 Address argument_address(RegisterOrConstant arg_slot, int extra_slot_offset = 0);
595
596 //----
597 void set_word_if_not_zero(Register reg); // sets reg to 1 if not zero, otherwise 0
598
599 // Debugging
600
601 // only if +VerifyOops
602 // TODO: Make these macros with file and line like sparc version!
603
604 void _verify_oop(Register reg, const char* s, const char * file, int line);
605 void _verify_oop_addr(Address addr, const char* s, const char * file, int line);
606
607 // TODO: verify method and klass metadata (compare against vptr?)
608 void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}
609 void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line){}
610
611 #define verify_oop(reg) _verify_oop(reg, "broken oop ", __FILE__, __LINE__)
612 #define verify_oop_addr(addr) _verify_oop_addr(addr, "broken oop addr ", __FILE__, __LINE__)
613 #define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)
614 #define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)
615
616 // Verify or restore cpu control state after JNI call
617 void restore_cpu_control_state_after_jni();
618
619 // prints msg, dumps registers and stops execution
620 void stop(const char* msg);
621
622 // prints msg and continues
623 void warn(const char* msg);
624
625 // dumps registers and other state
626 void print_state();
627
628 static void debug32(int rdi, int rsi, int rbp, int rsp, int rbx, int rdx, int rcx, int rax, int eip, char* msg);
629 static void debug64(char* msg, int64_t pc, int64_t regs[]);
630 static void print_state32(int rdi, int rsi, int rbp, int rsp, int rbx, int rdx, int rcx, int rax, int eip);
631 static void print_state64(int64_t pc, int64_t regs[]);
632
|