Use printf-like format in JitRegister::Register
The API is cleaner (no more magic default parameter) and more extensible like this.
This commit is contained in:
parent
beaa9905a6
commit
a957f93532
|
@ -72,18 +72,17 @@ void Shutdown()
|
||||||
}
|
}
|
||||||
|
|
||||||
void Register(const void* base_address, u32 code_size,
|
void Register(const void* base_address, u32 code_size,
|
||||||
const char* name, u32 original_address)
|
const char* format, ...)
|
||||||
{
|
{
|
||||||
#if !(defined USE_OPROFILE && USE_OPROFILE) && !defined(USE_VTUNE)
|
#if !(defined USE_OPROFILE && USE_OPROFILE) && !defined(USE_VTUNE)
|
||||||
if (!s_perf_map_file.IsOpen())
|
if (!s_perf_map_file.IsOpen())
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
std::string symbol_name;
|
va_list args;
|
||||||
if (original_address)
|
va_start(args, format);
|
||||||
symbol_name = StringFromFormat("%s_%x", name, original_address);
|
std::string symbol_name = StringFromFormatV(format, args);
|
||||||
else
|
va_end(args);
|
||||||
symbol_name = name;
|
|
||||||
|
|
||||||
#if defined USE_OPROFILE && USE_OPROFILE
|
#if defined USE_OPROFILE && USE_OPROFILE
|
||||||
op_write_native_code(s_agent, symbol_name.data(), (u64)base_address,
|
op_write_native_code(s_agent, symbol_name.data(), (u64)base_address,
|
||||||
|
|
|
@ -11,6 +11,6 @@ namespace JitRegister
|
||||||
void Init();
|
void Init();
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
void Register(const void* base_address, u32 code_size,
|
void Register(const void* base_address, u32 code_size,
|
||||||
const char* name, u32 original_address=0);
|
const char* format, ...);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,28 +95,30 @@ bool CharArrayFromFormatV(char* out, int outsize, const char* format, va_list ar
|
||||||
std::string StringFromFormat(const char* format, ...)
|
std::string StringFromFormat(const char* format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
va_start(args, format);
|
||||||
|
std::string res = StringFromFormatV(format, args);
|
||||||
|
va_end(args);
|
||||||
|
return std::move(res);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string StringFromFormatV(const char* format, va_list args)
|
||||||
|
{
|
||||||
char *buf = nullptr;
|
char *buf = nullptr;
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int required = 0;
|
int required = _vscprintf(format, args);
|
||||||
|
|
||||||
va_start(args, format);
|
|
||||||
required = _vscprintf(format, args);
|
|
||||||
buf = new char[required + 1];
|
buf = new char[required + 1];
|
||||||
CharArrayFromFormatV(buf, required + 1, format, args);
|
CharArrayFromFormatV(buf, required + 1, format, args);
|
||||||
va_end(args);
|
|
||||||
|
|
||||||
std::string temp = buf;
|
std::string temp = buf;
|
||||||
delete[] buf;
|
delete[] buf;
|
||||||
#else
|
#else
|
||||||
va_start(args, format);
|
|
||||||
if (vasprintf(&buf, format, args) < 0)
|
if (vasprintf(&buf, format, args) < 0)
|
||||||
ERROR_LOG(COMMON, "Unable to allocate memory for string");
|
ERROR_LOG(COMMON, "Unable to allocate memory for string");
|
||||||
va_end(args);
|
|
||||||
|
|
||||||
std::string temp = buf;
|
std::string temp = buf;
|
||||||
free(buf);
|
free(buf);
|
||||||
#endif
|
#endif
|
||||||
return temp;
|
return std::move(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// For Debugging. Read out an u8 array.
|
// For Debugging. Read out an u8 array.
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
|
|
||||||
#include "Common/Common.h"
|
#include "Common/Common.h"
|
||||||
|
|
||||||
|
std::string StringFromFormatV(const char* format, va_list args);
|
||||||
|
|
||||||
std::string StringFromFormat(const char* format, ...)
|
std::string StringFromFormat(const char* format, ...)
|
||||||
#if !defined _WIN32
|
#if !defined _WIN32
|
||||||
// On compilers that support function attributes, this gives StringFromFormat
|
// On compilers that support function attributes, this gives StringFromFormat
|
||||||
|
|
|
@ -144,7 +144,7 @@ using namespace Gen;
|
||||||
}
|
}
|
||||||
|
|
||||||
JitRegister::Register(blockCodePointers[block_num], b.codeSize,
|
JitRegister::Register(blockCodePointers[block_num], b.codeSize,
|
||||||
"JIT_PPC", b.originalAddress);
|
"JIT_PPC_%08x", b.originalAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
const u8 **JitBaseBlockCache::GetCodePointers()
|
const u8 **JitBaseBlockCache::GetCodePointers()
|
||||||
|
|
Loading…
Reference in New Issue