723 void patchable_set(intptr_t value, Register d);
724 void set64(jlong value, Register d, Register tmp);
725 static int insts_for_set64(jlong value);
726
727 // sign-extend 32 to 64
728 inline void signx( Register s, Register d );
729 inline void signx( Register d );
730
731 inline void not1( Register s, Register d );
732 inline void not1( Register d );
733
734 inline void neg( Register s, Register d );
735 inline void neg( Register d );
736
737 inline void cas( Register s1, Register s2, Register d);
738 inline void casx( Register s1, Register s2, Register d);
739 // Functions for isolating 64 bit atomic swaps for LP64
740 // cas_ptr will perform cas for 32 bit VM's and casx for 64 bit VM's
741 inline void cas_ptr( Register s1, Register s2, Register d);
742
743 // Functions for isolating 64 bit shifts for LP64
744 inline void sll_ptr( Register s1, Register s2, Register d );
745 inline void sll_ptr( Register s1, int imm6a, Register d );
746 inline void sll_ptr( Register s1, RegisterOrConstant s2, Register d );
747 inline void srl_ptr( Register s1, Register s2, Register d );
748 inline void srl_ptr( Register s1, int imm6a, Register d );
749
750 // little-endian
751 inline void casl( Register s1, Register s2, Register d);
752 inline void casxl( Register s1, Register s2, Register d);
753
754 inline void inc( Register d, int const13 = 1 );
755 inline void inccc( Register d, int const13 = 1 );
756
757 inline void dec( Register d, int const13 = 1 );
758 inline void deccc( Register d, int const13 = 1 );
759
760 using Assembler::add;
761 inline void add(Register s1, int simm13a, Register d, relocInfo::relocType rtype);
762 inline void add(Register s1, int simm13a, Register d, RelocationHolder const& rspec);
1059 void call_VM(Register oop_result, Register last_java_sp, address entry_point, Register arg_1, Register arg_2, bool check_exceptions = true);
1060 void call_VM(Register oop_result, Register last_java_sp, address entry_point, Register arg_1, Register arg_2, Register arg_3, bool check_exceptions = true);
1061
1062 void call_VM_leaf(Register thread_cache, address entry_point, int number_of_arguments = 0);
1063 void call_VM_leaf(Register thread_cache, address entry_point, Register arg_1);
1064 void call_VM_leaf(Register thread_cache, address entry_point, Register arg_1, Register arg_2);
1065 void call_VM_leaf(Register thread_cache, address entry_point, Register arg_1, Register arg_2, Register arg_3);
1066
1067 void get_vm_result (Register oop_result);
1068 void get_vm_result_2(Register metadata_result);
1069
1070 // vm result is currently getting hijacked to for oop preservation
1071 void set_vm_result(Register oop_result);
1072
1073 // Emit the CompiledIC call idiom
1074 void ic_call(address entry, bool emit_delay = true, jint method_index = 0);
1075
1076 // if call_VM_base was called with check_exceptions=false, then call
1077 // check_and_forward_exception to handle exceptions when it is safe
1078 void check_and_forward_exception(Register scratch_reg);
1079
1080 // Write to card table for - register is destroyed afterwards.
1081 void card_table_write(jbyte* byte_map_base, Register tmp, Register obj);
1082
1083 void card_write_barrier_post(Register store_addr, Register new_val, Register tmp);
1084
1085 #if INCLUDE_ALL_GCS
1086 // General G1 pre-barrier generator.
1087 void g1_write_barrier_pre(Register obj, Register index, int offset, Register pre_val, Register tmp, bool preserve_o_regs);
1088
1089 // General G1 post-barrier generator
1090 void g1_write_barrier_post(Register store_addr, Register new_val, Register tmp);
1091 #endif // INCLUDE_ALL_GCS
1092
1093 // pushes double TOS element of FPU stack on CPU stack; pops from FPU stack
1094 void push_fTOS();
1095
1096 // pops double TOS element from CPU stack and pushes on FPU stack
1097 void pop_fTOS();
1098
1099 void empty_FPU_stack();
1100
1101 void push_IU_state();
1102 void pop_IU_state();
1103
1104 void push_FPU_state();
1105 void pop_FPU_state();
1106
1107 void push_CPU_state();
1108 void pop_CPU_state();
1109
1110 // Returns the byte size of the instructions generated by decode_klass_not_null().
1111 static int instr_size_for_decode_klass_not_null();
|
723 void patchable_set(intptr_t value, Register d);
724 void set64(jlong value, Register d, Register tmp);
725 static int insts_for_set64(jlong value);
726
727 // sign-extend 32 to 64
728 inline void signx( Register s, Register d );
729 inline void signx( Register d );
730
731 inline void not1( Register s, Register d );
732 inline void not1( Register d );
733
734 inline void neg( Register s, Register d );
735 inline void neg( Register d );
736
737 inline void cas( Register s1, Register s2, Register d);
738 inline void casx( Register s1, Register s2, Register d);
739 // Functions for isolating 64 bit atomic swaps for LP64
740 // cas_ptr will perform cas for 32 bit VM's and casx for 64 bit VM's
741 inline void cas_ptr( Register s1, Register s2, Register d);
742
743 // Resolve a jobject or jweak
744 void resolve_jobject(Register value, Register tmp);
745
746 // Functions for isolating 64 bit shifts for LP64
747 inline void sll_ptr( Register s1, Register s2, Register d );
748 inline void sll_ptr( Register s1, int imm6a, Register d );
749 inline void sll_ptr( Register s1, RegisterOrConstant s2, Register d );
750 inline void srl_ptr( Register s1, Register s2, Register d );
751 inline void srl_ptr( Register s1, int imm6a, Register d );
752
753 // little-endian
754 inline void casl( Register s1, Register s2, Register d);
755 inline void casxl( Register s1, Register s2, Register d);
756
757 inline void inc( Register d, int const13 = 1 );
758 inline void inccc( Register d, int const13 = 1 );
759
760 inline void dec( Register d, int const13 = 1 );
761 inline void deccc( Register d, int const13 = 1 );
762
763 using Assembler::add;
764 inline void add(Register s1, int simm13a, Register d, relocInfo::relocType rtype);
765 inline void add(Register s1, int simm13a, Register d, RelocationHolder const& rspec);
1062 void call_VM(Register oop_result, Register last_java_sp, address entry_point, Register arg_1, Register arg_2, bool check_exceptions = true);
1063 void call_VM(Register oop_result, Register last_java_sp, address entry_point, Register arg_1, Register arg_2, Register arg_3, bool check_exceptions = true);
1064
1065 void call_VM_leaf(Register thread_cache, address entry_point, int number_of_arguments = 0);
1066 void call_VM_leaf(Register thread_cache, address entry_point, Register arg_1);
1067 void call_VM_leaf(Register thread_cache, address entry_point, Register arg_1, Register arg_2);
1068 void call_VM_leaf(Register thread_cache, address entry_point, Register arg_1, Register arg_2, Register arg_3);
1069
1070 void get_vm_result (Register oop_result);
1071 void get_vm_result_2(Register metadata_result);
1072
1073 // vm result is currently getting hijacked to for oop preservation
1074 void set_vm_result(Register oop_result);
1075
1076 // Emit the CompiledIC call idiom
1077 void ic_call(address entry, bool emit_delay = true, jint method_index = 0);
1078
1079 // if call_VM_base was called with check_exceptions=false, then call
1080 // check_and_forward_exception to handle exceptions when it is safe
1081 void check_and_forward_exception(Register scratch_reg);
1082
1083 // pushes double TOS element of FPU stack on CPU stack; pops from FPU stack
1084 void push_fTOS();
1085
1086 // pops double TOS element from CPU stack and pushes on FPU stack
1087 void pop_fTOS();
1088
1089 void empty_FPU_stack();
1090
1091 void push_IU_state();
1092 void pop_IU_state();
1093
1094 void push_FPU_state();
1095 void pop_FPU_state();
1096
1097 void push_CPU_state();
1098 void pop_CPU_state();
1099
1100 // Returns the byte size of the instructions generated by decode_klass_not_null().
1101 static int instr_size_for_decode_klass_not_null();
|