/** *@briefEnumeratorforthetypesofnotifications
*/ typedefenum iJIT_jvm_event
{
iJVM_EVENT_TYPE_SHUTDOWN = 2, /**<\brief Send this to shutdown the agent.
* Use NULL for event data. */
iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED = 13, /**<\brief Send when dynamic code is *JITcompiledandloadedinto *memorybytheJITengine,but *beforethecodeisexecuted. *UseiJIT_Method_Loadasevent
* data. */ /** @cond exclude_from_documentation */
iJVM_EVENT_TYPE_METHOD_UNLOAD_START, /**<\brief Send when compiled dynamic *codeisbeingunloadedfrommemory.
* Use iJIT_Method_Load as event data.*/ /** @endcond */
iJVM_EVENT_TYPE_METHOD_UPDATE, /**<\brief Send to provide new content for *apreviouslyreporteddynamiccode. *Thepreviouscontentwillbeinvalidated *startingfromthetimeofthenotification. *UseiJIT_Method_Loadaseventdatabut *requiredfieldsarefollowing: *-method_ididentifythecodetoupdate. *-method_load_addressspecifystartaddress *withinidentifiedcoderange *whereupdateshouldbestarted. *-method_sizespecifylengthofupdatedcode
* range. */
iJVM_EVENT_TYPE_METHOD_INLINE_LOAD_FINISHED, /**<\brief Send when an inline dynamic *codeisJITcompiledandloaded *intomemorybytheJITengine, *butbeforetheparentcoderegion *startsexecuting.
* Use iJIT_Method_Inline_Load as event data.*/
iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED_V2 = 21, /**<\brief Send when a dynamic code is *JITcompiledandloadedinto *memorybytheJITengine,but *beforethecodeisexecuted.
* Use iJIT_Method_Load_V2 as event data. */
iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED_V3 /**<\brief Send when a dynamic code is *JITcompiledandloadedinto *memorybytheJITengine,but *beforethecodeisexecuted.
* Use iJIT_Method_Load_V3 as event data. */
} iJIT_JVM_EVENT;
/** *@briefEnumeratorfortheagent'smode
*/ typedefenum _iJIT_IsProfilingActiveFlags
{
iJIT_NOTHING_RUNNING = 0x0000, /**<\brief The agent is not running; *iJIT_NotifyEventcallswill
* not be processed. */
iJIT_SAMPLING_ON = 0x0001, /**<\brief The agent is running and
* ready to process notifications. */
} iJIT_IsProfilingActiveFlags;
/** *@briefDescriptionofasingleentryinthelinenumberinformationofacoderegion. *@detailsAtableoflinenumberentriesgivesinformationabouthowthereportedcoderegion *ismappedtosourcefile. *Intel(R)VTune(TM)Amplifieruseslinenumberinformationtoattribute *thesamples(virtualaddress)toalinenumber.\n *Itisacceptabletoreportdifferentcodeaddressesforthesamesourceline: *@code *OffsetLineNumber *12 *124 *152 *181 *2130 * *VTuneAmplifierconstructsthefollowingtableusingtheclientdata * *CodesubrangeLinenumber *0-12 *1-124 *12-152 *15-181 *18-2130 *@endcode
*/ typedefstruct _LineNumberInfo
{ unsignedint Offset; /**<\brief Offset from the begining of the code region. */ unsignedint LineNumber; /**<\brief Matching source line number offset (from beginning of source file). */
} *pLineNumberInfo, LineNumberInfo;
/** *@briefEnumeratorforthecodearchitecture.
*/ typedefenum _iJIT_CodeArchitecture
{
iJIT_CA_NATIVE = 0, /**<\brief Native to the process architecture that is calling it. */
char* method_name; /**<\brief The name of the method. It can be optionally *prefixedwithitsclassnameandappendedwith
* its complete signature. Can't be NULL. */
void* method_load_address; /**<\brief The start virtual address of the method code *region.IfNULL,dataprovidedwith
* event are not accepted. */
unsignedint method_size; /**<\brief The code size of the method in memory. *If0,thendataprovidedwiththeeventarenot
* accepted. */
unsignedint line_number_size; /**<\brief The number of entries in the line number
* table.0 if none. */
pLineNumberInfo line_number_table; /**<\brief Pointer to the line numbers info *array.CanbeNULLif *line_number_sizeis0.See *LineNumberInfoStructurefora *descriptionofasingleentryin
* the line number info array */
unsignedint class_id; /**<\brief This field is obsolete. */
char* class_file_name; /**<\brief Class name. Can be NULL.*/
char* source_file_name; /**<\brief Source file name. Can be NULL.*/
char* method_name; /**<\brief The name of the method. It can be optionally *prefixedwithitsclassnameandappendedwith
* its complete signature. Can't be NULL. */
void* method_load_address; /**<\brief The start virtual address of the method code *region.IfNULL,thendataprovidedwiththe
* event are not accepted. */
unsignedint method_size; /**<\brief The code size of the method in memory. *If0,thendataprovidedwiththeeventarenot
* accepted. */
unsignedint line_number_size; /**<\brief The number of entries in the line number
* table. 0 if none. */
pLineNumberInfo line_number_table; /**<\brief Pointer to the line numbers info *array.CanbeNULLif *line_number_sizeis0.See *LineNumberInfoStructurefora *descriptionofasingleentryin
* the line number info array. */
char* class_file_name; /**<\brief Class name. Can be NULL. */
char* source_file_name; /**<\brief Source file name. Can be NULL. */
char* module_name; /**<\brief Module name. Can be NULL. Themodulenamecanbeusefulfordistinguishingamong differentJITengines.VTuneAmplifierwilldisplay
reported methods grouped by specific module. */
} *piJIT_Method_Load_V2, iJIT_Method_Load_V2;
/** *@briefDescriptionofaJIT-compiledmethod *@detailsTheiJIT_Method_Load_V3structureisthesameasiJIT_Method_Load_V2 *withanewlyintroduced'arch'fieldthatspecifiesarchitectureofthecoderegion. *WhenyouusetheiJIT_Method_Load_V3structuretodescribe *theJITcompiledmethod,useiJVM_EVENT_TYPE_METHOD_LOAD_FINISHED_V3 *asaneventtypetoreportit.
*/ typedefstruct _iJIT_Method_Load_V3
{ unsignedint method_id; /**<\brief Unique method ID. Cannot be 0. *YoumusteitherusetheAPIfunction *iJIT_GetNewMethodIDtogetavalidandunique *methodID,ormanageIDuniqueness *andcorrectrangebyyourself.\n *YoumustusethesamemethodIDforallcode *regionsofthesamemethod,otherwisetheyare
* treated as regions of different methods. */
char* method_name; /**<\brief The name of the method. It can be optionally *prefixedwithitsclassnameandappendedwith
* its complete signature. Cannot be NULL. */
void* method_load_address; /**<\brief The start virtual address of the method code *region.IfNULL,thendataprovidedwiththe
* event are not accepted. */
unsignedint method_size; /**<\brief The code size of the method in memory. *If0,thendataprovidedwiththeeventarenot
* accepted. */
unsignedint line_number_size; /**<\brief The number of entries in the line number
* table. 0 if none. */
pLineNumberInfo line_number_table; /**<\brief Pointer to the line numbers info *array.CanbeNULLif *line_number_sizeis0.See *LineNumberInfoStructurefora *descriptionofasingleentryin
* the line number info array. */
char* class_file_name; /**<\brief Class name. Can be NULL. */
char* source_file_name; /**<\brief Source file name. Can be NULL. */
char* module_name; /**<\brief Module name. Can be NULL. *Themodulenamecanbeusefulfordistinguishingamong *differentJITengines.VTuneAmplifierwilldisplay
* reported methods grouped by specific module. */
iJIT_CodeArchitecture module_arch; /**<\brief Architecture of the method's code region. *Bydefault,itisthesameastheprocess *architecturethatiscallingit. *Forexample,youcanuseitifyour32-bitJIT *enginegenerates64-bitcode. * *IfJITenginereportsboth32-bitand64-bittypes *ofmethodsthenVTuneAmplifiersplitsthemethods *withthesamemodulenamebutwithdifferent *architecturesintwodifferentmodules.VTuneAmplifier *modifiestheoriginalnameprovidedwitha64-bitmethod
* version by ending it with '(64)' */
} *piJIT_Method_Load_V3, iJIT_Method_Load_V3;
/** *@briefDescriptionofaninlineJIT-compiledmethod *@detailsWhenyouusethe_iJIT_Method_Inline_Loadstructuretodescribe *theJITcompiledmethod,useiJVM_EVENT_TYPE_METHOD_INLINE_LOAD_FINISHED *asaneventtypetoreportit.
*/ typedefstruct _iJIT_Method_Inline_Load
{ unsignedint method_id; /**<\brief Unique method ID. Cannot be 0. *YoumusteitherusetheAPIfunction *iJIT_GetNewMethodIDtogetavalidandunique *methodID,orelsemanageIDuniqueness
* and correct range by yourself. */
unsignedint parent_method_id; /**<\brief Unique immediate parent's method ID. *Cannotbe0. *YoumusteitherusetheAPIfunction *iJIT_GetNewMethodIDtogetavalidandunique *methodID,orelsemanageIDuniqueness
* and correct range by yourself. */
char* method_name; /**<\brief The name of the method. It can be optionally *prefixedwithitsclassnameandappendedwith
* its complete signature. Can't be NULL. */
void* method_load_address; /** <\brief The virtual address on which the method *isinlined.IfNULL,thendataprovidedwith
* the event are not accepted. */
unsignedint method_size; /**<\brief The code size of the method in memory. *If0,thendataprovidedwiththeeventarenot
* accepted. */
unsignedint line_number_size; /**<\brief The number of entries in the line number
* table. 0 if none. */
pLineNumberInfo line_number_table; /**<\brief Pointer to the line numbers info *array.CanbeNULLif *line_number_sizeis0.See *LineNumberInfoStructurefora *descriptionofasingleentryin
* the line number info array */
char* class_file_name; /**<\brief Class name. Can be NULL.*/
char* source_file_name; /**<\brief Source file name. Can be NULL.*/
iJIT_CT_DATA, /**<\brief Data (not executable code). *VTuneAmplifierusestheformatstring *(seeiJIT_Method_Update)torepresent
* this data in the VTune Amplifier GUI */
iJIT_CT_KEEP, /**<\brief Use the previous markup for the trace. *Canbeusedforthefollowing *iJVM_EVENT_TYPE_METHOD_UPDATE_V2events, *ifthetypeofthepreviouslyreportedsegment
* type is the same. */
iJIT_CT_EOF
} iJIT_SegmentType;
typedefstruct _iJIT_Method_Update
{ void* load_address; /**<\brief Start address of the update within a method */
unsignedint size; /**<\brief The update size */
iJIT_SegmentType type; /**<\brief Type of the update */
constchar* data_format; /**<\brief C string that contains a format string *thatfollowsthesamespecificationsasformatinprintf. *TheformatstringisusedforiJIT_CT_CODEonly *andcannotbeNULL.
* Format can be changed on the fly. */
} *piJIT_Method_Update, iJIT_Method_Update;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.