921
922 void set_narrow_oop(Register dst, jobject obj);
923
924 void encode_klass_not_null(Register r);
925 void decode_klass_not_null(Register r);
926 void encode_klass_not_null(Register dst, Register src);
927 void decode_klass_not_null(Register dst, Register src);
928
929 void set_narrow_klass(Register dst, Klass* k);
930
931 // if heap base register is used - reinit it with the correct value
932 void reinit_heapbase();
933
934 DEBUG_ONLY(void verify_heapbase(const char* msg);)
935
936 void push_CPU_state(bool save_vectors = false, bool use_sve = false,
937 int sve_vector_size_in_bytes = 0, int total_predicate_in_bytes = 0);
938 void pop_CPU_state(bool restore_vectors = false, bool use_sve = false,
939 int sve_vector_size_in_bytes = 0, int total_predicate_in_bytes = 0);
940
941 void push_cont_fastpath(Register java_thread);
942 void pop_cont_fastpath(Register java_thread);
943
944 // Round up to a power of two
945 void round_to(Register reg, int modulus);
946
947 // java.lang.Math::round intrinsics
948 void java_round_double(Register dst, FloatRegister src, FloatRegister ftmp);
949 void java_round_float(Register dst, FloatRegister src, FloatRegister ftmp);
950
951 // allocation
952 void tlab_allocate(
953 Register obj, // result: pointer to object after successful allocation
954 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
955 int con_size_in_bytes, // object size in bytes if known at compile time
956 Register t1, // temp register
957 Register t2, // temp register
958 Label& slow_case // continuation point if fast allocation fails
959 );
960 void verify_tlab();
961
962 // interface method calling
|
921
922 void set_narrow_oop(Register dst, jobject obj);
923
924 void encode_klass_not_null(Register r);
925 void decode_klass_not_null(Register r);
926 void encode_klass_not_null(Register dst, Register src);
927 void decode_klass_not_null(Register dst, Register src);
928
929 void set_narrow_klass(Register dst, Klass* k);
930
931 // if heap base register is used - reinit it with the correct value
932 void reinit_heapbase();
933
934 DEBUG_ONLY(void verify_heapbase(const char* msg);)
935
936 void push_CPU_state(bool save_vectors = false, bool use_sve = false,
937 int sve_vector_size_in_bytes = 0, int total_predicate_in_bytes = 0);
938 void pop_CPU_state(bool restore_vectors = false, bool use_sve = false,
939 int sve_vector_size_in_bytes = 0, int total_predicate_in_bytes = 0);
940
941 void push_cont_fastpath(Register java_thread = rthread);
942 void pop_cont_fastpath(Register java_thread = rthread);
943
944 void inc_held_monitor_count();
945 void dec_held_monitor_count();
946
947 // Round up to a power of two
948 void round_to(Register reg, int modulus);
949
950 // java.lang.Math::round intrinsics
951 void java_round_double(Register dst, FloatRegister src, FloatRegister ftmp);
952 void java_round_float(Register dst, FloatRegister src, FloatRegister ftmp);
953
954 // allocation
955 void tlab_allocate(
956 Register obj, // result: pointer to object after successful allocation
957 Register var_size_in_bytes, // object size in bytes if unknown at compile time; invalid otherwise
958 int con_size_in_bytes, // object size in bytes if known at compile time
959 Register t1, // temp register
960 Register t2, // temp register
961 Label& slow_case // continuation point if fast allocation fails
962 );
963 void verify_tlab();
964
965 // interface method calling
|