< prev index next >

src/hotspot/cpu/arm/macroAssembler_arm.hpp

Print this page
rev 54026 : 8213845: ARM32: Interpreter doesn't call result handler after native calls
Summary: Fix mapping of native jboolean result to 0..1 on ARM32
Reviewed-by: aph
Contributed-by: christoph.goettschkes@microdoc.com


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);


< prev index next >