sourcepawn/jit/BaseRuntime.h
author Nicholas Hastings <skamonkey@gmail.com>
Mon Jun 14 09:32:50 2010 -0400 (2010-06-14)
changeset 3041 a0587dee87ae
parent 2545 9cb1a1fefc2c
child 3601 d3a2fb7b3a1e
permissions -rw-r--r--
Fixed outputname null pointer crash in sdktools (bug 4422, r=fyren)
     1 #ifndef _INCLUDE_SOURCEPAWN_JIT_RUNTIME_H_
     2 #define _INCLUDE_SOURCEPAWN_JIT_RUNTIME_H_
     3 
     4 #include <sp_vm_api.h>
     5 #include "jit_shared.h"
     6 #include "sp_vm_function.h"
     7 
     8 class BaseContext;
     9 class JitFunction;
    10 
    11 class DebugInfo : public IPluginDebugInfo
    12 {
    13 public:
    14 	DebugInfo(sp_plugin_t *plugin);
    15 public:
    16 	int LookupFile(ucell_t addr, const char **filename);
    17 	int LookupFunction(ucell_t addr, const char **name);
    18 	int LookupLine(ucell_t addr, uint32_t *line);
    19 private:
    20 	sp_plugin_t *m_pPlugin;
    21 };
    22 
    23 /* Jit wants fast access to this so we expose things as public */
    24 class BaseRuntime : public SourcePawn::IPluginRuntime
    25 {
    26 public:
    27 	BaseRuntime();
    28 	~BaseRuntime();
    29 public:
    30 	virtual int CreateBlank(uint32_t heastk);
    31 	virtual int CreateFromMemory(sp_file_hdr_t *hdr, uint8_t *base);
    32 	virtual bool IsDebugging();
    33 	virtual IPluginDebugInfo *GetDebugInfo();
    34 	virtual int FindNativeByName(const char *name, uint32_t *index);
    35 	virtual int GetNativeByIndex(uint32_t index, sp_native_t **native);
    36 	virtual uint32_t GetNativesNum();
    37 	virtual int FindPublicByName(const char *name, uint32_t *index);
    38 	virtual int GetPublicByIndex(uint32_t index, sp_public_t **publicptr);
    39 	virtual uint32_t GetPublicsNum();
    40 	virtual int GetPubvarByIndex(uint32_t index, sp_pubvar_t **pubvar);
    41 	virtual int FindPubvarByName(const char *name, uint32_t *index);
    42 	virtual int GetPubvarAddrs(uint32_t index, cell_t *local_addr, cell_t **phys_addr);
    43 	virtual uint32_t GetPubVarsNum();
    44 	virtual IPluginFunction *GetFunctionByName(const char *public_name);
    45 	virtual IPluginFunction *GetFunctionById(funcid_t func_id);
    46 	virtual IPluginContext *GetDefaultContext();
    47 	virtual int ApplyCompilationOptions(ICompilation *co);
    48 	virtual void SetPauseState(bool paused);
    49 	virtual bool IsPaused();
    50 	virtual size_t GetMemUsage();
    51 	JitFunction *GetJittedFunction(uint32_t idx);
    52 	uint32_t AddJittedFunction(JitFunction *fn);
    53 public:
    54 	BaseContext *GetBaseContext();
    55 private:
    56 	sp_plugin_t m_plugin;
    57 	unsigned int m_NumFuncs;
    58 	unsigned int m_MaxFuncs;
    59 	JitFunction **m_FuncCache;
    60 public:
    61 	DebugInfo m_Debug;
    62 	sp_plugin_t *m_pPlugin;
    63 	BaseContext *m_pCtx;
    64 	CFunction **m_PubFuncs;
    65 	JitFunction **m_PubJitFuncs;
    66 	ICompilation *m_pCo;
    67 	unsigned int m_CompSerial;
    68 };
    69 
    70 #endif //_INCLUDE_SOURCEPAWN_JIT_RUNTIME_H_