< prev index next >

src/hotspot/share/utilities/exceptions.hpp

Print this page

251 
252 // CAUTION: These macros clears all exceptions except probable async exceptions j.l.InternalError.
253 // So use it with caution.
254 #define CLEAR_PENDING_NONASYNC_EXCEPTION        (((ThreadShadow*)THREAD)->clear_pending_nonasync_exception())
255 #define CHECK_AND_CLEAR_NONASYNC                THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_NONASYNC_EXCEPTION; return; } (void)(0
256 #define CHECK_AND_CLEAR_NONASYNC_(result)       THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_NONASYNC_EXCEPTION; return result; } (void)(0
257 #define CHECK_AND_CLEAR_NONASYNC_0              CHECK_AND_CLEAR_NONASYNC_(0)
258 #define CHECK_AND_CLEAR_NONASYNC_NH             CHECK_AND_CLEAR_NONASYNC_(Handle())
259 #define CHECK_AND_CLEAR_NONASYNC_NULL           CHECK_AND_CLEAR_NONASYNC_(nullptr)
260 #define CHECK_AND_CLEAR_NONASYNC_false          CHECK_AND_CLEAR_NONASYNC_(false)
261 
262 #define CLEAR_PENDING_PREEMPTED_EXCEPTION       (((ThreadShadow*)THREAD)->clear_pending_preempted_exception())
263 #define CHECK_AND_CLEAR_PREEMPTED               THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_PREEMPTED_EXCEPTION; return; } (void)(0
264 
265 
266 // The THROW... macros should be used to throw an exception. They require a THREAD variable to be
267 // visible within the scope containing the THROW. Usually this is achieved by declaring the function
268 // with a TRAPS argument.
269 
270 #define THREAD_AND_LOCATION                      THREAD, __FILE__, __LINE__


271 
272 #define THROW_OOP(e)                                \
273   { Exceptions::_throw_oop(THREAD_AND_LOCATION, e);                             return;  }
274 
275 #define THROW_HANDLE(e)                                \
276   { Exceptions::_throw(THREAD_AND_LOCATION, e);                             return;  }
277 
278 #define THROW(name)                                 \
279   { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, nullptr); return;  }
280 
281 #define THROW_MSG(name, message)                    \
282   { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, message); return;  }
283 
284 #define THROW_CAUSE(name, cause)   \
285   { Exceptions::_throw_cause(THREAD_AND_LOCATION, name, cause); return; }
286 
287 #define THROW_MSG_LOADER(name, message, loader) \
288   { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, message, loader); return;  }
289 
290 #define THROW_ARG(name, signature, args) \

251 
252 // CAUTION: These macros clears all exceptions except probable async exceptions j.l.InternalError.
253 // So use it with caution.
254 #define CLEAR_PENDING_NONASYNC_EXCEPTION        (((ThreadShadow*)THREAD)->clear_pending_nonasync_exception())
255 #define CHECK_AND_CLEAR_NONASYNC                THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_NONASYNC_EXCEPTION; return; } (void)(0
256 #define CHECK_AND_CLEAR_NONASYNC_(result)       THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_NONASYNC_EXCEPTION; return result; } (void)(0
257 #define CHECK_AND_CLEAR_NONASYNC_0              CHECK_AND_CLEAR_NONASYNC_(0)
258 #define CHECK_AND_CLEAR_NONASYNC_NH             CHECK_AND_CLEAR_NONASYNC_(Handle())
259 #define CHECK_AND_CLEAR_NONASYNC_NULL           CHECK_AND_CLEAR_NONASYNC_(nullptr)
260 #define CHECK_AND_CLEAR_NONASYNC_false          CHECK_AND_CLEAR_NONASYNC_(false)
261 
262 #define CLEAR_PENDING_PREEMPTED_EXCEPTION       (((ThreadShadow*)THREAD)->clear_pending_preempted_exception())
263 #define CHECK_AND_CLEAR_PREEMPTED               THREAD); if (HAS_PENDING_EXCEPTION) { CLEAR_PENDING_PREEMPTED_EXCEPTION; return; } (void)(0
264 
265 
266 // The THROW... macros should be used to throw an exception. They require a THREAD variable to be
267 // visible within the scope containing the THROW. Usually this is achieved by declaring the function
268 // with a TRAPS argument.
269 
270 #define THREAD_AND_LOCATION                      THREAD, __FILE__, __LINE__
271 #define THREAD_AND_LOCATION_DECL                 TRAPS, const char* file, int line
272 #define THREAD_AND_LOCATION_ARGS                 THREAD, file, line
273 
274 #define THROW_OOP(e)                                \
275   { Exceptions::_throw_oop(THREAD_AND_LOCATION, e);                             return;  }
276 
277 #define THROW_HANDLE(e)                                \
278   { Exceptions::_throw(THREAD_AND_LOCATION, e);                             return;  }
279 
280 #define THROW(name)                                 \
281   { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, nullptr); return;  }
282 
283 #define THROW_MSG(name, message)                    \
284   { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, message); return;  }
285 
286 #define THROW_CAUSE(name, cause)   \
287   { Exceptions::_throw_cause(THREAD_AND_LOCATION, name, cause); return; }
288 
289 #define THROW_MSG_LOADER(name, message, loader) \
290   { Exceptions::_throw_msg(THREAD_AND_LOCATION, name, message, loader); return;  }
291 
292 #define THROW_ARG(name, signature, args) \
< prev index next >