568 // Simplified, combined version, good for typical uses.
569 // Falls through on failure.
570 void check_klass_subtype(Register sub_klass,
571 Register super_klass,
572 Register temp_reg,
573 Label& L_success);
574
575 // method handles (JSR 292)
576 Address argument_address(RegisterOrConstant arg_slot, int extra_slot_offset = 0);
577
578 //----
579 void set_word_if_not_zero(Register reg); // sets reg to 1 if not zero, otherwise 0
580
581 // Debugging
582
583 // only if +VerifyOops
584 // TODO: Make these macros with file and line like sparc version!
585 void verify_oop(Register reg, const char* s = "broken oop");
586 void verify_oop_addr(Address addr, const char * s = "broken oop addr");
587
588 // TODO: verify method and klass metadata (compare against vptr?)
589 void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}
590 void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line){}
591
592 #define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)
593 #define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)
594
595 // only if +VerifyFPU
596 void verify_FPU(int stack_depth, const char* s = "illegal FPU state");
597
598 // Verify or restore cpu control state after JNI call
599 void restore_cpu_control_state_after_jni();
600
601 // prints msg, dumps registers and stops execution
602 void stop(const char* msg);
603
604 // prints msg and continues
605 void warn(const char* msg);
606
607 // dumps registers and other state
|
568 // Simplified, combined version, good for typical uses.
569 // Falls through on failure.
570 void check_klass_subtype(Register sub_klass,
571 Register super_klass,
572 Register temp_reg,
573 Label& L_success);
574
575 // method handles (JSR 292)
576 Address argument_address(RegisterOrConstant arg_slot, int extra_slot_offset = 0);
577
578 //----
579 void set_word_if_not_zero(Register reg); // sets reg to 1 if not zero, otherwise 0
580
581 // Debugging
582
583 // only if +VerifyOops
584 // TODO: Make these macros with file and line like sparc version!
585 void verify_oop(Register reg, const char* s = "broken oop");
586 void verify_oop_addr(Address addr, const char * s = "broken oop addr");
587
588 void in_heap_check(Register raddr, Label& done);
589 void shenandoah_cset_check(Register raddr, Register tmp1, Register tmp2, Label& done);
590
591 void _shenandoah_store_addr_check(Register dst, const char* msg, const char* file, int line);
592 void _shenandoah_store_addr_check(Address dst, const char* msg, const char* file, int line);
593 #define shenandoah_store_addr_check(reg) _shenandoah_store_addr_check(reg, "oop not safe for writing", __FILE__, __LINE__)
594
595 void _shenandoah_store_check(Address addr, Register value, const char* msg, const char* file, int line);
596 void _shenandoah_store_check(Register addr, Register value, const char* msg, const char* file, int line);
597 #define shenandoah_store_check(addr, value) _shenandoah_store_check(addr, value, "oop not safe for writing", __FILE__, __LINE__)
598
599 void _shenandoah_lock_check(Register dst, const char* msg, const char* file, int line);
600 #define shenandoah_lock_check(reg) _shenandoah_lock_check(reg, "lock/oop not safe for writing", __FILE__, __LINE__)
601
602 // TODO: verify method and klass metadata (compare against vptr?)
603 void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}
604 void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line){}
605
606 #define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)
607 #define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)
608
609 // only if +VerifyFPU
610 void verify_FPU(int stack_depth, const char* s = "illegal FPU state");
611
612 // Verify or restore cpu control state after JNI call
613 void restore_cpu_control_state_after_jni();
614
615 // prints msg, dumps registers and stops execution
616 void stop(const char* msg);
617
618 // prints msg and continues
619 void warn(const char* msg);
620
621 // dumps registers and other state
|