src/cpu/ppc/vm/nativeInst_ppc.hpp

Print this page
rev 5728 : 8029015: PPC64 (part 216): opto: trap based null and range checks


  59     assert(UseSIGTRAP && TrapBasedNullChecks, "precondition");
  60     return MacroAssembler::is_trap_null_check(long_at(0));
  61   }
  62 
  63   // We use a special trap for marking a method as not_entrant or zombie
  64   // iff UseSIGTRAP.
  65   bool is_sigtrap_zombie_not_entrant() {
  66     assert(UseSIGTRAP, "precondition");
  67     return MacroAssembler::is_trap_zombie_not_entrant(long_at(0));
  68   }
  69 
  70   // We use an illtrap for marking a method as not_entrant or zombie
  71   // iff !UseSIGTRAP.
  72   bool is_sigill_zombie_not_entrant() {
  73     assert(!UseSIGTRAP, "precondition");
  74     // Work around a C++ compiler bug which changes 'this'.
  75     return NativeInstruction::is_sigill_zombie_not_entrant_at(addr_at(0));
  76   }
  77   static bool is_sigill_zombie_not_entrant_at(address addr);
  78 

  79   // SIGTRAP-based implicit range checks
  80   bool is_sigtrap_range_check() {
  81     assert(UseSIGTRAP && TrapBasedRangeChecks, "precondition");
  82     return MacroAssembler::is_trap_range_check(long_at(0));
  83   }

  84 
  85   // 'should not reach here'.
  86   bool is_sigtrap_should_not_reach_here() {
  87     return MacroAssembler::is_trap_should_not_reach_here(long_at(0));
  88   }
  89 
  90   bool is_safepoint_poll() {
  91     // Is the current instruction a POTENTIAL read access to the polling page?
  92     // The current arguments of the instruction are not checked!
  93     return MacroAssembler::is_load_from_polling_page(long_at(0), NULL);
  94   }
  95 
  96   bool is_memory_serialization(JavaThread *thread, void *ucontext) {
  97     // Is the current instruction a write access of thread to the
  98     // memory serialization page?
  99     return MacroAssembler::is_memory_serialization(long_at(0), thread, ucontext);
 100   }
 101 
 102   address get_stack_bang_address(void *ucontext) {
 103     // If long_at(0) is not a stack bang, return 0. Otherwise, return




  59     assert(UseSIGTRAP && TrapBasedNullChecks, "precondition");
  60     return MacroAssembler::is_trap_null_check(long_at(0));
  61   }
  62 
  63   // We use a special trap for marking a method as not_entrant or zombie
  64   // iff UseSIGTRAP.
  65   bool is_sigtrap_zombie_not_entrant() {
  66     assert(UseSIGTRAP, "precondition");
  67     return MacroAssembler::is_trap_zombie_not_entrant(long_at(0));
  68   }
  69 
  70   // We use an illtrap for marking a method as not_entrant or zombie
  71   // iff !UseSIGTRAP.
  72   bool is_sigill_zombie_not_entrant() {
  73     assert(!UseSIGTRAP, "precondition");
  74     // Work around a C++ compiler bug which changes 'this'.
  75     return NativeInstruction::is_sigill_zombie_not_entrant_at(addr_at(0));
  76   }
  77   static bool is_sigill_zombie_not_entrant_at(address addr);
  78 
  79 #ifdef COMPILER2
  80   // SIGTRAP-based implicit range checks
  81   bool is_sigtrap_range_check() {
  82     assert(UseSIGTRAP && TrapBasedRangeChecks, "precondition");
  83     return MacroAssembler::is_trap_range_check(long_at(0));
  84   }
  85 #endif
  86 
  87   // 'should not reach here'.
  88   bool is_sigtrap_should_not_reach_here() {
  89     return MacroAssembler::is_trap_should_not_reach_here(long_at(0));
  90   }
  91 
  92   bool is_safepoint_poll() {
  93     // Is the current instruction a POTENTIAL read access to the polling page?
  94     // The current arguments of the instruction are not checked!
  95     return MacroAssembler::is_load_from_polling_page(long_at(0), NULL);
  96   }
  97 
  98   bool is_memory_serialization(JavaThread *thread, void *ucontext) {
  99     // Is the current instruction a write access of thread to the
 100     // memory serialization page?
 101     return MacroAssembler::is_memory_serialization(long_at(0), thread, ucontext);
 102   }
 103 
 104   address get_stack_bang_address(void *ucontext) {
 105     // If long_at(0) is not a stack bang, return 0. Otherwise, return