15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_JVMCI_JVMCIEXCEPTIONS_HPP 26 #define SHARE_JVMCI_JVMCIEXCEPTIONS_HPP 27 28 class JVMCIEnv; 29 30 // JVMCIEnv exception utility macros. Analagous to the regular CHECK, TRAP and THREAD macros. 31 32 #define JVMCIENV __jvmci_env__ 33 #define JVMCI_TRAPS JVMCIEnv* JVMCIENV 34 35 #define JNI_JVMCIENV(env) \ 36 JVMCIEnv __stack_jvmci_env__(env, __FILE__, __LINE__); \ 37 JVMCIEnv* JVMCIENV = &__stack_jvmci_env__ 38 39 #define THREAD_JVMCIENV(thread) \ 40 JVMCIEnv __stack_jvmci_env__(thread, __FILE__, __LINE__); \ 41 JVMCIEnv* JVMCIENV = &__stack_jvmci_env__ 42 43 #define JVMCI_PENDING_EXCEPTION (JVMCIENV->pending_exception()) 44 #define JVMCI_HAS_PENDING_EXCEPTION (JVMCIENV->has_pending_exception()) 45 #define JVMCI_CLEAR_PENDING_EXCEPTION (JVMCIENV->clear_pending_exception()) 46 47 #define JVMCI_CHECK JVMCIENV); if (JVMCI_HAS_PENDING_EXCEPTION) return ; (void)(0 48 #define JVMCI_CHECK_(result) JVMCIENV); if (JVMCI_HAS_PENDING_EXCEPTION) return result; (void)(0 49 #define JVMCI_CHECK_0 JVMCI_CHECK_(0) 50 #define JVMCI_CHECK_NULL JVMCI_CHECK_(NULL) 51 #define JVMCI_CHECK_false JVMCI_CHECK_(false) 52 #define JVMCI_CHECK_OK JVMCI_CHECK_(JVMCI::ok) 53 54 #define JVMCI_ERROR(...) \ 55 { JVMCIENV->fthrow_error(__FILE__, __LINE__, __VA_ARGS__); return; } 56 | 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_JVMCI_JVMCIEXCEPTIONS_HPP 26 #define SHARE_JVMCI_JVMCIEXCEPTIONS_HPP 27 28 class JVMCIEnv; 29 30 // JVMCIEnv exception utility macros. Analagous to the regular CHECK, TRAP and THREAD macros. 31 32 #define JVMCIENV __jvmci_env__ 33 #define JVMCI_TRAPS JVMCIEnv* JVMCIENV 34 35 #define JNI_JVMCIENV(thread, env) \ 36 JVMCIEnv __stack_jvmci_env__(thread, env, __FILE__, __LINE__); \ 37 JVMCIEnv* JVMCIENV = &__stack_jvmci_env__ 38 39 #define THREAD_JVMCIENV(thread) \ 40 JVMCIEnv __stack_jvmci_env__(thread, __FILE__, __LINE__); \ 41 JVMCIEnv* JVMCIENV = &__stack_jvmci_env__ 42 43 #define JVMCI_PENDING_EXCEPTION (JVMCIENV->pending_exception()) 44 #define JVMCI_HAS_PENDING_EXCEPTION (JVMCIENV->has_pending_exception()) 45 #define JVMCI_CLEAR_PENDING_EXCEPTION (JVMCIENV->clear_pending_exception()) 46 47 #define JVMCI_CHECK JVMCIENV); if (JVMCI_HAS_PENDING_EXCEPTION) return ; (void)(0 48 #define JVMCI_CHECK_(result) JVMCIENV); if (JVMCI_HAS_PENDING_EXCEPTION) return result; (void)(0 49 #define JVMCI_CHECK_0 JVMCI_CHECK_(0) 50 #define JVMCI_CHECK_NULL JVMCI_CHECK_(NULL) 51 #define JVMCI_CHECK_false JVMCI_CHECK_(false) 52 #define JVMCI_CHECK_OK JVMCI_CHECK_(JVMCI::ok) 53 54 #define JVMCI_ERROR(...) \ 55 { JVMCIENV->fthrow_error(__FILE__, __LINE__, __VA_ARGS__); return; } 56 |