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
|