Search in sources :

Example 6 with JMXToLibGraal

use of org.graalvm.compiler.hotspot.management.libgraal.annotation.JMXToLibGraal in project graal by oracle.

the class JMXToLibGraalEntryPoints method pollRegistrations.

/**
 * Returns the pending {@link DynamicMBean} registrations.
 */
@JMXToLibGraal(PollRegistrations)
@CEntryPoint(name = "Java_org_graalvm_compiler_hotspot_management_JMXToLibGraalCalls_pollRegistrations")
@SuppressWarnings({ "try", "unused" })
static JNI.JLongArray pollRegistrations(JNI.JNIEnv env, JNI.JClass hsClazz, @CEntryPoint.IsolateThreadContext long isolateThreadId) {
    JNIMethodScope scope = LibGraalUtil.openScope(JMXToLibGraalEntryPoints.class, PollRegistrations, env);
    try (JNIMethodScope s = scope) {
        List<MBeanProxy<?>> registrations = MBeanProxy.drainRegistrations();
        JNI.JLongArray res = JNIUtil.NewLongArray(env, registrations.size());
        CLongPointer elems = JNIUtil.GetLongArrayElements(env, res, WordFactory.nullPointer());
        try {
            ObjectHandles globalHandles = ObjectHandles.getGlobal();
            for (int i = 0; i < registrations.size(); i++) {
                long handle = globalHandles.create(registrations.get(i)).rawValue();
                elems.write(i, handle);
            }
        } finally {
            JNIUtil.ReleaseLongArrayElements(env, res, elems, JNI.JArray.MODE_WRITE_RELEASE);
        }
        scope.setObjectResult(res);
    }
    return scope.getObjectResult();
}
Also used : ObjectHandles(org.graalvm.nativeimage.ObjectHandles) JNI(org.graalvm.jniutils.JNI) JNIMethodScope(org.graalvm.jniutils.JNIMethodScope) CLongPointer(org.graalvm.nativeimage.c.type.CLongPointer) CEntryPoint(org.graalvm.nativeimage.c.function.CEntryPoint) CEntryPoint(org.graalvm.nativeimage.c.function.CEntryPoint) JMXToLibGraal(org.graalvm.compiler.hotspot.management.libgraal.annotation.JMXToLibGraal)

Example 7 with JMXToLibGraal

use of org.graalvm.compiler.hotspot.management.libgraal.annotation.JMXToLibGraal in project graal by oracle.

the class JMXToLibGraalEntryPoints method getMBeanInfo.

/**
 * Returns the {@link MBeanInfo} encoded as a byte array using {@link OptionsEncoder}.
 */
@JMXToLibGraal(GetMBeanInfo)
@CEntryPoint(name = "Java_org_graalvm_compiler_hotspot_management_JMXToLibGraalCalls_getMBeanInfo")
@SuppressWarnings({ "try", "unused" })
static JNI.JByteArray getMBeanInfo(JNI.JNIEnv env, JNI.JClass hsClazz, @CEntryPoint.IsolateThreadContext long isolateThreadId, long handle) {
    JNIMethodScope scope = LibGraalUtil.openScope(JMXToLibGraalEntryPoints.class, GetMBeanInfo, env);
    try (JNIMethodScope s = scope) {
        ObjectHandles globalHandles = ObjectHandles.getGlobal();
        MBeanProxy<?> registration = globalHandles.get(WordFactory.pointer(handle));
        MBeanInfo info = registration.getBean().getMBeanInfo();
        Map<String, Object> map = new LinkedHashMap<>();
        map.put("bean.class", info.getClassName());
        map.put("bean.description", info.getDescription());
        for (MBeanAttributeInfo attr : info.getAttributes()) {
            putAttributeInfo(map, attr);
        }
        int opCounter = 0;
        for (MBeanOperationInfo op : info.getOperations()) {
            putOperationInfo(map, op, ++opCounter);
        }
        scope.setObjectResult(mapToRaw(env, map));
    }
    return scope.getObjectResult();
}
Also used : ObjectHandles(org.graalvm.nativeimage.ObjectHandles) GetMBeanInfo(org.graalvm.compiler.hotspot.management.libgraal.annotation.JMXToLibGraal.Id.GetMBeanInfo) MBeanInfo(javax.management.MBeanInfo) JNIMethodScope(org.graalvm.jniutils.JNIMethodScope) MBeanOperationInfo(javax.management.MBeanOperationInfo) MBeanAttributeInfo(javax.management.MBeanAttributeInfo) CEntryPoint(org.graalvm.nativeimage.c.function.CEntryPoint) LinkedHashMap(java.util.LinkedHashMap) CEntryPoint(org.graalvm.nativeimage.c.function.CEntryPoint) JMXToLibGraal(org.graalvm.compiler.hotspot.management.libgraal.annotation.JMXToLibGraal)

Aggregations

JMXToLibGraal (org.graalvm.compiler.hotspot.management.libgraal.annotation.JMXToLibGraal)7 JNIMethodScope (org.graalvm.jniutils.JNIMethodScope)7 CEntryPoint (org.graalvm.nativeimage.c.function.CEntryPoint)7 ObjectHandles (org.graalvm.nativeimage.ObjectHandles)4 AttributeList (javax.management.AttributeList)3 LinkedHashMap (java.util.LinkedHashMap)2 Attribute (javax.management.Attribute)2 JNI (org.graalvm.jniutils.JNI)2 CLongPointer (org.graalvm.nativeimage.c.type.CLongPointer)2 HashMap (java.util.HashMap)1 Map (java.util.Map)1 MBeanAttributeInfo (javax.management.MBeanAttributeInfo)1 MBeanException (javax.management.MBeanException)1 MBeanInfo (javax.management.MBeanInfo)1 MBeanOperationInfo (javax.management.MBeanOperationInfo)1 ReflectionException (javax.management.ReflectionException)1 GetMBeanInfo (org.graalvm.compiler.hotspot.management.libgraal.annotation.JMXToLibGraal.Id.GetMBeanInfo)1