1037 #endif
1038 b(L, mi);
1039 }
1040
1041 void add_ptr_scaled_int32(Register dst, Register r1, Register r2, int shift) {
1042 #ifdef AARCH64
1043 add(dst, r1, r2, ex_sxtw, shift);
1044 #else
1045 add(dst, r1, AsmOperand(r2, lsl, shift));
1046 #endif
1047 }
1048
1049 void sub_ptr_scaled_int32(Register dst, Register r1, Register r2, int shift) {
1050 #ifdef AARCH64
1051 sub(dst, r1, r2, ex_sxtw, shift);
1052 #else
1053 sub(dst, r1, AsmOperand(r2, lsl, shift));
1054 #endif
1055 }
1056
1057
1058 // klass oop manipulations if compressed
1059
1060 #ifdef AARCH64
1061 void load_klass(Register dst_klass, Register src_oop);
1062 #else
1063 void load_klass(Register dst_klass, Register src_oop, AsmCondition cond = al);
1064 #endif // AARCH64
1065
1066 void store_klass(Register src_klass, Register dst_oop);
1067
1068 #ifdef AARCH64
1069 void store_klass_gap(Register dst);
1070 #endif // AARCH64
1071
1072 // oop manipulations
1073
1074 void load_heap_oop(Register dst, Address src, Register tmp1 = noreg, Register tmp2 = noreg, Register tmp3 = noreg, DecoratorSet decorators = 0);
1075 void store_heap_oop(Address obj, Register new_val, Register tmp1 = noreg, Register tmp2 = noreg, Register tmp3 = noreg, DecoratorSet decorators = 0);
1076 void store_heap_oop_null(Address obj, Register new_val, Register tmp1 = noreg, Register tmp2 = noreg, Register tmp3 = noreg, DecoratorSet decorators = 0);
|
1037 #endif
1038 b(L, mi);
1039 }
1040
1041 void add_ptr_scaled_int32(Register dst, Register r1, Register r2, int shift) {
1042 #ifdef AARCH64
1043 add(dst, r1, r2, ex_sxtw, shift);
1044 #else
1045 add(dst, r1, AsmOperand(r2, lsl, shift));
1046 #endif
1047 }
1048
1049 void sub_ptr_scaled_int32(Register dst, Register r1, Register r2, int shift) {
1050 #ifdef AARCH64
1051 sub(dst, r1, r2, ex_sxtw, shift);
1052 #else
1053 sub(dst, r1, AsmOperand(r2, lsl, shift));
1054 #endif
1055 }
1056
1057 // C 'boolean' to Java boolean: x == 0 ? 0 : 1
1058 void c2bool(Register x);
1059
1060 // klass oop manipulations if compressed
1061
1062 #ifdef AARCH64
1063 void load_klass(Register dst_klass, Register src_oop);
1064 #else
1065 void load_klass(Register dst_klass, Register src_oop, AsmCondition cond = al);
1066 #endif // AARCH64
1067
1068 void store_klass(Register src_klass, Register dst_oop);
1069
1070 #ifdef AARCH64
1071 void store_klass_gap(Register dst);
1072 #endif // AARCH64
1073
1074 // oop manipulations
1075
1076 void load_heap_oop(Register dst, Address src, Register tmp1 = noreg, Register tmp2 = noreg, Register tmp3 = noreg, DecoratorSet decorators = 0);
1077 void store_heap_oop(Address obj, Register new_val, Register tmp1 = noreg, Register tmp2 = noreg, Register tmp3 = noreg, DecoratorSet decorators = 0);
1078 void store_heap_oop_null(Address obj, Register new_val, Register tmp1 = noreg, Register tmp2 = noreg, Register tmp3 = noreg, DecoratorSet decorators = 0);
|