635 public final long jshortAlignedArraycopy = getFieldValue("StubRoutines::_arrayof_jshort_arraycopy", Long.class, "address");
636 public final long jintAlignedArraycopy = getFieldValue("StubRoutines::_arrayof_jint_arraycopy", Long.class, "address");
637 public final long jlongAlignedArraycopy = getFieldValue("StubRoutines::_arrayof_jlong_arraycopy", Long.class, "address");
638 public final long oopAlignedArraycopy = getFieldValue("StubRoutines::_arrayof_oop_arraycopy", Long.class, "address");
639 public final long oopAlignedArraycopyUninit = getFieldValue("StubRoutines::_arrayof_oop_arraycopy_uninit", Long.class, "address");
640 public final long jbyteAlignedDisjointArraycopy = getFieldValue("StubRoutines::_arrayof_jbyte_disjoint_arraycopy", Long.class, "address");
641 public final long jshortAlignedDisjointArraycopy = getFieldValue("StubRoutines::_arrayof_jshort_disjoint_arraycopy", Long.class, "address");
642 public final long jintAlignedDisjointArraycopy = getFieldValue("StubRoutines::_arrayof_jint_disjoint_arraycopy", Long.class, "address");
643 public final long jlongAlignedDisjointArraycopy = getFieldValue("StubRoutines::_arrayof_jlong_disjoint_arraycopy", Long.class, "address");
644 public final long oopAlignedDisjointArraycopy = getFieldValue("StubRoutines::_arrayof_oop_disjoint_arraycopy", Long.class, "address");
645 public final long oopAlignedDisjointArraycopyUninit = getFieldValue("StubRoutines::_arrayof_oop_disjoint_arraycopy_uninit", Long.class, "address");
646 public final long checkcastArraycopy = getFieldValue("StubRoutines::_checkcast_arraycopy", Long.class, "address");
647 public final long checkcastArraycopyUninit = getFieldValue("StubRoutines::_checkcast_arraycopy_uninit", Long.class, "address");
648 public final long unsafeArraycopy = getFieldValue("StubRoutines::_unsafe_arraycopy", Long.class, "address");
649 public final long genericArraycopy = getFieldValue("StubRoutines::_generic_arraycopy", Long.class, "address");
650
651 // Allocation stubs that throw an exception when allocation fails
652 public final long newInstanceAddress = getAddress("JVMCIRuntime::new_instance");
653 public final long newArrayAddress = getAddress("JVMCIRuntime::new_array");
654 public final long newMultiArrayAddress = getAddress("JVMCIRuntime::new_multi_array");
655
656 // Allocation stubs that return null when allocation fails
657 public final long newInstanceOrNullAddress = getAddress("JVMCIRuntime::new_instance_or_null", 0L);
658 public final long newArrayOrNullAddress = getAddress("JVMCIRuntime::new_array_or_null", 0L);
659 public final long newMultiArrayOrNullAddress = getAddress("JVMCIRuntime::new_multi_array_or_null", 0L);
660
661 public boolean areNullAllocationStubsAvailable() {
662 return newInstanceOrNullAddress != 0L;
663 }
664
665 /**
666 * Checks that HotSpot implements all or none of the allocate-or-null stubs.
667 */
668 private boolean checkNullAllocationStubs() {
669 if (newInstanceOrNullAddress == 0L) {
670 assert newArrayOrNullAddress == 0L;
671 assert newMultiArrayOrNullAddress == 0L;
672 } else {
673 assert newArrayOrNullAddress != 0L;
674 assert newMultiArrayOrNullAddress != 0L;
675 }
676 return true;
677 }
678
679 public final long threadIsInterruptedAddress = getAddress("JVMCIRuntime::thread_is_interrupted");
680 public final long vmMessageAddress = getAddress("JVMCIRuntime::vm_message");
681 public final long identityHashCodeAddress = getAddress("JVMCIRuntime::identity_hash_code");
682 public final long exceptionHandlerForPcAddress = getAddress("JVMCIRuntime::exception_handler_for_pc");
683 public final long monitorenterAddress = getAddress("JVMCIRuntime::monitorenter");
684 public final long monitorexitAddress = getAddress("JVMCIRuntime::monitorexit");
685 public final long notifyAddress = getAddress("JVMCIRuntime::object_notify", 0L);
686 public final long notifyAllAddress = getAddress("JVMCIRuntime::object_notifyAll", 0L);
687 public final long throwAndPostJvmtiExceptionAddress = getAddress("JVMCIRuntime::throw_and_post_jvmti_exception");
688 public final long throwKlassExternalNameExceptionAddress = getAddress("JVMCIRuntime::throw_klass_external_name_exception");
689 public final long throwClassCastExceptionAddress = getAddress("JVMCIRuntime::throw_class_cast_exception");
690 public final long logPrimitiveAddress = getAddress("JVMCIRuntime::log_primitive");
691 public final long logObjectAddress = getAddress("JVMCIRuntime::log_object");
692 public final long logPrintfAddress = getAddress("JVMCIRuntime::log_printf");
693 public final long vmErrorAddress = getAddress("JVMCIRuntime::vm_error");
694 public final long loadAndClearExceptionAddress = getAddress("JVMCIRuntime::load_and_clear_exception");
|
635 public final long jshortAlignedArraycopy = getFieldValue("StubRoutines::_arrayof_jshort_arraycopy", Long.class, "address");
636 public final long jintAlignedArraycopy = getFieldValue("StubRoutines::_arrayof_jint_arraycopy", Long.class, "address");
637 public final long jlongAlignedArraycopy = getFieldValue("StubRoutines::_arrayof_jlong_arraycopy", Long.class, "address");
638 public final long oopAlignedArraycopy = getFieldValue("StubRoutines::_arrayof_oop_arraycopy", Long.class, "address");
639 public final long oopAlignedArraycopyUninit = getFieldValue("StubRoutines::_arrayof_oop_arraycopy_uninit", Long.class, "address");
640 public final long jbyteAlignedDisjointArraycopy = getFieldValue("StubRoutines::_arrayof_jbyte_disjoint_arraycopy", Long.class, "address");
641 public final long jshortAlignedDisjointArraycopy = getFieldValue("StubRoutines::_arrayof_jshort_disjoint_arraycopy", Long.class, "address");
642 public final long jintAlignedDisjointArraycopy = getFieldValue("StubRoutines::_arrayof_jint_disjoint_arraycopy", Long.class, "address");
643 public final long jlongAlignedDisjointArraycopy = getFieldValue("StubRoutines::_arrayof_jlong_disjoint_arraycopy", Long.class, "address");
644 public final long oopAlignedDisjointArraycopy = getFieldValue("StubRoutines::_arrayof_oop_disjoint_arraycopy", Long.class, "address");
645 public final long oopAlignedDisjointArraycopyUninit = getFieldValue("StubRoutines::_arrayof_oop_disjoint_arraycopy_uninit", Long.class, "address");
646 public final long checkcastArraycopy = getFieldValue("StubRoutines::_checkcast_arraycopy", Long.class, "address");
647 public final long checkcastArraycopyUninit = getFieldValue("StubRoutines::_checkcast_arraycopy_uninit", Long.class, "address");
648 public final long unsafeArraycopy = getFieldValue("StubRoutines::_unsafe_arraycopy", Long.class, "address");
649 public final long genericArraycopy = getFieldValue("StubRoutines::_generic_arraycopy", Long.class, "address");
650
651 // Allocation stubs that throw an exception when allocation fails
652 public final long newInstanceAddress = getAddress("JVMCIRuntime::new_instance");
653 public final long newArrayAddress = getAddress("JVMCIRuntime::new_array");
654 public final long newMultiArrayAddress = getAddress("JVMCIRuntime::new_multi_array");
655 public final long dynamicNewInstanceAddress = getAddress("JVMCIRuntime::dynamic_new_instance");
656
657 // Allocation stubs that return null when allocation fails
658 public final long newInstanceOrNullAddress = getAddress("JVMCIRuntime::new_instance_or_null", 0L);
659 public final long newArrayOrNullAddress = getAddress("JVMCIRuntime::new_array_or_null", 0L);
660 public final long newMultiArrayOrNullAddress = getAddress("JVMCIRuntime::new_multi_array_or_null", 0L);
661 public final long dynamicNewInstanceOrNullAddress = getAddress("JVMCIRuntime::dynamic_new_instance_or_null", 0L);
662
663 public boolean areNullAllocationStubsAvailable() {
664 return newInstanceOrNullAddress != 0L;
665 }
666
667 /**
668 * Checks that HotSpot implements all or none of the allocate-or-null stubs.
669 */
670 private boolean checkNullAllocationStubs() {
671 if (newInstanceOrNullAddress == 0L) {
672 assert newArrayOrNullAddress == 0L;
673 assert newMultiArrayOrNullAddress == 0L;
674 assert dynamicNewInstanceOrNullAddress == 0L;
675 } else {
676 assert newArrayOrNullAddress != 0L;
677 assert newMultiArrayOrNullAddress != 0L;
678 assert dynamicNewInstanceOrNullAddress != 0L;
679 }
680 return true;
681 }
682
683 public final long threadIsInterruptedAddress = getAddress("JVMCIRuntime::thread_is_interrupted");
684 public final long vmMessageAddress = getAddress("JVMCIRuntime::vm_message");
685 public final long identityHashCodeAddress = getAddress("JVMCIRuntime::identity_hash_code");
686 public final long exceptionHandlerForPcAddress = getAddress("JVMCIRuntime::exception_handler_for_pc");
687 public final long monitorenterAddress = getAddress("JVMCIRuntime::monitorenter");
688 public final long monitorexitAddress = getAddress("JVMCIRuntime::monitorexit");
689 public final long notifyAddress = getAddress("JVMCIRuntime::object_notify", 0L);
690 public final long notifyAllAddress = getAddress("JVMCIRuntime::object_notifyAll", 0L);
691 public final long throwAndPostJvmtiExceptionAddress = getAddress("JVMCIRuntime::throw_and_post_jvmti_exception");
692 public final long throwKlassExternalNameExceptionAddress = getAddress("JVMCIRuntime::throw_klass_external_name_exception");
693 public final long throwClassCastExceptionAddress = getAddress("JVMCIRuntime::throw_class_cast_exception");
694 public final long logPrimitiveAddress = getAddress("JVMCIRuntime::log_primitive");
695 public final long logObjectAddress = getAddress("JVMCIRuntime::log_object");
696 public final long logPrintfAddress = getAddress("JVMCIRuntime::log_printf");
697 public final long vmErrorAddress = getAddress("JVMCIRuntime::vm_error");
698 public final long loadAndClearExceptionAddress = getAddress("JVMCIRuntime::load_and_clear_exception");
|