本文整理汇总了C++中Metadata::getFuncName方法的典型用法代码示例。如果您正苦于以下问题:C++ Metadata::getFuncName方法的具体用法?C++ Metadata::getFuncName怎么用?C++ Metadata::getFuncName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Metadata
的用法示例。
在下文中一共展示了Metadata::getFuncName方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PerfFuncEnabled
static void
SendCodeRangesToProfiler(CodeSegment& cs, const Bytes& bytecode, const Metadata& metadata)
{
bool enabled = false;
#ifdef JS_ION_PERF
enabled |= PerfFuncEnabled();
#endif
#ifdef MOZ_VTUNE
enabled |= IsVTuneProfilingActive();
#endif
if (!enabled)
return;
for (const CodeRange& codeRange : metadata.codeRanges) {
if (!codeRange.isFunction())
continue;
uintptr_t start = uintptr_t(cs.base() + codeRange.begin());
uintptr_t end = uintptr_t(cs.base() + codeRange.end());
uintptr_t size = end - start;
UTF8Bytes name;
if (!metadata.getFuncName(&bytecode, codeRange.funcIndex(), &name))
return;
if (!name.append('\0'))
return;
// Avoid "unused" warnings
(void)start;
(void)size;
#ifdef JS_ION_PERF
if (PerfFuncEnabled()) {
const char* file = metadata.filename.get();
unsigned line = codeRange.funcLineOrBytecode();
unsigned column = 0;
writePerfSpewerAsmJSFunctionMap(start, size, file, line, column, name.begin());
}
#endif
#ifdef MOZ_VTUNE
if (IsVTuneProfilingActive()) {
unsigned method_id = iJIT_GetNewMethodID();
if (method_id == 0)
return;
iJIT_Method_Load method;
method.method_id = method_id;
method.method_name = name.begin();
method.method_load_address = (void*)start;
method.method_size = size;
method.line_number_size = 0;
method.line_number_table = nullptr;
method.class_id = 0;
method.class_file_name = nullptr;
method.source_file_name = nullptr;
iJIT_NotifyEvent(iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED, (void*)&method);
}
#endif
}
return;
}