hprof_util.h

来自「一个小公司要求给写的很简单的任务管理系统。」· C头文件 代码 · 共 191 行

H
191
字号
/* * @(#)hprof_util.h	1.29 06/01/28 *  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: *  * -Redistribution of source code must retain the above copyright notice, this *  list of conditions and the following disclaimer. *  * -Redistribution in binary form must reproduce the above copyright notice,  *  this list of conditions and the following disclaimer in the documentation *  and/or other materials provided with the distribution. *  * Neither the name of Sun Microsystems, Inc. or the names of contributors may  * be used to endorse or promote products derived from this software without  * specific prior written permission. *  * This software is provided "AS IS," without a warranty of any kind. ALL  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN") * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. *  * You acknowledge that this software is not designed, licensed or intended * for use in the design, construction, operation or maintenance of any * nuclear facility. */#ifndef HPROF_UTIL_H#define HPROF_UTIL_H/* Macros that protect code from accidently using a local ref improperly */#define WITH_LOCAL_REFS(env, number)            \    {                                           \        JNIEnv *_env = (env);                   \        pushLocalFrame(_env, number);           \        { /* BEGINNING OF WITH SCOPE */#define END_WITH_LOCAL_REFS                     \        } /* END OF WITH SCOPE */               \        popLocalFrame(_env, NULL);              \    }/* Macro to check for exceptions after JNI calls. */#define CHECK_EXCEPTIONS(env)                                           \    {                                                                   \        JNIEnv *_env = (env);                                           \        jobject _exception;                                             \        _exception = exceptionOccurred(_env);                           \        if ( _exception != NULL ) {                                     \            exceptionDescribe(_env);                                    \            HPROF_ERROR(JNI_TRUE, "Unexpected Exception found beforehand");\        }                                                               \        {#define END_CHECK_EXCEPTIONS                                            \        }                                                               \        _exception = exceptionOccurred(_env);                           \        if ( _exception != NULL ) {                                     \            exceptionDescribe(_env);                                    \            HPROF_ERROR(JNI_TRUE, "Unexpected Exception found afterward");\        }                                                               \    }JNIEnv *   getEnv(void);/* JNI support functions */jobject    newGlobalReference(JNIEnv *env, jobject object);jobject    newWeakGlobalReference(JNIEnv *env, jobject object);void       deleteGlobalReference(JNIEnv *env, jobject object);jobject           newLocalReference(JNIEnv *env, jobject object);void           deleteLocalReference(JNIEnv *env, jobject object);void       deleteWeakGlobalReference(JNIEnv *env, jobject object);jclass     getObjectClass(JNIEnv *env, jobject object);jmethodID  getMethodID(JNIEnv *env, jclass clazz, const char* name,                         const char *sig);jclass     getSuperclass(JNIEnv *env, jclass klass);jmethodID  getStaticMethodID(JNIEnv *env, jclass clazz, const char* name,                         const char *sig);jfieldID   getStaticFieldID(JNIEnv *env, jclass clazz, const char* name,                         const char *sig);jclass     findClass(JNIEnv *env, const char *name);void       setStaticIntField(JNIEnv *env, jclass clazz, jfieldID field,                         jint value);jboolean   isSameObject(JNIEnv *env, jobject o1, jobject o2);void       pushLocalFrame(JNIEnv *env, jint capacity);void       popLocalFrame(JNIEnv *env, jobject ret);jobject    exceptionOccurred(JNIEnv *env);void       exceptionDescribe(JNIEnv *env);void       exceptionClear(JNIEnv *env);void       registerNatives(JNIEnv *env, jclass clazz,                         JNINativeMethod *methods, jint count);/* More JVMTI support functions */char *    getErrorName(jvmtiError error_number);jvmtiPhase getPhase(void);char *    phaseString(jvmtiPhase phase);void      disposeEnvironment(void);jlong     getObjectSize(jobject object);jobject   getClassLoader(jclass klass);jint      getClassStatus(jclass klass);jlong     getTag(jobject object);void      setTag(jobject object, jlong tag);void      getObjectMonitorUsage(jobject object, jvmtiMonitorUsage *uinfo);void      getOwnedMonitorInfo(jthread thread, jobject **ppobjects,                         jint *pcount);void      getSystemProperty(const char *name, char **value);void      getClassSignature(jclass klass, char**psignature,                         char **pgeneric_signature);void      getSourceFileName(jclass klass, char** src_name_ptr);jvmtiPrimitiveType sigToPrimType(char *sig);int       sigToPrimSize(char *sig);char      primTypeToSigChar(jvmtiPrimitiveType primType);void      getAllClassFieldInfo(JNIEnv *env, jclass klass,                         jint* field_count_ptr, FieldInfo** fields_ptr);void      getMethodName(jmethodID method, char** name_ptr,                         char** signature_ptr);void      getMethodClass(jmethodID method, jclass *pclazz);jboolean  isMethodNative(jmethodID method);void      getPotentialCapabilities(jvmtiCapabilities *capabilities);void      addCapabilities(jvmtiCapabilities *capabilities);void      setEventCallbacks(jvmtiEventCallbacks *pcallbacks);void      setEventNotificationMode(jvmtiEventMode mode, jvmtiEvent event,                         jthread thread);void *    getThreadLocalStorage(jthread thread);void      setThreadLocalStorage(jthread thread, void *ptr);void      getThreadState(jthread thread, jint *threadState);void      getThreadInfo(jthread thread, jvmtiThreadInfo *info);void      getThreadGroupInfo(jthreadGroup thread_group, jvmtiThreadGroupInfo *info);void      getLoadedClasses(jclass **ppclasses, jint *pcount);jint      getLineNumber(jmethodID method, jlocation location);jlong     getMaxMemory(JNIEnv *env);void      createAgentThread(JNIEnv *env, const char *name,                         jvmtiStartFunction func);jlong     getThreadCpuTime(jthread thread);void      getStackTrace(jthread thread, jvmtiFrameInfo *pframes, jint depth,                         jint *pcount);void      getThreadListStackTraces(jint count, jthread *threads,                         jint depth, jvmtiStackInfo **stack_info);void      getFrameCount(jthread thread, jint *pcount);void      followReferences(jvmtiHeapCallbacks *pHeapCallbacks, void *user_data);/* GC control */void      runGC(void);/* Get initial JVMTI environment */void      getJvmti(void);/* Get current runtime JVMTI version */jint      jvmtiVersion(void);/* Raw monitor functions */jrawMonitorID createRawMonitor(const char *str);void          rawMonitorEnter(jrawMonitorID m);void          rawMonitorWait(jrawMonitorID m, jlong pause_time);void          rawMonitorNotifyAll(jrawMonitorID m);void          rawMonitorExit(jrawMonitorID m);void          destroyRawMonitor(jrawMonitorID m);/* JVMTI alloc/dealloc */void *        jvmtiAllocate(int size);void          jvmtiDeallocate(void *ptr);/* System malloc/free */void *        hprof_malloc(int size);void          hprof_free(void *ptr);#include "debug_malloc.h"#ifdef DEBUG    void *        hprof_debug_malloc(int size, char *file, int line);    void          hprof_debug_free(void *ptr, char *file, int line);    #define HPROF_MALLOC(size)  hprof_debug_malloc(size, __FILE__, __LINE__)    #define HPROF_FREE(ptr)     hprof_debug_free(ptr, __FILE__, __LINE__)#else    #define HPROF_MALLOC(size)  hprof_malloc(size)    #define HPROF_FREE(ptr)     hprof_free(ptr)#endif#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?