src/cpu/x86/vm/assembler_x86_32.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6705887 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/assembler_x86_32.hpp

Print this page




1037   virtual void check_and_handle_earlyret(Register java_thread);
1038 
1039   void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions = true);
1040 
1041   // helpers for FPU flag access
1042   // tmp is a temporary register, if none is available use noreg
1043   void save_rax   (Register tmp);
1044   void restore_rax(Register tmp);
1045 
1046  public:
1047   MacroAssembler(CodeBuffer* code) : Assembler(code) {}
1048 
1049   // Support for NULL-checks
1050   //
1051   // Generates code that causes a NULL OS exception if the content of reg is NULL.
1052   // If the accessed location is M[reg + offset] and the offset is known, provide the
1053   // offset. No explicit code generation is needed if the offset is within a certain
1054   // range (0 <= offset <= page_size).
1055 
1056   void null_check(Register reg, int offset = -1);
1057   static bool needs_explicit_null_check(int offset);
1058 
1059   // Required platform-specific helpers for Label::patch_instructions.
1060   // They _shadow_ the declarations in AbstractAssembler, which are undefined.
1061   void pd_patch_instruction(address branch, address target);
1062 #ifndef PRODUCT
1063   static void pd_print_patched_instruction(address branch);
1064 #endif
1065 
1066   // The following 4 methods return the offset of the appropriate move instruction
1067 
1068   // Support for fast byte/word loading with zero extension (depending on particular CPU)
1069   int load_unsigned_byte(Register dst, Address src);
1070   int load_unsigned_word(Register dst, Address src);
1071 
1072   // Support for fast byte/word loading with sign extension (depending on particular CPU)
1073   int load_signed_byte(Register dst, Address src);
1074   int load_signed_word(Register dst, Address src);
1075 
1076   // Support for sign-extension (hi:lo = extend_sign(lo))
1077   void extend_sign(Register hi, Register lo);




1037   virtual void check_and_handle_earlyret(Register java_thread);
1038 
1039   void call_VM_helper(Register oop_result, address entry_point, int number_of_arguments, bool check_exceptions = true);
1040 
1041   // helpers for FPU flag access
1042   // tmp is a temporary register, if none is available use noreg
1043   void save_rax   (Register tmp);
1044   void restore_rax(Register tmp);
1045 
1046  public:
1047   MacroAssembler(CodeBuffer* code) : Assembler(code) {}
1048 
1049   // Support for NULL-checks
1050   //
1051   // Generates code that causes a NULL OS exception if the content of reg is NULL.
1052   // If the accessed location is M[reg + offset] and the offset is known, provide the
1053   // offset. No explicit code generation is needed if the offset is within a certain
1054   // range (0 <= offset <= page_size).
1055 
1056   void null_check(Register reg, int offset = -1);
1057   static bool needs_explicit_null_check(intptr_t offset);
1058 
1059   // Required platform-specific helpers for Label::patch_instructions.
1060   // They _shadow_ the declarations in AbstractAssembler, which are undefined.
1061   void pd_patch_instruction(address branch, address target);
1062 #ifndef PRODUCT
1063   static void pd_print_patched_instruction(address branch);
1064 #endif
1065 
1066   // The following 4 methods return the offset of the appropriate move instruction
1067 
1068   // Support for fast byte/word loading with zero extension (depending on particular CPU)
1069   int load_unsigned_byte(Register dst, Address src);
1070   int load_unsigned_word(Register dst, Address src);
1071 
1072   // Support for fast byte/word loading with sign extension (depending on particular CPU)
1073   int load_signed_byte(Register dst, Address src);
1074   int load_signed_word(Register dst, Address src);
1075 
1076   // Support for sign-extension (hi:lo = extend_sign(lo))
1077   void extend_sign(Register hi, Register lo);


src/cpu/x86/vm/assembler_x86_32.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File