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