Add profiling infrastructure and widget

This commit is contained in:
Yuri Kunde Schlesner 2015-02-05 14:53:25 -02:00
parent c1d29ac202
commit cd1fbfcf1b
16 changed files with 757 additions and 0 deletions

View file

@ -9,6 +9,7 @@
#include <unordered_map>
#include "common/logging/log.h"
#include "common/profiler.h"
#include "core/mem_map.h"
#include "core/hle/hle.h"
@ -20,6 +21,9 @@
#include "core/arm/skyeye_common/armmmu.h"
#include "core/arm/skyeye_common/vfp/vfp.h"
Common::Profiling::TimingCategory profile_execute("DynCom::Execute");
Common::Profiling::TimingCategory profile_decode("DynCom::Decode");
enum {
COND = (1 << 0),
NON_BRANCH = (1 << 1),
@ -3569,6 +3573,8 @@ typedef struct instruction_set_encoding_item ISEITEM;
extern const ISEITEM arm_instruction[];
static int InterpreterTranslate(ARMul_State* cpu, int& bb_start, addr_t addr) {
Common::Profiling::ScopeTimer timer_decode(profile_decode);
// Decode instruction, get index
// Allocate memory and init InsCream
// Go on next, until terminal instruction
@ -3641,6 +3647,8 @@ static bool InAPrivilegedMode(ARMul_State* core) {
}
unsigned InterpreterMainLoop(ARMul_State* state) {
Common::Profiling::ScopeTimer timer_execute(profile_execute);
#undef RM
#undef RS

View file

@ -4,6 +4,8 @@
#include <vector>
#include "common/profiler.h"
#include "core/arm/arm_interface.h"
#include "core/mem_map.h"
#include "core/hle/hle.h"
@ -19,6 +21,8 @@
namespace HLE {
Common::Profiling::TimingCategory profiler_svc("SVC Calls");
static std::vector<ModuleDef> g_module_db;
bool g_reschedule = false; ///< If true, immediately reschedules the CPU to a new thread
@ -33,6 +37,8 @@ static const FunctionDef* GetSVCInfo(u32 opcode) {
}
void CallSVC(u32 opcode) {
Common::Profiling::ScopeTimer timer_svc(profiler_svc);
const FunctionDef *info = GetSVCInfo(opcode);
if (!info) {