Merge pull request #538 from yuriks/perf-stat
Add profiling infrastructure and widget
This commit is contained in:
commit
93e32bce72
16 changed files with 798 additions and 0 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
@ -16,6 +18,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
|
||||
|
@ -30,6 +34,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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue