< prev index next >

src/cpu/ppc/vm/macroAssembler_ppc.hpp

Print this page




 708   inline void store_heap_oop_not_null(Register d, RegisterOrConstant offs, Register s1,
 709                                       Register tmp = noreg);
 710 
 711   // Null allowed.
 712   inline void load_heap_oop(Register d, RegisterOrConstant offs, Register s1 = noreg, Label *is_null = NULL);
 713 
 714   // Encode/decode heap oop. Oop may not be null, else en/decoding goes wrong.
 715   // src == d allowed.
 716   inline Register encode_heap_oop_not_null(Register d, Register src = noreg);
 717   inline Register decode_heap_oop_not_null(Register d, Register src = noreg);
 718 
 719   // Null allowed.
 720   inline Register encode_heap_oop(Register d, Register src); // Prefer null check in GC barrier!
 721   inline void decode_heap_oop(Register d);
 722 
 723   // Load/Store klass oop from klass field. Compress.
 724   void load_klass(Register dst, Register src);
 725   void store_klass(Register dst_oop, Register klass, Register tmp = R0);
 726   void store_klass_gap(Register dst_oop, Register val = noreg); // Will store 0 if val not specified.
 727 

 728   void load_mirror_from_const_method(Register mirror, Register const_method);
 729 
 730   static int instr_size_for_decode_klass_not_null();
 731   void decode_klass_not_null(Register dst, Register src = noreg);
 732   Register encode_klass_not_null(Register dst, Register src = noreg);
 733 
 734   // SIGTRAP-based range checks for arrays.
 735   inline void trap_range_check_l(Register a, Register b);
 736   inline void trap_range_check_l(Register a, int si16);
 737   static bool is_trap_range_check_l(int x) {
 738     return (is_tw (x, traptoLessThanUnsigned, -1/*any reg*/, -1/*any reg*/) ||
 739             is_twi(x, traptoLessThanUnsigned, -1/*any reg*/)                  );
 740   }
 741   inline void trap_range_check_le(Register a, int si16);
 742   static bool is_trap_range_check_le(int x) {
 743     return is_twi(x, traptoEqual | traptoLessThanUnsigned, -1/*any reg*/);
 744   }
 745   inline void trap_range_check_g(Register a, int si16);
 746   static bool is_trap_range_check_g(int x) {
 747     return is_twi(x, traptoGreaterThanUnsigned, -1/*any reg*/);




 708   inline void store_heap_oop_not_null(Register d, RegisterOrConstant offs, Register s1,
 709                                       Register tmp = noreg);
 710 
 711   // Null allowed.
 712   inline void load_heap_oop(Register d, RegisterOrConstant offs, Register s1 = noreg, Label *is_null = NULL);
 713 
 714   // Encode/decode heap oop. Oop may not be null, else en/decoding goes wrong.
 715   // src == d allowed.
 716   inline Register encode_heap_oop_not_null(Register d, Register src = noreg);
 717   inline Register decode_heap_oop_not_null(Register d, Register src = noreg);
 718 
 719   // Null allowed.
 720   inline Register encode_heap_oop(Register d, Register src); // Prefer null check in GC barrier!
 721   inline void decode_heap_oop(Register d);
 722 
 723   // Load/Store klass oop from klass field. Compress.
 724   void load_klass(Register dst, Register src);
 725   void store_klass(Register dst_oop, Register klass, Register tmp = R0);
 726   void store_klass_gap(Register dst_oop, Register val = noreg); // Will store 0 if val not specified.
 727 
 728   void resolve_oop_handle(Register result);
 729   void load_mirror_from_const_method(Register mirror, Register const_method);
 730 
 731   static int instr_size_for_decode_klass_not_null();
 732   void decode_klass_not_null(Register dst, Register src = noreg);
 733   Register encode_klass_not_null(Register dst, Register src = noreg);
 734 
 735   // SIGTRAP-based range checks for arrays.
 736   inline void trap_range_check_l(Register a, Register b);
 737   inline void trap_range_check_l(Register a, int si16);
 738   static bool is_trap_range_check_l(int x) {
 739     return (is_tw (x, traptoLessThanUnsigned, -1/*any reg*/, -1/*any reg*/) ||
 740             is_twi(x, traptoLessThanUnsigned, -1/*any reg*/)                  );
 741   }
 742   inline void trap_range_check_le(Register a, int si16);
 743   static bool is_trap_range_check_le(int x) {
 744     return is_twi(x, traptoEqual | traptoLessThanUnsigned, -1/*any reg*/);
 745   }
 746   inline void trap_range_check_g(Register a, int si16);
 747   static bool is_trap_range_check_g(int x) {
 748     return is_twi(x, traptoGreaterThanUnsigned, -1/*any reg*/);


< prev index next >