src/cpu/x86/vm/assembler_x86_64.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_64.hpp

Print this page




1011   // as only the interpreter handles PopFrame and ForceEarlyReturn requests.
1012   virtual void check_and_handle_popframe(Register java_thread);
1013   virtual void check_and_handle_earlyret(Register java_thread);
1014 
1015   void call_VM_helper(Register oop_result,
1016                       address entry_point,
1017                       int number_of_arguments,
1018                       bool check_exceptions = true);
1019 
1020  public:
1021   MacroAssembler(CodeBuffer* code) : Assembler(code) {}
1022 
1023   // Support for NULL-checks
1024   //
1025   // Generates code that causes a NULL OS exception if the content of
1026   // reg is NULL.  If the accessed location is M[reg + offset] and the
1027   // offset is known, provide the offset. No explicit code generation
1028   // is needed if the offset is within a certain range (0 <= offset <=
1029   // page_size).
1030   void null_check(Register reg, int offset = -1);
1031   static bool needs_explicit_null_check(int offset);
1032 
1033   // Required platform-specific helpers for Label::patch_instructions.
1034   // They _shadow_ the declarations in AbstractAssembler, which are undefined.
1035   void pd_patch_instruction(address branch, address target);
1036 #ifndef PRODUCT
1037   static void pd_print_patched_instruction(address branch);
1038 #endif
1039 
1040 
1041   // The following 4 methods return the offset of the appropriate move
1042   // instruction.  Note: these are 32 bit instructions
1043 
1044   // Support for fast byte/word loading with zero extension (depending
1045   // on particular CPU)
1046   int load_unsigned_byte(Register dst, Address src);
1047   int load_unsigned_word(Register dst, Address src);
1048 
1049   // Support for fast byte/word loading with sign extension (depending
1050   // on particular CPU)
1051   int load_signed_byte(Register dst, Address src);




1011   // as only the interpreter handles PopFrame and ForceEarlyReturn requests.
1012   virtual void check_and_handle_popframe(Register java_thread);
1013   virtual void check_and_handle_earlyret(Register java_thread);
1014 
1015   void call_VM_helper(Register oop_result,
1016                       address entry_point,
1017                       int number_of_arguments,
1018                       bool check_exceptions = true);
1019 
1020  public:
1021   MacroAssembler(CodeBuffer* code) : Assembler(code) {}
1022 
1023   // Support for NULL-checks
1024   //
1025   // Generates code that causes a NULL OS exception if the content of
1026   // reg is NULL.  If the accessed location is M[reg + offset] and the
1027   // offset is known, provide the offset. No explicit code generation
1028   // is needed if the offset is within a certain range (0 <= offset <=
1029   // page_size).
1030   void null_check(Register reg, int offset = -1);
1031   static bool needs_explicit_null_check(intptr_t offset);
1032 
1033   // Required platform-specific helpers for Label::patch_instructions.
1034   // They _shadow_ the declarations in AbstractAssembler, which are undefined.
1035   void pd_patch_instruction(address branch, address target);
1036 #ifndef PRODUCT
1037   static void pd_print_patched_instruction(address branch);
1038 #endif
1039 
1040 
1041   // The following 4 methods return the offset of the appropriate move
1042   // instruction.  Note: these are 32 bit instructions
1043 
1044   // Support for fast byte/word loading with zero extension (depending
1045   // on particular CPU)
1046   int load_unsigned_byte(Register dst, Address src);
1047   int load_unsigned_word(Register dst, Address src);
1048 
1049   // Support for fast byte/word loading with sign extension (depending
1050   // on particular CPU)
1051   int load_signed_byte(Register dst, Address src);


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