Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8172970

TESTBUG: need test coverage for the JVMTI functions allowed in the start phase

    Details

    • Type: Enhancement
    • Status: Resolved
    • Priority: P2
    • Resolution: Fixed
    • Affects Version/s: 9
    • Fix Version/s: 10
    • Component/s: hotspot
    • Labels:
    • Subcomponent:
    • Resolved In Build:
      team
    • CPU:
      generic
    • OS:
      generic

      Description

      It was discovered in the review of the 8172261 that there are no test coverage for the JVM TI functions allowed in the start phase. It is especially important to have such coverage for the early start phase when the can_generate_early_vmstart capability was possessed.

        Issue Links

          Activity

          Hide
          sspitsyn Serguei Spitsyn added a comment - - edited
          The following JVMTI spec fragment lists the functions that operate in the start phase.

          The following functions operate in the start or live phases:
              GetCurrentThread
              SetThreadLocalStorage
              GetThreadLocalStorage
              GetTag
              SetTag
              GetClassSignature
              GetClassStatus
              GetSourceFileName
              GetClassModifiers
              GetClassMethods
              GetClassFields
              GetImplementedInterfaces
              GetClassVersionNumbers
              GetConstantPool
              IsInterface
              IsArrayClass
              IsModifiableClass
              GetClassLoader
              GetSourceDebugExtension
              GetObjectSize
              GetObjectHashCode
              GetFieldName
              GetFieldDeclaringClass
              GetFieldModifiers
              IsFieldSynthetic
              GetMethodName
              GetMethodDeclaringClass
              GetMethodModifiers
              GetMaxLocals
              GetArgumentsSize
              GetLineNumberTable
              GetMethodLocation
              GetBytecodes
              IsMethodNative
              IsMethodSynthetic
              IsMethodObsolete
              SetJNIFunctionTable
              GetJNIFunctionTable
              GetCurrentThreadCpuTimerInfo
              GetCurrentThreadCpuTime

          It would be enough to cover most of the functions above, not necessarily all of them.
          I think, it is Ok to not cover the following functions from the above list:
              SetJNIFunctionTable
              GetJNIFunctionTable
              GetCurrentThreadCpuTimerInfo
              GetCurrentThreadCpuTime
              GetSourceDebugExtension
              GetImplementedInterfaces
              GetClassVersionNumbers
              GetConstantPool
              GetClassLoader
              GetTag
              SetTag
              GetObjectSize
              GetObjectHashCode
              GetLineNumberTable
              GetMethodLocation
              GetBytecodes

          The functions that operate in any phase do not have to be covered by this enhancement.


          Show
          sspitsyn Serguei Spitsyn added a comment - - edited The following JVMTI spec fragment lists the functions that operate in the start phase. The following functions operate in the start or live phases:     GetCurrentThread     SetThreadLocalStorage     GetThreadLocalStorage     GetTag     SetTag     GetClassSignature     GetClassStatus     GetSourceFileName     GetClassModifiers     GetClassMethods     GetClassFields     GetImplementedInterfaces     GetClassVersionNumbers     GetConstantPool     IsInterface     IsArrayClass     IsModifiableClass     GetClassLoader     GetSourceDebugExtension     GetObjectSize     GetObjectHashCode     GetFieldName     GetFieldDeclaringClass     GetFieldModifiers     IsFieldSynthetic     GetMethodName     GetMethodDeclaringClass     GetMethodModifiers     GetMaxLocals     GetArgumentsSize     GetLineNumberTable     GetMethodLocation     GetBytecodes     IsMethodNative     IsMethodSynthetic     IsMethodObsolete     SetJNIFunctionTable     GetJNIFunctionTable     GetCurrentThreadCpuTimerInfo     GetCurrentThreadCpuTime It would be enough to cover most of the functions above, not necessarily all of them. I think, it is Ok to not cover the following functions from the above list:     SetJNIFunctionTable     GetJNIFunctionTable     GetCurrentThreadCpuTimerInfo     GetCurrentThreadCpuTime     GetSourceDebugExtension     GetImplementedInterfaces     GetClassVersionNumbers     GetConstantPool     GetClassLoader     GetTag     SetTag     GetObjectSize     GetObjectHashCode     GetLineNumberTable     GetMethodLocation     GetBytecodes The functions that operate in any phase do not have to be covered by this enhancement.
          Hide
          hgupdate HG Updates added a comment -
          URL: http://hg.openjdk.java.net/jdk10/hs/hotspot/rev/5640fb7e05cd
          User: sspitsyn
          Date: 2017-05-03 03:41:23 +0000
          Show
          hgupdate HG Updates added a comment - URL: http://hg.openjdk.java.net/jdk10/hs/hotspot/rev/5640fb7e05cd User: sspitsyn Date: 2017-05-03 03:41:23 +0000

            People

            • Assignee:
              sspitsyn Serguei Spitsyn
              Reporter:
              sspitsyn Serguei Spitsyn
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: