< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java
Print this page
*** 646,660 ****
public final long checkcastArraycopy = getFieldValue("StubRoutines::_checkcast_arraycopy", Long.class, "address");
public final long checkcastArraycopyUninit = getFieldValue("StubRoutines::_checkcast_arraycopy_uninit", Long.class, "address");
public final long unsafeArraycopy = getFieldValue("StubRoutines::_unsafe_arraycopy", Long.class, "address");
public final long genericArraycopy = getFieldValue("StubRoutines::_generic_arraycopy", Long.class, "address");
public final long newInstanceAddress = getAddress("JVMCIRuntime::new_instance");
public final long newArrayAddress = getAddress("JVMCIRuntime::new_array");
public final long newMultiArrayAddress = getAddress("JVMCIRuntime::new_multi_array");
! public final long dynamicNewArrayAddress = getAddress("JVMCIRuntime::dynamic_new_array");
! public final long dynamicNewInstanceAddress = getAddress("JVMCIRuntime::dynamic_new_instance");
public final long threadIsInterruptedAddress = getAddress("JVMCIRuntime::thread_is_interrupted");
public final long vmMessageAddress = getAddress("JVMCIRuntime::vm_message");
public final long identityHashCodeAddress = getAddress("JVMCIRuntime::identity_hash_code");
public final long exceptionHandlerForPcAddress = getAddress("JVMCIRuntime::exception_handler_for_pc");
--- 646,682 ----
public final long checkcastArraycopy = getFieldValue("StubRoutines::_checkcast_arraycopy", Long.class, "address");
public final long checkcastArraycopyUninit = getFieldValue("StubRoutines::_checkcast_arraycopy_uninit", Long.class, "address");
public final long unsafeArraycopy = getFieldValue("StubRoutines::_unsafe_arraycopy", Long.class, "address");
public final long genericArraycopy = getFieldValue("StubRoutines::_generic_arraycopy", Long.class, "address");
+ // Allocation stubs that throw an exception when allocation fails
public final long newInstanceAddress = getAddress("JVMCIRuntime::new_instance");
public final long newArrayAddress = getAddress("JVMCIRuntime::new_array");
public final long newMultiArrayAddress = getAddress("JVMCIRuntime::new_multi_array");
!
! // Allocation stubs that return null when allocation fails
! public final long newInstanceOrNullAddress = getAddress("JVMCIRuntime::new_instance_or_null", 0L);
! public final long newArrayOrNullAddress = getAddress("JVMCIRuntime::new_array_or_null", 0L);
! public final long newMultiArrayOrNullAddress = getAddress("JVMCIRuntime::new_multi_array_or_null", 0L);
!
! public boolean areNullAllocationStubsAvailable() {
! return newInstanceOrNullAddress != 0L;
! }
!
! /**
! * Checks that HotSpot implements all or none of the allocate-or-null stubs.
! */
! private boolean checkNullAllocationStubs() {
! if (newInstanceOrNullAddress == 0L) {
! assert newArrayOrNullAddress == 0L;
! assert newMultiArrayOrNullAddress == 0L;
! } else {
! assert newArrayOrNullAddress != 0L;
! assert newMultiArrayOrNullAddress != 0L;
! }
! return true;
! }
public final long threadIsInterruptedAddress = getAddress("JVMCIRuntime::thread_is_interrupted");
public final long vmMessageAddress = getAddress("JVMCIRuntime::vm_message");
public final long identityHashCodeAddress = getAddress("JVMCIRuntime::identity_hash_code");
public final long exceptionHandlerForPcAddress = getAddress("JVMCIRuntime::exception_handler_for_pc");
*** 755,762 ****
--- 777,785 ----
assert Modifier.isFinal(modifiers) : "field should be final: " + f;
}
}
assert codeEntryAlignment > 0 : codeEntryAlignment;
+ assert checkNullAllocationStubs();
return true;
}
}
< prev index next >