762 void set_thread_state(JavaThreadState new_state);
763
764 // Read vm result from thread.
765 void get_vm_result (Register oop_result);
766 void get_vm_result_2(Register result);
767
768 // Vm result is currently getting hijacked to for oop preservation.
769 void set_vm_result(Register oop_result);
770
771 // Support for NULL-checks
772 //
773 // Generates code that causes a NULL OS exception if the content of reg is NULL.
774 // If the accessed location is M[reg + offset] and the offset is known, provide the
775 // offset. No explicit code generation is needed if the offset is within a certain
776 // range (0 <= offset <= page_size).
777 //
778 // %%%%%% Currently not done for z/Architecture
779
780 void null_check(Register reg, Register tmp = Z_R0, int64_t offset = -1);
781 static bool needs_explicit_null_check(intptr_t offset); // Implemented in shared file ?!
782
783 // Klass oop manipulations if compressed.
784 void encode_klass_not_null(Register dst, Register src = noreg);
785 void decode_klass_not_null(Register dst, Register src);
786 void decode_klass_not_null(Register dst);
787 void load_klass(Register klass, Address mem);
788 void load_klass(Register klass, Register src_oop);
789 void load_prototype_header(Register Rheader, Register Rsrc_oop);
790 void store_klass(Register klass, Register dst_oop, Register ck = noreg); // Klass will get compressed if ck not provided.
791 void store_klass_gap(Register s, Register dst_oop);
792
793 // This function calculates the size of the code generated by
794 // decode_klass_not_null(register dst)
795 // when (Universe::heap() != NULL). Hence, if the instructions
796 // it generates change, then this method needs to be updated.
797 static int instr_size_for_decode_klass_not_null();
798
799 void encode_heap_oop(Register oop);
800 void encode_heap_oop_not_null(Register oop);
801
|
762 void set_thread_state(JavaThreadState new_state);
763
764 // Read vm result from thread.
765 void get_vm_result (Register oop_result);
766 void get_vm_result_2(Register result);
767
768 // Vm result is currently getting hijacked to for oop preservation.
769 void set_vm_result(Register oop_result);
770
771 // Support for NULL-checks
772 //
773 // Generates code that causes a NULL OS exception if the content of reg is NULL.
774 // If the accessed location is M[reg + offset] and the offset is known, provide the
775 // offset. No explicit code generation is needed if the offset is within a certain
776 // range (0 <= offset <= page_size).
777 //
778 // %%%%%% Currently not done for z/Architecture
779
780 void null_check(Register reg, Register tmp = Z_R0, int64_t offset = -1);
781 static bool needs_explicit_null_check(intptr_t offset); // Implemented in shared file ?!
782 static bool uses_implicit_null_check(void* address);
783
784 // Klass oop manipulations if compressed.
785 void encode_klass_not_null(Register dst, Register src = noreg);
786 void decode_klass_not_null(Register dst, Register src);
787 void decode_klass_not_null(Register dst);
788 void load_klass(Register klass, Address mem);
789 void load_klass(Register klass, Register src_oop);
790 void load_prototype_header(Register Rheader, Register Rsrc_oop);
791 void store_klass(Register klass, Register dst_oop, Register ck = noreg); // Klass will get compressed if ck not provided.
792 void store_klass_gap(Register s, Register dst_oop);
793
794 // This function calculates the size of the code generated by
795 // decode_klass_not_null(register dst)
796 // when (Universe::heap() != NULL). Hence, if the instructions
797 // it generates change, then this method needs to be updated.
798 static int instr_size_for_decode_klass_not_null();
799
800 void encode_heap_oop(Register oop);
801 void encode_heap_oop_not_null(Register oop);
802
|