434 TRACE_CALL(result_type, header) \ 435 debug_only(NoHandleMark __hm;) \ 436 Thread* THREAD = thread; \ 437 os::verify_stack_alignment(); \ 438 /* begin of body */ 439 440 441 // Definitions for IRT (Interpreter Runtime) 442 // (thread is an argument passed in to all these routines) 443 444 #define IRT_ENTRY(result_type, header) \ 445 result_type header { \ 446 ThreadInVMfromJava __tiv(thread); \ 447 VM_ENTRY_BASE(result_type, header, thread) \ 448 debug_only(VMEntryWrapper __vew;) 449 450 451 #define IRT_LEAF(result_type, header) \ 452 result_type header { \ 453 VM_LEAF_BASE(result_type, header) \ 454 debug_only(No_Safepoint_Verifier __nspv(true);) 455 456 457 #define IRT_ENTRY_NO_ASYNC(result_type, header) \ 458 result_type header { \ 459 ThreadInVMfromJavaNoAsyncException __tiv(thread); \ 460 VM_ENTRY_BASE(result_type, header, thread) \ 461 debug_only(VMEntryWrapper __vew;) 462 463 #define IRT_END } 464 465 466 // Definitions for JRT (Java (Compiler/Shared) Runtime) 467 468 #define JRT_ENTRY(result_type, header) \ 469 result_type header { \ 470 ThreadInVMfromJava __tiv(thread); \ 471 VM_ENTRY_BASE(result_type, header, thread) \ 472 debug_only(VMEntryWrapper __vew;) 473 474 475 #define JRT_LEAF(result_type, header) \ 476 result_type header { \ 477 VM_LEAF_BASE(result_type, header) \ 478 debug_only(JRT_Leaf_Verifier __jlv;) 479 480 481 #define JRT_ENTRY_NO_ASYNC(result_type, header) \ 482 result_type header { \ 483 ThreadInVMfromJavaNoAsyncException __tiv(thread); \ 484 VM_ENTRY_BASE(result_type, header, thread) \ 485 debug_only(VMEntryWrapper __vew;) 486 487 // Same as JRT Entry but allows for return value after the safepoint 488 // to get back into Java from the VM 489 #define JRT_BLOCK_ENTRY(result_type, header) \ 490 result_type header { \ 491 TRACE_CALL(result_type, header) \ 492 HandleMarkCleaner __hm(thread); 493 494 #define JRT_BLOCK \ 495 { \ 496 ThreadInVMfromJava __tiv(thread); \ 497 Thread* THREAD = thread; \ 498 debug_only(VMEntryWrapper __vew;) | 434 TRACE_CALL(result_type, header) \ 435 debug_only(NoHandleMark __hm;) \ 436 Thread* THREAD = thread; \ 437 os::verify_stack_alignment(); \ 438 /* begin of body */ 439 440 441 // Definitions for IRT (Interpreter Runtime) 442 // (thread is an argument passed in to all these routines) 443 444 #define IRT_ENTRY(result_type, header) \ 445 result_type header { \ 446 ThreadInVMfromJava __tiv(thread); \ 447 VM_ENTRY_BASE(result_type, header, thread) \ 448 debug_only(VMEntryWrapper __vew;) 449 450 451 #define IRT_LEAF(result_type, header) \ 452 result_type header { \ 453 VM_LEAF_BASE(result_type, header) \ 454 debug_only(NoSafepointVerifier __nspv(true);) 455 456 457 #define IRT_ENTRY_NO_ASYNC(result_type, header) \ 458 result_type header { \ 459 ThreadInVMfromJavaNoAsyncException __tiv(thread); \ 460 VM_ENTRY_BASE(result_type, header, thread) \ 461 debug_only(VMEntryWrapper __vew;) 462 463 #define IRT_END } 464 465 466 // Definitions for JRT (Java (Compiler/Shared) Runtime) 467 468 #define JRT_ENTRY(result_type, header) \ 469 result_type header { \ 470 ThreadInVMfromJava __tiv(thread); \ 471 VM_ENTRY_BASE(result_type, header, thread) \ 472 debug_only(VMEntryWrapper __vew;) 473 474 475 #define JRT_LEAF(result_type, header) \ 476 result_type header { \ 477 VM_LEAF_BASE(result_type, header) \ 478 debug_only(JRTLeafVerifier __jlv;) 479 480 481 #define JRT_ENTRY_NO_ASYNC(result_type, header) \ 482 result_type header { \ 483 ThreadInVMfromJavaNoAsyncException __tiv(thread); \ 484 VM_ENTRY_BASE(result_type, header, thread) \ 485 debug_only(VMEntryWrapper __vew;) 486 487 // Same as JRT Entry but allows for return value after the safepoint 488 // to get back into Java from the VM 489 #define JRT_BLOCK_ENTRY(result_type, header) \ 490 result_type header { \ 491 TRACE_CALL(result_type, header) \ 492 HandleMarkCleaner __hm(thread); 493 494 #define JRT_BLOCK \ 495 { \ 496 ThreadInVMfromJava __tiv(thread); \ 497 Thread* THREAD = thread; \ 498 debug_only(VMEntryWrapper __vew;) |