< prev index next >

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

Print this page




  75     public final boolean ciTime = getFlag("CITime", Boolean.class);
  76     public final boolean ciTimeEach = getFlag("CITimeEach", Boolean.class);
  77     public final boolean dontCompileHugeMethods = getFlag("DontCompileHugeMethods", Boolean.class);
  78     public final int hugeMethodLimit = getFlag("HugeMethodLimit", Integer.class);
  79     public final boolean printInlining = getFlag("PrintInlining", Boolean.class);
  80     public final boolean inline = getFlag("Inline", Boolean.class);
  81     public final boolean inlineNotify = versioned.inlineNotify;
  82     public final boolean useFastLocking = getFlag("JVMCIUseFastLocking", Boolean.class);
  83     public final boolean forceUnreachable = getFlag("ForceUnreachable", Boolean.class);
  84     public final int codeSegmentSize = getFlag("CodeCacheSegmentSize", Integer.class);
  85     public final boolean foldStableValues = getFlag("FoldStableValues", Boolean.class);
  86     public final int maxVectorSize = getFlag("MaxVectorSize", Integer.class);
  87 
  88     public final boolean verifyBeforeGC = getFlag("VerifyBeforeGC", Boolean.class);
  89     public final boolean verifyAfterGC = getFlag("VerifyAfterGC", Boolean.class);
  90 
  91     public final boolean useTLAB = getFlag("UseTLAB", Boolean.class);
  92     public final boolean useBiasedLocking = getFlag("UseBiasedLocking", Boolean.class);
  93     public final boolean usePopCountInstruction = getFlag("UsePopCountInstruction", Boolean.class);
  94     public final boolean useAESIntrinsics = getFlag("UseAESIntrinsics", Boolean.class);

  95     public final boolean useCRC32Intrinsics = getFlag("UseCRC32Intrinsics", Boolean.class);
  96     public final boolean useCRC32CIntrinsics = versioned.useCRC32CIntrinsics;
  97     public final boolean threadLocalHandshakes = getFlag("ThreadLocalHandshakes", Boolean.class, false);
  98 
  99     private final boolean useMultiplyToLenIntrinsic = getFlag("UseMultiplyToLenIntrinsic", Boolean.class);
 100     private final boolean useSHA1Intrinsics = getFlag("UseSHA1Intrinsics", Boolean.class);
 101     private final boolean useSHA256Intrinsics = getFlag("UseSHA256Intrinsics", Boolean.class);
 102     private final boolean useSHA512Intrinsics = getFlag("UseSHA512Intrinsics", Boolean.class);

 103     private final boolean useMontgomeryMultiplyIntrinsic = getFlag("UseMontgomeryMultiplyIntrinsic", Boolean.class, false);
 104     private final boolean useMontgomerySquareIntrinsic = getFlag("UseMontgomerySquareIntrinsic", Boolean.class, false);
 105     private final boolean useMulAddIntrinsic = getFlag("UseMulAddIntrinsic", Boolean.class, false);
 106     private final boolean useSquareToLenIntrinsic = getFlag("UseSquareToLenIntrinsic", Boolean.class, false);

 107 
 108     /*
 109      * These are methods because in some JDKs the flags are visible but the stubs themselves haven't
 110      * been exported so we have to check both if the flag is on and if we have the stub.
 111      */
 112     public boolean useMultiplyToLenIntrinsic() {
 113         return useMultiplyToLenIntrinsic && multiplyToLen != 0;
 114     }
 115 
 116     public boolean useSHA1Intrinsics() {
 117         return useSHA1Intrinsics && sha1ImplCompress != 0;
 118     }
 119 
 120     public boolean useSHA256Intrinsics() {
 121         return useSHA256Intrinsics && sha256ImplCompress != 0;
 122     }
 123 
 124     public boolean useSHA512Intrinsics() {
 125         return useSHA512Intrinsics && sha512ImplCompress != 0;




 126     }
 127 
 128     public boolean useMontgomeryMultiplyIntrinsic() {
 129         return useMontgomeryMultiplyIntrinsic && montgomeryMultiply != 0;
 130     }
 131 
 132     public boolean useMontgomerySquareIntrinsic() {
 133         return useMontgomerySquareIntrinsic && montgomerySquare != 0;
 134     }
 135 
 136     public boolean useMulAddIntrinsic() {
 137         return useMulAddIntrinsic && mulAdd != 0;
 138     }
 139 
 140     public boolean useSquareToLenIntrinsic() {
 141         return useSquareToLenIntrinsic && squareToLen != 0;
 142     }
 143 
 144     public boolean inlineNotify() {
 145         return inlineNotify && notifyAddress != 0;


 292 
 293     public final int fieldInfoAccessFlagsOffset = getConstant("FieldInfo::access_flags_offset", Integer.class);
 294     public final int fieldInfoNameIndexOffset = getConstant("FieldInfo::name_index_offset", Integer.class);
 295     public final int fieldInfoSignatureIndexOffset = getConstant("FieldInfo::signature_index_offset", Integer.class);
 296     public final int fieldInfoInitvalIndexOffset = getConstant("FieldInfo::initval_index_offset", Integer.class);
 297     public final int fieldInfoLowPackedOffset = getConstant("FieldInfo::low_packed_offset", Integer.class);
 298     public final int fieldInfoHighPackedOffset = getConstant("FieldInfo::high_packed_offset", Integer.class);
 299     public final int fieldInfoFieldSlots = getConstant("FieldInfo::field_slots", Integer.class);
 300 
 301     public final int fieldInfoTagSize = getConstant("FIELDINFO_TAG_SIZE", Integer.class);
 302 
 303     public final int jvmAccMonitorMatch = getConstant("JVM_ACC_MONITOR_MATCH", Integer.class);
 304     public final int jvmAccHasMonitorBytecodes = getConstant("JVM_ACC_HAS_MONITOR_BYTECODES", Integer.class);
 305     public final int jvmAccHasFinalizer = getConstant("JVM_ACC_HAS_FINALIZER", Integer.class);
 306     public final int jvmAccFieldInternal = getConstant("JVM_ACC_FIELD_INTERNAL", Integer.class);
 307     public final int jvmAccFieldStable = getConstant("JVM_ACC_FIELD_STABLE", Integer.class);
 308     public final int jvmAccFieldHasGenericSignature = getConstant("JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE", Integer.class);
 309     public final int jvmAccWrittenFlags = getConstant("JVM_ACC_WRITTEN_FLAGS", Integer.class);
 310     public final int jvmAccSynthetic = getConstant("JVM_ACC_SYNTHETIC", Integer.class);
 311 
 312     public final int jvmciCompileStateCanPostOnExceptionsOffset = getFieldOffset("JVMCIEnv::_jvmti_can_post_on_exceptions", Integer.class, "jbyte", Integer.MIN_VALUE);










 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 javaThreadReservedStackActivationOffset = versioned.javaThreadReservedStackActivationOffset;
 323 
 324     public boolean requiresReservedStackCheck(List<ResolvedJavaMethod> methods) {
 325         if (enableStackReservedZoneAddress != 0 && methods != null) {
 326             for (ResolvedJavaMethod method : methods) {
 327                 if (((HotSpotResolvedJavaMethod) method).hasReservedStackAccess()) {
 328                     return true;
 329                 }
 330             }
 331         }
 332         return false;


 355      */
 356     public final long dllLookup = getAddress("os::dll_lookup");
 357 
 358     /**
 359      * A pseudo-handle which when used as the first argument to {@link #dllLookup} means lookup will
 360      * return the first occurrence of the desired symbol using the default library search order. If
 361      * this field is {@value #INVALID_RTLD_DEFAULT_HANDLE}, then this capability is not supported on
 362      * the current platform.
 363      */
 364     public final long rtldDefault = getAddress("RTLD_DEFAULT", osName.equals("bsd") || osName.equals("linux") ? null : INVALID_RTLD_DEFAULT_HANDLE);
 365 
 366     /**
 367      * This field is used to pass exception objects into and out of the runtime system during
 368      * exception handling for compiled code.
 369      */
 370     public final int threadExceptionOopOffset = getFieldOffset("JavaThread::_exception_oop", Integer.class, "oop");
 371     public final int threadExceptionPcOffset = getFieldOffset("JavaThread::_exception_pc", Integer.class, "address");
 372     public final int pendingExceptionOffset = getFieldOffset("ThreadShadow::_pending_exception", Integer.class, "oop");
 373 
 374     public final int pendingDeoptimizationOffset = getFieldOffset("JavaThread::_pending_deoptimization", Integer.class, "int");
 375     public final int pendingFailedSpeculationOffset = getFieldOffset("JavaThread::_pending_failed_speculation", Integer.class, "long");
 376     public final int pendingTransferToInterpreterOffset = getFieldOffset("JavaThread::_pending_transfer_to_interpreter", Integer.class, "bool");
 377 
 378     private final int javaFrameAnchorLastJavaSpOffset = getFieldOffset("JavaFrameAnchor::_last_Java_sp", Integer.class, "intptr_t*");
 379     private final int javaFrameAnchorLastJavaPcOffset = getFieldOffset("JavaFrameAnchor::_last_Java_pc", Integer.class, "address");
 380 


















 381     public int threadLastJavaSpOffset() {
 382         return javaThreadAnchorOffset + javaFrameAnchorLastJavaSpOffset;
 383     }
 384 
 385     public int threadLastJavaPcOffset() {
 386         return javaThreadAnchorOffset + javaFrameAnchorLastJavaPcOffset;
 387     }
 388 
 389     public int threadLastJavaFpOffset() {
 390         assert osArch.equals("aarch64") || osArch.equals("amd64");
 391         return javaThreadAnchorOffset + getFieldOffset("JavaFrameAnchor::_last_Java_fp", Integer.class, "intptr_t*");
 392     }
 393 
 394     public int threadJavaFrameAnchorFlagsOffset() {
 395         assert osArch.equals("sparc");
 396         return javaThreadAnchorOffset + getFieldOffset("JavaFrameAnchor::_flags", Integer.class, "int");
 397     }
 398 
 399     public final int runtimeCallStackSize = getConstant("frame::arg_reg_save_area_bytes", Integer.class, intRequiredOnAMD64);
 400     public final int frameInterpreterFrameSenderSpOffset = getConstant("frame::interpreter_frame_sender_sp_offset", Integer.class, intRequiredOnAMD64);


 585 
 586     public final boolean cmsIncrementalMode = getFlag("CMSIncrementalMode", Boolean.class, false);
 587 
 588     public final long inlineCacheMissStub = getFieldValue("CompilerToVM::Data::SharedRuntime_ic_miss_stub", Long.class, "address");
 589     public final long handleWrongMethodStub = getFieldValue("CompilerToVM::Data::SharedRuntime_handle_wrong_method_stub", Long.class, "address");
 590 
 591     public final long handleDeoptStub = getFieldValue("CompilerToVM::Data::SharedRuntime_deopt_blob_unpack", Long.class, "address");
 592     public final long uncommonTrapStub = getFieldValue("CompilerToVM::Data::SharedRuntime_deopt_blob_uncommon_trap", Long.class, "address");
 593 
 594     public final long codeCacheLowBound = versioned.codeCacheLowBound;
 595     public final long codeCacheHighBound = versioned.codeCacheHighBound;
 596 
 597     public final long aescryptEncryptBlockStub = getFieldValue("StubRoutines::_aescrypt_encryptBlock", Long.class, "address");
 598     public final long aescryptDecryptBlockStub = getFieldValue("StubRoutines::_aescrypt_decryptBlock", Long.class, "address");
 599     public final long cipherBlockChainingEncryptAESCryptStub = getFieldValue("StubRoutines::_cipherBlockChaining_encryptAESCrypt", Long.class, "address");
 600     public final long cipherBlockChainingDecryptAESCryptStub = getFieldValue("StubRoutines::_cipherBlockChaining_decryptAESCrypt", Long.class, "address");
 601     public final long updateBytesCRC32Stub = getFieldValue("StubRoutines::_updateBytesCRC32", Long.class, "address");
 602     public final long crcTableAddress = getFieldValue("StubRoutines::_crc_table_adr", Long.class, "address");
 603 
 604     public final long sha1ImplCompress = getFieldValue("StubRoutines::_sha1_implCompress", Long.class, "address", 0L);
 605     public final long sha1ImplCompressMB = getFieldValue("StubRoutines::_sha1_implCompressMB", Long.class, "address", 0L);
 606     public final long sha256ImplCompress = getFieldValue("StubRoutines::_sha256_implCompress", Long.class, "address", 0L);
 607     public final long sha256ImplCompressMB = getFieldValue("StubRoutines::_sha256_implCompressMB", Long.class, "address", 0L);
 608     public final long sha512ImplCompress = getFieldValue("StubRoutines::_sha512_implCompress", Long.class, "address", 0L);
 609     public final long sha512ImplCompressMB = getFieldValue("StubRoutines::_sha512_implCompressMB", Long.class, "address", 0L);
 610     public final long multiplyToLen = getFieldValue("StubRoutines::_multiplyToLen", Long.class, "address", longRequiredOnAMD64);
 611 
 612     public final long counterModeAESCrypt = getFieldValue("StubRoutines::_counterMode_AESCrypt", Long.class, "address", 0L);
 613     public final long ghashProcessBlocks = getFieldValue("StubRoutines::_ghash_processBlocks", Long.class, "address", 0L);
 614     public final long crc32cTableTddr = getFieldValue("StubRoutines::_crc32c_table_addr", Long.class, "address", 0L);
 615     public final long updateBytesCRC32C = getFieldValue("StubRoutines::_updateBytesCRC32C", Long.class, "address", 0L);
 616     public final long updateBytesAdler32 = getFieldValue("StubRoutines::_updateBytesAdler32", Long.class, "address", 0L);
 617     public final long squareToLen = getFieldValue("StubRoutines::_squareToLen", Long.class, "address", longRequiredOnAMD64);
 618     public final long mulAdd = getFieldValue("StubRoutines::_mulAdd", Long.class, "address", longRequiredOnAMD64);
 619     public final long montgomeryMultiply = getFieldValue("StubRoutines::_montgomeryMultiply", Long.class, "address", longRequiredOnAMD64);
 620     public final long montgomerySquare = getFieldValue("StubRoutines::_montgomerySquare", Long.class, "address", longRequiredOnAMD64);
 621     public final long vectorizedMismatch = getFieldValue("StubRoutines::_vectorizedMismatch", Long.class, "address", 0L);
 622 
 623     public final long throwDelayedStackOverflowErrorEntry = versioned.throwDelayedStackOverflowErrorEntry;
 624 
 625     public final long jbyteArraycopy = getFieldValue("StubRoutines::_jbyte_arraycopy", Long.class, "address");
 626     public final long jshortArraycopy = getFieldValue("StubRoutines::_jshort_arraycopy", Long.class, "address");
 627     public final long jintArraycopy = getFieldValue("StubRoutines::_jint_arraycopy", Long.class, "address");
 628     public final long jlongArraycopy = getFieldValue("StubRoutines::_jlong_arraycopy", Long.class, "address");
 629     public final long oopArraycopy = getFieldValue("StubRoutines::_oop_arraycopy", Long.class, "address");




  75     public final boolean ciTime = getFlag("CITime", Boolean.class);
  76     public final boolean ciTimeEach = getFlag("CITimeEach", Boolean.class);
  77     public final boolean dontCompileHugeMethods = getFlag("DontCompileHugeMethods", Boolean.class);
  78     public final int hugeMethodLimit = getFlag("HugeMethodLimit", Integer.class);
  79     public final boolean printInlining = getFlag("PrintInlining", Boolean.class);
  80     public final boolean inline = getFlag("Inline", Boolean.class);
  81     public final boolean inlineNotify = versioned.inlineNotify;
  82     public final boolean useFastLocking = getFlag("JVMCIUseFastLocking", Boolean.class);
  83     public final boolean forceUnreachable = getFlag("ForceUnreachable", Boolean.class);
  84     public final int codeSegmentSize = getFlag("CodeCacheSegmentSize", Integer.class);
  85     public final boolean foldStableValues = getFlag("FoldStableValues", Boolean.class);
  86     public final int maxVectorSize = getFlag("MaxVectorSize", Integer.class);
  87 
  88     public final boolean verifyBeforeGC = getFlag("VerifyBeforeGC", Boolean.class);
  89     public final boolean verifyAfterGC = getFlag("VerifyAfterGC", Boolean.class);
  90 
  91     public final boolean useTLAB = getFlag("UseTLAB", Boolean.class);
  92     public final boolean useBiasedLocking = getFlag("UseBiasedLocking", Boolean.class);
  93     public final boolean usePopCountInstruction = getFlag("UsePopCountInstruction", Boolean.class);
  94     public final boolean useAESIntrinsics = getFlag("UseAESIntrinsics", Boolean.class);
  95     public final boolean useAESCTRIntrinsics = getFlag("UseAESCTRIntrinsics", Boolean.class, false);
  96     public final boolean useCRC32Intrinsics = getFlag("UseCRC32Intrinsics", Boolean.class);
  97     public final boolean useCRC32CIntrinsics = versioned.useCRC32CIntrinsics;
  98     public final boolean threadLocalHandshakes = getFlag("ThreadLocalHandshakes", Boolean.class, false);
  99 
 100     private final boolean useMultiplyToLenIntrinsic = getFlag("UseMultiplyToLenIntrinsic", Boolean.class);
 101     private final boolean useSHA1Intrinsics = getFlag("UseSHA1Intrinsics", Boolean.class);
 102     private final boolean useSHA256Intrinsics = getFlag("UseSHA256Intrinsics", Boolean.class);
 103     private final boolean useSHA512Intrinsics = getFlag("UseSHA512Intrinsics", Boolean.class);
 104     private final boolean useGHASHIntrinsics = getFlag("UseGHASHIntrinsics", Boolean.class, false);
 105     private final boolean useMontgomeryMultiplyIntrinsic = getFlag("UseMontgomeryMultiplyIntrinsic", Boolean.class, false);
 106     private final boolean useMontgomerySquareIntrinsic = getFlag("UseMontgomerySquareIntrinsic", Boolean.class, false);
 107     private final boolean useMulAddIntrinsic = getFlag("UseMulAddIntrinsic", Boolean.class, false);
 108     private final boolean useSquareToLenIntrinsic = getFlag("UseSquareToLenIntrinsic", Boolean.class, false);
 109     public final boolean useVectorizedMismatchIntrinsic = getFlag("UseVectorizedMismatchIntrinsic", Boolean.class, false);
 110 
 111     /*
 112      * These are methods because in some JDKs the flags are visible but the stubs themselves haven't
 113      * been exported so we have to check both if the flag is on and if we have the stub.
 114      */
 115     public boolean useMultiplyToLenIntrinsic() {
 116         return useMultiplyToLenIntrinsic && multiplyToLen != 0;
 117     }
 118 
 119     public boolean useSHA1Intrinsics() {
 120         return useSHA1Intrinsics && sha1ImplCompress != 0 && sha1ImplCompressMultiBlock != 0;
 121     }
 122 
 123     public boolean useSHA256Intrinsics() {
 124         return useSHA256Intrinsics && sha256ImplCompress != 0 && sha256ImplCompressMultiBlock != 0;
 125     }
 126 
 127     public boolean useSHA512Intrinsics() {
 128         return useSHA512Intrinsics && sha512ImplCompress != 0 && sha512ImplCompressMultiBlock != 0;
 129     }
 130 
 131     public boolean useGHASHIntrinsics() {
 132         return useGHASHIntrinsics && ghashProcessBlocks != 0;
 133     }
 134 
 135     public boolean useMontgomeryMultiplyIntrinsic() {
 136         return useMontgomeryMultiplyIntrinsic && montgomeryMultiply != 0;
 137     }
 138 
 139     public boolean useMontgomerySquareIntrinsic() {
 140         return useMontgomerySquareIntrinsic && montgomerySquare != 0;
 141     }
 142 
 143     public boolean useMulAddIntrinsic() {
 144         return useMulAddIntrinsic && mulAdd != 0;
 145     }
 146 
 147     public boolean useSquareToLenIntrinsic() {
 148         return useSquareToLenIntrinsic && squareToLen != 0;
 149     }
 150 
 151     public boolean inlineNotify() {
 152         return inlineNotify && notifyAddress != 0;


 299 
 300     public final int fieldInfoAccessFlagsOffset = getConstant("FieldInfo::access_flags_offset", Integer.class);
 301     public final int fieldInfoNameIndexOffset = getConstant("FieldInfo::name_index_offset", Integer.class);
 302     public final int fieldInfoSignatureIndexOffset = getConstant("FieldInfo::signature_index_offset", Integer.class);
 303     public final int fieldInfoInitvalIndexOffset = getConstant("FieldInfo::initval_index_offset", Integer.class);
 304     public final int fieldInfoLowPackedOffset = getConstant("FieldInfo::low_packed_offset", Integer.class);
 305     public final int fieldInfoHighPackedOffset = getConstant("FieldInfo::high_packed_offset", Integer.class);
 306     public final int fieldInfoFieldSlots = getConstant("FieldInfo::field_slots", Integer.class);
 307 
 308     public final int fieldInfoTagSize = getConstant("FIELDINFO_TAG_SIZE", Integer.class);
 309 
 310     public final int jvmAccMonitorMatch = getConstant("JVM_ACC_MONITOR_MATCH", Integer.class);
 311     public final int jvmAccHasMonitorBytecodes = getConstant("JVM_ACC_HAS_MONITOR_BYTECODES", Integer.class);
 312     public final int jvmAccHasFinalizer = getConstant("JVM_ACC_HAS_FINALIZER", Integer.class);
 313     public final int jvmAccFieldInternal = getConstant("JVM_ACC_FIELD_INTERNAL", Integer.class);
 314     public final int jvmAccFieldStable = getConstant("JVM_ACC_FIELD_STABLE", Integer.class);
 315     public final int jvmAccFieldHasGenericSignature = getConstant("JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE", Integer.class);
 316     public final int jvmAccWrittenFlags = getConstant("JVM_ACC_WRITTEN_FLAGS", Integer.class);
 317     public final int jvmAccSynthetic = getConstant("JVM_ACC_SYNTHETIC", Integer.class);
 318 
 319     public final int jvmciCompileStateCanPostOnExceptionsOffset = getJvmciCompileStateCanPostOnExceptionsOffset();
 320 
 321     // Integer.MIN_VALUE if not available
 322     private int getJvmciCompileStateCanPostOnExceptionsOffset() {
 323         int offset = getFieldOffset("JVMCICompileState::_jvmti_can_post_on_exceptions", Integer.class, "jbyte", Integer.MIN_VALUE);
 324         if (offset == Integer.MIN_VALUE) {
 325             // JDK 12
 326             offset = getFieldOffset("JVMCIEnv::_jvmti_can_post_on_exceptions", Integer.class, "jbyte", Integer.MIN_VALUE);
 327         }
 328         return offset;
 329     }
 330 
 331     public final int threadTlabOffset = getFieldOffset("Thread::_tlab", Integer.class, "ThreadLocalAllocBuffer");
 332     public final int javaThreadAnchorOffset = getFieldOffset("JavaThread::_anchor", Integer.class, "JavaFrameAnchor");
 333     public final int javaThreadShouldPostOnExceptionsFlagOffset = getFieldOffset("JavaThread::_should_post_on_exceptions_flag", Integer.class, "int", Integer.MIN_VALUE);
 334     public final int threadObjectOffset = getFieldOffset("JavaThread::_threadObj", Integer.class, "oop");
 335     public final int osThreadOffset = getFieldOffset("JavaThread::_osthread", Integer.class, "OSThread*");
 336     public final int threadIsMethodHandleReturnOffset = getFieldOffset("JavaThread::_is_method_handle_return", Integer.class, "int");
 337     public final int threadObjectResultOffset = getFieldOffset("JavaThread::_vm_result", Integer.class, "oop");
 338     public final int jvmciCountersThreadOffset = getFieldOffset("JavaThread::_jvmci_counters", Integer.class, "jlong*");
 339     public final int javaThreadReservedStackActivationOffset = versioned.javaThreadReservedStackActivationOffset;
 340 
 341     public boolean requiresReservedStackCheck(List<ResolvedJavaMethod> methods) {
 342         if (enableStackReservedZoneAddress != 0 && methods != null) {
 343             for (ResolvedJavaMethod method : methods) {
 344                 if (((HotSpotResolvedJavaMethod) method).hasReservedStackAccess()) {
 345                     return true;
 346                 }
 347             }
 348         }
 349         return false;


 372      */
 373     public final long dllLookup = getAddress("os::dll_lookup");
 374 
 375     /**
 376      * A pseudo-handle which when used as the first argument to {@link #dllLookup} means lookup will
 377      * return the first occurrence of the desired symbol using the default library search order. If
 378      * this field is {@value #INVALID_RTLD_DEFAULT_HANDLE}, then this capability is not supported on
 379      * the current platform.
 380      */
 381     public final long rtldDefault = getAddress("RTLD_DEFAULT", osName.equals("bsd") || osName.equals("linux") ? null : INVALID_RTLD_DEFAULT_HANDLE);
 382 
 383     /**
 384      * This field is used to pass exception objects into and out of the runtime system during
 385      * exception handling for compiled code.
 386      */
 387     public final int threadExceptionOopOffset = getFieldOffset("JavaThread::_exception_oop", Integer.class, "oop");
 388     public final int threadExceptionPcOffset = getFieldOffset("JavaThread::_exception_pc", Integer.class, "address");
 389     public final int pendingExceptionOffset = getFieldOffset("ThreadShadow::_pending_exception", Integer.class, "oop");
 390 
 391     public final int pendingDeoptimizationOffset = getFieldOffset("JavaThread::_pending_deoptimization", Integer.class, "int");

 392     public final int pendingTransferToInterpreterOffset = getFieldOffset("JavaThread::_pending_transfer_to_interpreter", Integer.class, "bool");
 393 
 394     private final int javaFrameAnchorLastJavaSpOffset = getFieldOffset("JavaFrameAnchor::_last_Java_sp", Integer.class, "intptr_t*");
 395     private final int javaFrameAnchorLastJavaPcOffset = getFieldOffset("JavaFrameAnchor::_last_Java_pc", Integer.class, "address");
 396 
 397     public final int pendingFailedSpeculationOffset;
 398     {
 399         String name = "JavaThread::_pending_failed_speculation";
 400         int offset = -1;
 401         try {
 402             offset = getFieldOffset(name, Integer.class, "jlong");
 403         } catch (JVMCIError e) {
 404             try {
 405                 offset = getFieldOffset(name, Integer.class, "long");
 406             } catch (JVMCIError e2) {
 407             }
 408         }
 409         if (offset == -1) {
 410             throw new JVMCIError("cannot get offset of field " + name + " with type long or jlong");
 411         }
 412         pendingFailedSpeculationOffset = offset;
 413     }
 414 
 415     public int threadLastJavaSpOffset() {
 416         return javaThreadAnchorOffset + javaFrameAnchorLastJavaSpOffset;
 417     }
 418 
 419     public int threadLastJavaPcOffset() {
 420         return javaThreadAnchorOffset + javaFrameAnchorLastJavaPcOffset;
 421     }
 422 
 423     public int threadLastJavaFpOffset() {
 424         assert osArch.equals("aarch64") || osArch.equals("amd64");
 425         return javaThreadAnchorOffset + getFieldOffset("JavaFrameAnchor::_last_Java_fp", Integer.class, "intptr_t*");
 426     }
 427 
 428     public int threadJavaFrameAnchorFlagsOffset() {
 429         assert osArch.equals("sparc");
 430         return javaThreadAnchorOffset + getFieldOffset("JavaFrameAnchor::_flags", Integer.class, "int");
 431     }
 432 
 433     public final int runtimeCallStackSize = getConstant("frame::arg_reg_save_area_bytes", Integer.class, intRequiredOnAMD64);
 434     public final int frameInterpreterFrameSenderSpOffset = getConstant("frame::interpreter_frame_sender_sp_offset", Integer.class, intRequiredOnAMD64);


 619 
 620     public final boolean cmsIncrementalMode = getFlag("CMSIncrementalMode", Boolean.class, false);
 621 
 622     public final long inlineCacheMissStub = getFieldValue("CompilerToVM::Data::SharedRuntime_ic_miss_stub", Long.class, "address");
 623     public final long handleWrongMethodStub = getFieldValue("CompilerToVM::Data::SharedRuntime_handle_wrong_method_stub", Long.class, "address");
 624 
 625     public final long handleDeoptStub = getFieldValue("CompilerToVM::Data::SharedRuntime_deopt_blob_unpack", Long.class, "address");
 626     public final long uncommonTrapStub = getFieldValue("CompilerToVM::Data::SharedRuntime_deopt_blob_uncommon_trap", Long.class, "address");
 627 
 628     public final long codeCacheLowBound = versioned.codeCacheLowBound;
 629     public final long codeCacheHighBound = versioned.codeCacheHighBound;
 630 
 631     public final long aescryptEncryptBlockStub = getFieldValue("StubRoutines::_aescrypt_encryptBlock", Long.class, "address");
 632     public final long aescryptDecryptBlockStub = getFieldValue("StubRoutines::_aescrypt_decryptBlock", Long.class, "address");
 633     public final long cipherBlockChainingEncryptAESCryptStub = getFieldValue("StubRoutines::_cipherBlockChaining_encryptAESCrypt", Long.class, "address");
 634     public final long cipherBlockChainingDecryptAESCryptStub = getFieldValue("StubRoutines::_cipherBlockChaining_decryptAESCrypt", Long.class, "address");
 635     public final long updateBytesCRC32Stub = getFieldValue("StubRoutines::_updateBytesCRC32", Long.class, "address");
 636     public final long crcTableAddress = getFieldValue("StubRoutines::_crc_table_adr", Long.class, "address");
 637 
 638     public final long sha1ImplCompress = getFieldValue("StubRoutines::_sha1_implCompress", Long.class, "address", 0L);
 639     public final long sha1ImplCompressMultiBlock = getFieldValue("StubRoutines::_sha1_implCompressMB", Long.class, "address", 0L);
 640     public final long sha256ImplCompress = getFieldValue("StubRoutines::_sha256_implCompress", Long.class, "address", 0L);
 641     public final long sha256ImplCompressMultiBlock = getFieldValue("StubRoutines::_sha256_implCompressMB", Long.class, "address", 0L);
 642     public final long sha512ImplCompress = getFieldValue("StubRoutines::_sha512_implCompress", Long.class, "address", 0L);
 643     public final long sha512ImplCompressMultiBlock = getFieldValue("StubRoutines::_sha512_implCompressMB", Long.class, "address", 0L);
 644     public final long multiplyToLen = getFieldValue("StubRoutines::_multiplyToLen", Long.class, "address", longRequiredOnAMD64);
 645 
 646     public final long counterModeAESCrypt = getFieldValue("StubRoutines::_counterMode_AESCrypt", Long.class, "address", 0L);
 647     public final long ghashProcessBlocks = getFieldValue("StubRoutines::_ghash_processBlocks", Long.class, "address", 0L);
 648     public final long crc32cTableTddr = getFieldValue("StubRoutines::_crc32c_table_addr", Long.class, "address", 0L);
 649     public final long updateBytesCRC32C = getFieldValue("StubRoutines::_updateBytesCRC32C", Long.class, "address", 0L);
 650     public final long updateBytesAdler32 = getFieldValue("StubRoutines::_updateBytesAdler32", Long.class, "address", 0L);
 651     public final long squareToLen = getFieldValue("StubRoutines::_squareToLen", Long.class, "address", longRequiredOnAMD64);
 652     public final long mulAdd = getFieldValue("StubRoutines::_mulAdd", Long.class, "address", longRequiredOnAMD64);
 653     public final long montgomeryMultiply = getFieldValue("StubRoutines::_montgomeryMultiply", Long.class, "address", longRequiredOnAMD64);
 654     public final long montgomerySquare = getFieldValue("StubRoutines::_montgomerySquare", Long.class, "address", longRequiredOnAMD64);
 655     public final long vectorizedMismatch = getFieldValue("StubRoutines::_vectorizedMismatch", Long.class, "address", 0L);
 656 
 657     public final long throwDelayedStackOverflowErrorEntry = versioned.throwDelayedStackOverflowErrorEntry;
 658 
 659     public final long jbyteArraycopy = getFieldValue("StubRoutines::_jbyte_arraycopy", Long.class, "address");
 660     public final long jshortArraycopy = getFieldValue("StubRoutines::_jshort_arraycopy", Long.class, "address");
 661     public final long jintArraycopy = getFieldValue("StubRoutines::_jint_arraycopy", Long.class, "address");
 662     public final long jlongArraycopy = getFieldValue("StubRoutines::_jlong_arraycopy", Long.class, "address");
 663     public final long oopArraycopy = getFieldValue("StubRoutines::_oop_arraycopy", Long.class, "address");


< prev index next >