mirror of
https://github.com/gligli/nulldc-360.git
synced 2025-04-02 11:11:56 -04:00
88 lines
1.9 KiB
C
88 lines
1.9 KiB
C
#pragma once
|
|
#include "types.h"
|
|
#include "recompiler.h"
|
|
#include "compiledblock.h"
|
|
|
|
struct pginfo
|
|
{
|
|
u32 invalidates;
|
|
union
|
|
{
|
|
struct
|
|
{
|
|
u32 ManualCheck:1; //bit 0 :1-> manual check , 0 -> locked check
|
|
u32 reserved:31; //bit 1-31: reserved
|
|
};
|
|
u32 full;
|
|
} flags;
|
|
};
|
|
|
|
extern u32* block_stack_pointer;
|
|
|
|
#define PAGE_MANUALCHECK 1
|
|
pginfo GetPageInfo(u32 address);
|
|
|
|
#define FindBlock FindBlock_fast
|
|
#define FindCode FindCode_fast
|
|
|
|
extern "C" { // called from asm
|
|
CompiledBlockInfo* __fastcall FindBlock_fast(u32 address);
|
|
BasicBlockEP* __fastcall FindCode_fast(u32 address);
|
|
}
|
|
|
|
void RegisterBlock(CompiledBlockInfo* block);
|
|
void UnRegisterBlock(CompiledBlockInfo* block);
|
|
CompiledBlockInfo* bm_ReverseLookup(void* code_ptr);
|
|
|
|
int FreeSuspendedBlocks();
|
|
|
|
CompiledBlockInfo* FindOrRecompileBlock(u32 pc);
|
|
void __fastcall SuspendBlock(CompiledBlockInfo* block);
|
|
void __fastcall SuspendAllBlocks();
|
|
void __fastcall _SuspendAllBlocks();
|
|
CompiledBlockInfo* __fastcall FindBlock_full_compile(u32 address,CompiledBlockInfo* fastblock);
|
|
|
|
void InitBlockManager();
|
|
void ResetBlockManager();
|
|
void TermBlockManager();
|
|
|
|
void* dyna_malloc(u32 size);
|
|
void* dyna_realloc(void*ptr,u32 oldsize,u32 newsize);
|
|
void* dyna_finalize(void* ptr,u32 oldsize,u32 newsize);
|
|
void dyna_profiler_tick(void* addr);
|
|
|
|
struct bm_stats
|
|
{
|
|
u32 block_count;
|
|
u32 block_size;
|
|
u32 cache_size;
|
|
u64 CompileTimeMilisecs;
|
|
|
|
u32 locked_blocks;
|
|
u32 locked_block_calls_delta;
|
|
|
|
u32 manual_blocks;
|
|
u32 manual_block_calls_delta;
|
|
|
|
u32 full_lookups;
|
|
u32 fast_lookups;
|
|
};
|
|
|
|
void bm_GetStats(bm_stats* stats);
|
|
|
|
//#define _BM_CACHE_STATS
|
|
#define LOOKUP_HASH_SIZE 0x4000
|
|
#define LOOKUP_HASH_MASK (LOOKUP_HASH_SIZE-1)
|
|
extern CompiledBlockInfo* BlockLookupGuess[LOOKUP_HASH_SIZE];
|
|
|
|
//#define COUNT_BLOCK_LOCKTYPE_USAGE
|
|
extern u32 manbs;
|
|
extern u32 lockbs;
|
|
|
|
#define DYNA_MEM_POOL_SIZE 24*1024*1024
|
|
|
|
extern "C"
|
|
{
|
|
extern u8* DynarecCache;
|
|
extern u32 DynarecCacheSize;
|
|
}
|