You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Ivan Popov (JIRA)" <ji...@apache.org> on 2007/07/08 07:31:06 UTC

[jira] Created: (HARMONY-4390) [drlvm][jvmti] provide compatible JVMTI extension for class unload event

[drlvm][jvmti] provide compatible JVMTI extension for class unload event
------------------------------------------------------------------------

                 Key: HARMONY-4390
                 URL: https://issues.apache.org/jira/browse/HARMONY-4390
             Project: Harmony
          Issue Type: New Feature
          Components: JDK
            Reporter: Ivan Popov


JVMTI spec does not include class unload event, but for JDI and JDWP specification this event is specified as one of basic events. RI provides JVMTI extension for reporting class unload event. To support this event in Harmony, JDWP agent uses such extension (HARMONY-2891), which should be provided by DRLVM to complete JPDA support.

JVMTI extension functions can be used to explore extensions provided by Sun and JRockit VM, here is gathered info:

----------------------------------------------------------------

sun-jre1.5.0_09-win-ia32:

JVMTI version: 1.0.36
Found JVMTI extension functions: 1
  func 0
    id:     com.sun.hotspot.functions.IsClassUnloadingEnabled
    desc:   Tell if class unloading is enabled (-noclassgc)
    params: 1
       param #0
         name:    IsClassUnloadingEnabled
         kind:    96/JVMTI_KIND_OUT
         type:    108/JVMTI_TYPE_JBOOLEAN
         null_ok: 0
    errors: 0
Found JVMTI extension events: 1
  event 0
    id:     com.sun.hotspot.events.ClassUnload
    desc:   CLASS_UNLOAD event
    index:  49
    params: 3
       param #0
         name:    JNI Environment
         kind:    91/JVMTI_KIND_IN
         type:    117/JVMTI_TYPE_JNIENV
         null_ok: 0
       param #1
         name:    Thread
         kind:    91/JVMTI_KIND_IN
         type:    110/JVMTI_TYPE_JTHREAD
         null_ok: 0
       param #2
         name:    Class
         kind:    91/JVMTI_KIND_IN
         type:    111/JVMTI_TYPE_JCLASS
         null_ok: 0

----------------------------------------------------------------

jrockit-R26.4.0-jre1.5.0_06-win-ia32:

JVMTI version: 1.0.33
Found JVMTI extension functions: 1
  func 0
    id:     jrockitPrettyPrintThreadState
    desc:   Takes the result of a thread state query and prints a text representation into the supplied char buffer.
    params: 3
       param #0
         name:    Thread State
         kind:    91/JVMTI_KIND_IN
         type:    104/JVMTI_TYPE_JINT
         null_ok: 1
       param #1
         name:    Result Buffer
         kind:    97/JVMTI_KIND_OUT_BUF
         type:    115/JVMTI_TYPE_CCHAR
         null_ok: 0
       param #2
         name:    Result Buffer Size
         kind:    91/JVMTI_KIND_IN
         type:    104/JVMTI_TYPE_JINT
         null_ok: 0
    errors: 0
Found JVMTI extension events: 0

----------------------------------------------------------------

Current implementation of JDWP agent (HARMONY-2891) uses only "com.sun.hotspot.events.ClassUnload" event (if provided) and does not use "com.sun.hotspot.functions.IsClassUnloadingEnabled". 

Unfortunately, there are no formal specifications for these extensions and any limitations for their usage. Simple experiments showed that invoking JVMTI function GetClassSignature() for a class passed to "com.sun.hotspot.events.ClassUnload" event callback in Sun's JRE 1.5 and 1.6 leads to JVMTI error 115 (JVMTI_ERROR_UNATTACHED_THREAD) and further crash in jvm.dll, which looks like JVM bug. BEA's JRockit 1.5 does not provide any extensions for ClassUnload event.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.