< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/GraalHotSpotVMConfig.java

Print this page




 298     public final int jvmAccSynthetic = getConstant("JVM_ACC_SYNTHETIC", Integer.class);
 299 
 300     public final int jvmciCompileStateCanPostOnExceptionsOffset = getJvmciJvmtiCapabilityOffset("_jvmti_can_post_on_exceptions");
 301     public final int jvmciCompileStateCanPopFrameOffset = getJvmciJvmtiCapabilityOffset("_jvmti_can_pop_frame");
 302     public final int jvmciCompileStateCanAccessLocalVariablesOffset = getJvmciJvmtiCapabilityOffset("_jvmti_can_access_local_variables");
 303 
 304     // Integer.MIN_VALUE if not available
 305     private int getJvmciJvmtiCapabilityOffset(String name) {
 306         int offset = getFieldOffset("JVMCICompileState::" + name, Integer.class, "jbyte", Integer.MIN_VALUE);
 307         if (offset == Integer.MIN_VALUE) {
 308             // JDK 12
 309             offset = getFieldOffset("JVMCIEnv::" + name, Integer.class, "jbyte", Integer.MIN_VALUE);
 310         }
 311         return offset;
 312     }
 313 
 314     public final int threadTlabOffset = getFieldOffset("Thread::_tlab", Integer.class, "ThreadLocalAllocBuffer");
 315     public final int javaThreadAnchorOffset = getFieldOffset("JavaThread::_anchor", Integer.class, "JavaFrameAnchor");
 316     public final int javaThreadShouldPostOnExceptionsFlagOffset = getFieldOffset("JavaThread::_should_post_on_exceptions_flag", Integer.class, "int", Integer.MIN_VALUE);
 317     public final int threadObjectOffset = getFieldOffset("JavaThread::_threadObj", Integer.class, "oop");
 318     public final int osThreadOffset = getFieldOffset("JavaThread::_osthread", Integer.class, "OSThread*");
 319     public final int threadIsMethodHandleReturnOffset = getFieldOffset("JavaThread::_is_method_handle_return", Integer.class, "int");
 320     public final int threadObjectResultOffset = getFieldOffset("JavaThread::_vm_result", Integer.class, "oop");
 321     public final int jvmciCountersThreadOffset = getFieldOffset("JavaThread::_jvmci_counters", Integer.class, "jlong*");
 322     public final int doingUnsafeAccessOffset = getFieldOffset("JavaThread::_doing_unsafe_access", Integer.class, "bool", Integer.MAX_VALUE);
 323     public final int javaThreadReservedStackActivationOffset = versioned.javaThreadReservedStackActivationOffset;
 324     public final int jniEnvironmentOffset = getFieldOffset("JavaThread::_jni_environment", Integer.class, "JNIEnv", Integer.MIN_VALUE);
 325 
 326     public boolean requiresReservedStackCheck(List<ResolvedJavaMethod> methods) {
 327         if (enableStackReservedZoneAddress != 0 && methods != null) {
 328             for (ResolvedJavaMethod method : methods) {
 329                 if (((HotSpotResolvedJavaMethod) method).hasReservedStackAccess()) {
 330                     return true;
 331                 }
 332             }
 333         }
 334         return false;
 335     }
 336 
 337     /**
 338      * An invalid value for {@link #rtldDefault}.


 402     }
 403 
 404     public int threadLastJavaPcOffset() {
 405         return javaThreadAnchorOffset + javaFrameAnchorLastJavaPcOffset;
 406     }
 407 
 408     public int threadLastJavaFpOffset() {
 409         assert osArch.equals("aarch64") || osArch.equals("amd64");
 410         return javaThreadAnchorOffset + getFieldOffset("JavaFrameAnchor::_last_Java_fp", Integer.class, "intptr_t*");
 411     }
 412 
 413     public int threadJavaFrameAnchorFlagsOffset() {
 414         assert osArch.equals("sparc");
 415         return javaThreadAnchorOffset + getFieldOffset("JavaFrameAnchor::_flags", Integer.class, "int");
 416     }
 417 
 418     public final int runtimeCallStackSize = getConstant("frame::arg_reg_save_area_bytes", Integer.class, intRequiredOnAMD64);
 419     public final int frameInterpreterFrameSenderSpOffset = getConstant("frame::interpreter_frame_sender_sp_offset", Integer.class, intRequiredOnAMD64);
 420     public final int frameInterpreterFrameLastSpOffset = getConstant("frame::interpreter_frame_last_sp_offset", Integer.class, intRequiredOnAMD64);
 421 
 422     public final int osThreadInterruptedOffset = getFieldOffset("OSThread::_interrupted", Integer.class, "jint");
 423 
 424     public final long markWordHashShift = getConstant(markWordField("hash_shift"), Long.class);
 425 
 426     public final int biasedLockMaskInPlace = getConstant(markWordField("biased_lock_mask_in_place"), Integer.class);
 427     public final int ageMaskInPlace = getConstant(markWordField("age_mask_in_place"), Integer.class);
 428     public final int epochMaskInPlace = getConstant(markWordField("epoch_mask_in_place"), Integer.class);
 429     public final long markWordHashMask = getConstant(markWordField("hash_mask"), Long.class);
 430     public final long markWordHashMaskInPlace = getConstant(markWordField("hash_mask_in_place"), Long.class);
 431 
 432     public final int unlockedMask = getConstant(markWordField("unlocked_value"), Integer.class);
 433     public final int monitorMask = getConstant(markWordField("monitor_value"), Integer.class, -1);
 434     public final int biasedLockPattern = getConstant(markWordField("biased_lock_pattern"), Integer.class);
 435 
 436     // This field has no type in vmStructs.cpp
 437     public final int objectMonitorOwner = getFieldOffset("ObjectMonitor::_owner", Integer.class, null, -1);
 438     public final int objectMonitorRecursions = getFieldOffset("ObjectMonitor::_recursions", Integer.class, "intptr_t", -1);
 439     public final int objectMonitorCxq = getFieldOffset("ObjectMonitor::_cxq", Integer.class, "ObjectWaiter*", -1);
 440     public final int objectMonitorEntryList = getFieldOffset("ObjectMonitor::_EntryList", Integer.class, "ObjectWaiter*", -1);
 441     public final int objectMonitorSucc = getFieldOffset("ObjectMonitor::_succ", Integer.class, "Thread*", -1);
 442 


 697     public boolean areNullAllocationStubsAvailable() {
 698         return newInstanceOrNullAddress != 0L;
 699     }
 700 
 701     /**
 702      * Checks that HotSpot implements all or none of the allocate-or-null stubs.
 703      */
 704     private boolean checkNullAllocationStubs() {
 705         if (newInstanceOrNullAddress == 0L) {
 706             assert newArrayOrNullAddress == 0L;
 707             assert newMultiArrayOrNullAddress == 0L;
 708             assert dynamicNewInstanceOrNullAddress == 0L;
 709         } else {
 710             assert newArrayOrNullAddress != 0L;
 711             assert newMultiArrayOrNullAddress != 0L;
 712             assert dynamicNewInstanceOrNullAddress != 0L;
 713         }
 714         return true;
 715     }
 716 
 717     public final long threadIsInterruptedAddress = getAddress("JVMCIRuntime::thread_is_interrupted");
 718     public final long vmMessageAddress = getAddress("JVMCIRuntime::vm_message");
 719     public final long identityHashCodeAddress = getAddress("JVMCIRuntime::identity_hash_code");
 720     public final long exceptionHandlerForPcAddress = getAddress("JVMCIRuntime::exception_handler_for_pc");
 721     public final long monitorenterAddress = getAddress("JVMCIRuntime::monitorenter");
 722     public final long monitorexitAddress = getAddress("JVMCIRuntime::monitorexit");
 723     public final long notifyAddress = getAddress("JVMCIRuntime::object_notify", 0L);
 724     public final long notifyAllAddress = getAddress("JVMCIRuntime::object_notifyAll", 0L);
 725     public final long throwAndPostJvmtiExceptionAddress = getAddress("JVMCIRuntime::throw_and_post_jvmti_exception");
 726     public final long throwKlassExternalNameExceptionAddress = getAddress("JVMCIRuntime::throw_klass_external_name_exception");
 727     public final long throwClassCastExceptionAddress = getAddress("JVMCIRuntime::throw_class_cast_exception");
 728     public final long logPrimitiveAddress = getAddress("JVMCIRuntime::log_primitive");
 729     public final long logObjectAddress = getAddress("JVMCIRuntime::log_object");
 730     public final long logPrintfAddress = getAddress("JVMCIRuntime::log_printf");
 731     public final long vmErrorAddress = getAddress("JVMCIRuntime::vm_error");
 732     public final long loadAndClearExceptionAddress = getAddress("JVMCIRuntime::load_and_clear_exception");
 733     public final long writeBarrierPreAddress = getAddress("JVMCIRuntime::write_barrier_pre");
 734     public final long writeBarrierPostAddress = getAddress("JVMCIRuntime::write_barrier_post");
 735     public final long validateObject = getAddress("JVMCIRuntime::validate_object");
 736 
 737     public final long testDeoptimizeCallInt = getAddress("JVMCIRuntime::test_deoptimize_call_int");




 298     public final int jvmAccSynthetic = getConstant("JVM_ACC_SYNTHETIC", Integer.class);
 299 
 300     public final int jvmciCompileStateCanPostOnExceptionsOffset = getJvmciJvmtiCapabilityOffset("_jvmti_can_post_on_exceptions");
 301     public final int jvmciCompileStateCanPopFrameOffset = getJvmciJvmtiCapabilityOffset("_jvmti_can_pop_frame");
 302     public final int jvmciCompileStateCanAccessLocalVariablesOffset = getJvmciJvmtiCapabilityOffset("_jvmti_can_access_local_variables");
 303 
 304     // Integer.MIN_VALUE if not available
 305     private int getJvmciJvmtiCapabilityOffset(String name) {
 306         int offset = getFieldOffset("JVMCICompileState::" + name, Integer.class, "jbyte", Integer.MIN_VALUE);
 307         if (offset == Integer.MIN_VALUE) {
 308             // JDK 12
 309             offset = getFieldOffset("JVMCIEnv::" + name, Integer.class, "jbyte", Integer.MIN_VALUE);
 310         }
 311         return offset;
 312     }
 313 
 314     public final int threadTlabOffset = getFieldOffset("Thread::_tlab", Integer.class, "ThreadLocalAllocBuffer");
 315     public final int javaThreadAnchorOffset = getFieldOffset("JavaThread::_anchor", Integer.class, "JavaFrameAnchor");
 316     public final int javaThreadShouldPostOnExceptionsFlagOffset = getFieldOffset("JavaThread::_should_post_on_exceptions_flag", Integer.class, "int", Integer.MIN_VALUE);
 317     public final int threadObjectOffset = getFieldOffset("JavaThread::_threadObj", Integer.class, "oop");
 318     public final int osThreadOffset = getFieldOffset("JavaThread::_osthread", Integer.class, "OSThread*", Integer.MAX_VALUE);
 319     public final int threadIsMethodHandleReturnOffset = getFieldOffset("JavaThread::_is_method_handle_return", Integer.class, "int");
 320     public final int threadObjectResultOffset = getFieldOffset("JavaThread::_vm_result", Integer.class, "oop");
 321     public final int jvmciCountersThreadOffset = getFieldOffset("JavaThread::_jvmci_counters", Integer.class, "jlong*");
 322     public final int doingUnsafeAccessOffset = getFieldOffset("JavaThread::_doing_unsafe_access", Integer.class, "bool", Integer.MAX_VALUE);
 323     public final int javaThreadReservedStackActivationOffset = versioned.javaThreadReservedStackActivationOffset;
 324     public final int jniEnvironmentOffset = getFieldOffset("JavaThread::_jni_environment", Integer.class, "JNIEnv", Integer.MIN_VALUE);
 325 
 326     public boolean requiresReservedStackCheck(List<ResolvedJavaMethod> methods) {
 327         if (enableStackReservedZoneAddress != 0 && methods != null) {
 328             for (ResolvedJavaMethod method : methods) {
 329                 if (((HotSpotResolvedJavaMethod) method).hasReservedStackAccess()) {
 330                     return true;
 331                 }
 332             }
 333         }
 334         return false;
 335     }
 336 
 337     /**
 338      * An invalid value for {@link #rtldDefault}.


 402     }
 403 
 404     public int threadLastJavaPcOffset() {
 405         return javaThreadAnchorOffset + javaFrameAnchorLastJavaPcOffset;
 406     }
 407 
 408     public int threadLastJavaFpOffset() {
 409         assert osArch.equals("aarch64") || osArch.equals("amd64");
 410         return javaThreadAnchorOffset + getFieldOffset("JavaFrameAnchor::_last_Java_fp", Integer.class, "intptr_t*");
 411     }
 412 
 413     public int threadJavaFrameAnchorFlagsOffset() {
 414         assert osArch.equals("sparc");
 415         return javaThreadAnchorOffset + getFieldOffset("JavaFrameAnchor::_flags", Integer.class, "int");
 416     }
 417 
 418     public final int runtimeCallStackSize = getConstant("frame::arg_reg_save_area_bytes", Integer.class, intRequiredOnAMD64);
 419     public final int frameInterpreterFrameSenderSpOffset = getConstant("frame::interpreter_frame_sender_sp_offset", Integer.class, intRequiredOnAMD64);
 420     public final int frameInterpreterFrameLastSpOffset = getConstant("frame::interpreter_frame_last_sp_offset", Integer.class, intRequiredOnAMD64);
 421 
 422     public final int osThreadInterruptedOffset = getFieldOffset("OSThread::_interrupted", Integer.class, "jint", Integer.MAX_VALUE);
 423 
 424     public final long markWordHashShift = getConstant(markWordField("hash_shift"), Long.class);
 425 
 426     public final int biasedLockMaskInPlace = getConstant(markWordField("biased_lock_mask_in_place"), Integer.class);
 427     public final int ageMaskInPlace = getConstant(markWordField("age_mask_in_place"), Integer.class);
 428     public final int epochMaskInPlace = getConstant(markWordField("epoch_mask_in_place"), Integer.class);
 429     public final long markWordHashMask = getConstant(markWordField("hash_mask"), Long.class);
 430     public final long markWordHashMaskInPlace = getConstant(markWordField("hash_mask_in_place"), Long.class);
 431 
 432     public final int unlockedMask = getConstant(markWordField("unlocked_value"), Integer.class);
 433     public final int monitorMask = getConstant(markWordField("monitor_value"), Integer.class, -1);
 434     public final int biasedLockPattern = getConstant(markWordField("biased_lock_pattern"), Integer.class);
 435 
 436     // This field has no type in vmStructs.cpp
 437     public final int objectMonitorOwner = getFieldOffset("ObjectMonitor::_owner", Integer.class, null, -1);
 438     public final int objectMonitorRecursions = getFieldOffset("ObjectMonitor::_recursions", Integer.class, "intptr_t", -1);
 439     public final int objectMonitorCxq = getFieldOffset("ObjectMonitor::_cxq", Integer.class, "ObjectWaiter*", -1);
 440     public final int objectMonitorEntryList = getFieldOffset("ObjectMonitor::_EntryList", Integer.class, "ObjectWaiter*", -1);
 441     public final int objectMonitorSucc = getFieldOffset("ObjectMonitor::_succ", Integer.class, "Thread*", -1);
 442 


 697     public boolean areNullAllocationStubsAvailable() {
 698         return newInstanceOrNullAddress != 0L;
 699     }
 700 
 701     /**
 702      * Checks that HotSpot implements all or none of the allocate-or-null stubs.
 703      */
 704     private boolean checkNullAllocationStubs() {
 705         if (newInstanceOrNullAddress == 0L) {
 706             assert newArrayOrNullAddress == 0L;
 707             assert newMultiArrayOrNullAddress == 0L;
 708             assert dynamicNewInstanceOrNullAddress == 0L;
 709         } else {
 710             assert newArrayOrNullAddress != 0L;
 711             assert newMultiArrayOrNullAddress != 0L;
 712             assert dynamicNewInstanceOrNullAddress != 0L;
 713         }
 714         return true;
 715     }
 716 

 717     public final long vmMessageAddress = getAddress("JVMCIRuntime::vm_message");
 718     public final long identityHashCodeAddress = getAddress("JVMCIRuntime::identity_hash_code");
 719     public final long exceptionHandlerForPcAddress = getAddress("JVMCIRuntime::exception_handler_for_pc");
 720     public final long monitorenterAddress = getAddress("JVMCIRuntime::monitorenter");
 721     public final long monitorexitAddress = getAddress("JVMCIRuntime::monitorexit");
 722     public final long notifyAddress = getAddress("JVMCIRuntime::object_notify", 0L);
 723     public final long notifyAllAddress = getAddress("JVMCIRuntime::object_notifyAll", 0L);
 724     public final long throwAndPostJvmtiExceptionAddress = getAddress("JVMCIRuntime::throw_and_post_jvmti_exception");
 725     public final long throwKlassExternalNameExceptionAddress = getAddress("JVMCIRuntime::throw_klass_external_name_exception");
 726     public final long throwClassCastExceptionAddress = getAddress("JVMCIRuntime::throw_class_cast_exception");
 727     public final long logPrimitiveAddress = getAddress("JVMCIRuntime::log_primitive");
 728     public final long logObjectAddress = getAddress("JVMCIRuntime::log_object");
 729     public final long logPrintfAddress = getAddress("JVMCIRuntime::log_printf");
 730     public final long vmErrorAddress = getAddress("JVMCIRuntime::vm_error");
 731     public final long loadAndClearExceptionAddress = getAddress("JVMCIRuntime::load_and_clear_exception");
 732     public final long writeBarrierPreAddress = getAddress("JVMCIRuntime::write_barrier_pre");
 733     public final long writeBarrierPostAddress = getAddress("JVMCIRuntime::write_barrier_post");
 734     public final long validateObject = getAddress("JVMCIRuntime::validate_object");
 735 
 736     public final long testDeoptimizeCallInt = getAddress("JVMCIRuntime::test_deoptimize_call_int");


< prev index next >