Remove ICompilationData.
This commit is contained in:
parent
8cf3e227ea
commit
21f5400d9c
@ -931,20 +931,12 @@ LoadRes CPluginManager::_LoadPlugin(CPlugin **aResult, const char *path, bool de
|
|||||||
|
|
||||||
pPlugin->m_type = PluginType_MapUpdated;
|
pPlugin->m_type = PluginType_MapUpdated;
|
||||||
|
|
||||||
ICompilation *co = NULL;
|
|
||||||
|
|
||||||
if (pPlugin->m_status == Plugin_Uncompiled)
|
if (pPlugin->m_status == Plugin_Uncompiled)
|
||||||
{
|
|
||||||
co = g_pSourcePawn2->StartCompilation();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Do the actual compiling */
|
|
||||||
if (co != NULL)
|
|
||||||
{
|
{
|
||||||
char fullpath[PLATFORM_MAX_PATH];
|
char fullpath[PLATFORM_MAX_PATH];
|
||||||
g_pSM->BuildPath(Path_SM, fullpath, sizeof(fullpath), "plugins/%s", pPlugin->m_filename);
|
g_pSM->BuildPath(Path_SM, fullpath, sizeof(fullpath), "plugins/%s", pPlugin->m_filename);
|
||||||
|
|
||||||
pPlugin->m_pRuntime = g_pSourcePawn2->LoadPlugin(co, fullpath, &err);
|
pPlugin->m_pRuntime = g_pSourcePawn2->LoadPlugin(nullptr, fullpath, &err);
|
||||||
if (pPlugin->m_pRuntime == NULL)
|
if (pPlugin->m_pRuntime == NULL)
|
||||||
{
|
{
|
||||||
if (error)
|
if (error)
|
||||||
|
@ -274,26 +274,7 @@ namespace SourcePawn
|
|||||||
virtual int LookupLine(ucell_t addr, uint32_t *line) =0;
|
virtual int LookupLine(ucell_t addr, uint32_t *line) =0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
class ICompilation;
|
||||||
* @brief Represents a JIT compilation or plugin loading options.
|
|
||||||
*/
|
|
||||||
class ICompilation
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @brief Sets a compilation option.
|
|
||||||
*
|
|
||||||
* @param key Option name.
|
|
||||||
* @param val Option value.
|
|
||||||
* @return True on success, false on failure.
|
|
||||||
*/
|
|
||||||
virtual bool SetOption(const char *key, const char *val) =0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Aborts the compilation and destroys this object.
|
|
||||||
*/
|
|
||||||
virtual void Abort() =0;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Interface to managing a runtime plugin.
|
* @brief Interface to managing a runtime plugin.
|
||||||
@ -425,11 +406,9 @@ namespace SourcePawn
|
|||||||
virtual bool IsDebugging() =0;
|
virtual bool IsDebugging() =0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Applies new compilation/runtime settings to the runtime code.
|
* @brief If |co| is non-NULL, destroys |co|. No other action is taken.
|
||||||
*
|
*
|
||||||
* The compilation object is destroyed once this function completes.
|
* @return Returns SP_ERROR_NONE.
|
||||||
*
|
|
||||||
* @return Error code (SP_ERROR_NONE on success).
|
|
||||||
*/
|
*/
|
||||||
virtual int ApplyCompilationOptions(ICompilation *co) =0;
|
virtual int ApplyCompilationOptions(ICompilation *co) =0;
|
||||||
|
|
||||||
@ -1194,9 +1173,9 @@ namespace SourcePawn
|
|||||||
virtual const char *GetVersionString() =0;
|
virtual const char *GetVersionString() =0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Creates a new compilation options object.
|
* @brief Deprecated. Returns null.
|
||||||
*
|
*
|
||||||
* @return Compilation options object.
|
* @return Null.
|
||||||
*/
|
*/
|
||||||
virtual ICompilation *StartCompilation() =0;
|
virtual ICompilation *StartCompilation() =0;
|
||||||
|
|
||||||
@ -1206,7 +1185,7 @@ namespace SourcePawn
|
|||||||
* If a compilation object is supplied, it is destroyed upon
|
* If a compilation object is supplied, it is destroyed upon
|
||||||
* the function's return.
|
* the function's return.
|
||||||
*
|
*
|
||||||
* @param co Compilation options, or NULL for defaults.
|
* @param co Must be NULL.
|
||||||
* @param file Path to the file to compile.
|
* @param file Path to the file to compile.
|
||||||
* @param err Error code (filled on failure); required.
|
* @param err Error code (filled on failure); required.
|
||||||
* @return New runtime pointer, or NULL on failure.
|
* @return New runtime pointer, or NULL on failure.
|
||||||
|
@ -185,6 +185,12 @@ SourcePawnEngine2::LoadPlugin(ICompilation *co, const char *file, int *err)
|
|||||||
size_t ignore;
|
size_t ignore;
|
||||||
PluginRuntime *pRuntime;
|
PluginRuntime *pRuntime;
|
||||||
|
|
||||||
|
if (co) {
|
||||||
|
if (err)
|
||||||
|
*err = SP_ERROR_PARAM;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
FILE *fp = fopen(file, "rb");
|
FILE *fp = fopen(file, "rb");
|
||||||
|
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
@ -275,8 +281,6 @@ SourcePawnEngine2::LoadPlugin(ICompilation *co, const char *file, int *err)
|
|||||||
if (!pRuntime->plugin()->name)
|
if (!pRuntime->plugin()->name)
|
||||||
pRuntime->SetName(file);
|
pRuntime->SetName(file);
|
||||||
|
|
||||||
pRuntime->ApplyCompilationOptions(co);
|
|
||||||
|
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
return pRuntime;
|
return pRuntime;
|
||||||
@ -332,7 +336,7 @@ SourcePawnEngine2::GetAPIVersion()
|
|||||||
ICompilation *
|
ICompilation *
|
||||||
SourcePawnEngine2::StartCompilation()
|
SourcePawnEngine2::StartCompilation()
|
||||||
{
|
{
|
||||||
return g_Jit.StartCompilation();
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
@ -364,9 +368,6 @@ SourcePawnEngine2::CreateEmptyRuntime(const char *name, uint32_t memory)
|
|||||||
}
|
}
|
||||||
|
|
||||||
rt->SetName(name != NULL ? name : "<anonymous>");
|
rt->SetName(name != NULL ? name : "<anonymous>");
|
||||||
|
|
||||||
rt->ApplyCompilationOptions(NULL);
|
|
||||||
|
|
||||||
return rt;
|
return rt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,7 +35,6 @@ PluginRuntime::PluginRuntime()
|
|||||||
m_pCtx(NULL),
|
m_pCtx(NULL),
|
||||||
m_PubFuncs(NULL),
|
m_PubFuncs(NULL),
|
||||||
m_PubJitFuncs(NULL),
|
m_PubJitFuncs(NULL),
|
||||||
co_(NULL),
|
|
||||||
m_CompSerial(0)
|
m_CompSerial(0)
|
||||||
{
|
{
|
||||||
memset(&m_plugin, 0, sizeof(m_plugin));
|
memset(&m_plugin, 0, sizeof(m_plugin));
|
||||||
@ -75,8 +74,6 @@ PluginRuntime::~PluginRuntime()
|
|||||||
delete m_JitFunctions[i];
|
delete m_JitFunctions[i];
|
||||||
|
|
||||||
delete m_pCtx;
|
delete m_pCtx;
|
||||||
if (co_)
|
|
||||||
co_->Abort();
|
|
||||||
|
|
||||||
free(m_plugin.base);
|
free(m_plugin.base);
|
||||||
delete [] m_plugin.memory;
|
delete [] m_plugin.memory;
|
||||||
@ -304,7 +301,6 @@ int PluginRuntime::CreateFromMemory(sp_file_hdr_t *hdr, uint8_t *base)
|
|||||||
md5_data.raw_digest(m_DataHash);
|
md5_data.raw_digest(m_DataHash);
|
||||||
|
|
||||||
m_pCtx = new BaseContext(this);
|
m_pCtx = new BaseContext(this);
|
||||||
co_ = g_Jit.StartCompilation(this);
|
|
||||||
|
|
||||||
SetupFloatNativeRemapping();
|
SetupFloatNativeRemapping();
|
||||||
function_map_size_ = m_plugin.pcode_size / sizeof(cell_t) + 1;
|
function_map_size_ = m_plugin.pcode_size / sizeof(cell_t) + 1;
|
||||||
@ -587,12 +583,6 @@ BaseContext *PluginRuntime::GetBaseContext()
|
|||||||
int
|
int
|
||||||
PluginRuntime::ApplyCompilationOptions(ICompilation *co)
|
PluginRuntime::ApplyCompilationOptions(ICompilation *co)
|
||||||
{
|
{
|
||||||
if (co == NULL)
|
|
||||||
return SP_ERROR_NONE;
|
|
||||||
|
|
||||||
co_ = g_Jit.ApplyOptions(co_, co);
|
|
||||||
m_plugin.prof_flags = ((CompData *)co_)->profile;
|
|
||||||
|
|
||||||
return SP_ERROR_NONE;
|
return SP_ERROR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -609,7 +599,6 @@ PluginRuntime::CreateBlank(uint32_t heastk)
|
|||||||
m_plugin.memory = new uint8_t[heastk];
|
m_plugin.memory = new uint8_t[heastk];
|
||||||
|
|
||||||
m_pCtx = new BaseContext(this);
|
m_pCtx = new BaseContext(this);
|
||||||
co_ = g_Jit.StartCompilation(this);
|
|
||||||
|
|
||||||
return SP_ERROR_NONE;
|
return SP_ERROR_NONE;
|
||||||
}
|
}
|
||||||
|
@ -115,9 +115,6 @@ class PluginRuntime
|
|||||||
ScriptedInvoker **m_PubFuncs;
|
ScriptedInvoker **m_PubFuncs;
|
||||||
CompiledFunction **m_PubJitFuncs;
|
CompiledFunction **m_PubJitFuncs;
|
||||||
|
|
||||||
private:
|
|
||||||
ICompilation *co_;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
unsigned int m_CompSerial;
|
unsigned int m_CompSerial;
|
||||||
|
|
||||||
|
@ -1876,21 +1876,6 @@ GenerateEntry(void **retp, void **timeoutp)
|
|||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
ICompilation *JITX86::ApplyOptions(ICompilation *_IN, ICompilation *_OUT)
|
|
||||||
{
|
|
||||||
if (_IN == NULL)
|
|
||||||
return _OUT;
|
|
||||||
|
|
||||||
CompData *_in = (CompData * )_IN;
|
|
||||||
CompData *_out = (CompData * )_OUT;
|
|
||||||
|
|
||||||
_in->inline_level = _out->inline_level;
|
|
||||||
_in->profile = _out->profile;
|
|
||||||
|
|
||||||
_out->Abort();
|
|
||||||
return _in;
|
|
||||||
}
|
|
||||||
|
|
||||||
JITX86::JITX86()
|
JITX86::JITX86()
|
||||||
{
|
{
|
||||||
m_pJitEntry = NULL;
|
m_pJitEntry = NULL;
|
||||||
@ -1967,42 +1952,6 @@ JITX86::DestroyFakeNative(SPVM_NATIVE_FUNC func)
|
|||||||
Environment::get()->FreeCode((void *)func);
|
Environment::get()->FreeCode((void *)func);
|
||||||
}
|
}
|
||||||
|
|
||||||
ICompilation *
|
|
||||||
JITX86::StartCompilation()
|
|
||||||
{
|
|
||||||
return new CompData;
|
|
||||||
}
|
|
||||||
|
|
||||||
ICompilation *
|
|
||||||
JITX86::StartCompilation(PluginRuntime *runtime)
|
|
||||||
{
|
|
||||||
return new CompData;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
CompData::Abort()
|
|
||||||
{
|
|
||||||
delete this;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
|
||||||
CompData::SetOption(const char *key, const char *val)
|
|
||||||
{
|
|
||||||
if (strcmp(key, SP_JITCONF_DEBUG) == 0)
|
|
||||||
return true;
|
|
||||||
if (strcmp(key, SP_JITCONF_PROFILE) == 0) {
|
|
||||||
profile = atoi(val);
|
|
||||||
|
|
||||||
/** Callbacks must be profiled to profile functions! */
|
|
||||||
if ((profile & SP_PROF_FUNCTIONS) == SP_PROF_FUNCTIONS)
|
|
||||||
profile |= SP_PROF_CALLBACKS;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
JITX86::InvokeFunction(PluginRuntime *runtime, CompiledFunction *fn, cell_t *result)
|
JITX86::InvokeFunction(PluginRuntime *runtime, CompiledFunction *fn, cell_t *result)
|
||||||
{
|
{
|
||||||
|
@ -61,25 +61,6 @@ struct CallThunk
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CompData : public ICompilation
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
CompData()
|
|
||||||
: profile(0),
|
|
||||||
inline_level(0)
|
|
||||||
{
|
|
||||||
};
|
|
||||||
bool SetOption(const char *key, const char *val);
|
|
||||||
void Abort();
|
|
||||||
public:
|
|
||||||
cell_t cur_func; /* current func pcode offset */
|
|
||||||
/* Options */
|
|
||||||
int profile; /* profiling flags */
|
|
||||||
int inline_level; /* inline optimization level */
|
|
||||||
/* Per-compilation properties */
|
|
||||||
unsigned int func_idx; /* current function index */
|
|
||||||
};
|
|
||||||
|
|
||||||
class Compiler
|
class Compiler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -152,12 +133,9 @@ class JITX86
|
|||||||
public:
|
public:
|
||||||
bool InitializeJIT();
|
bool InitializeJIT();
|
||||||
void ShutdownJIT();
|
void ShutdownJIT();
|
||||||
ICompilation *StartCompilation(PluginRuntime *runtime);
|
|
||||||
ICompilation *StartCompilation();
|
|
||||||
SPVM_NATIVE_FUNC CreateFakeNative(SPVM_FAKENATIVE_FUNC callback, void *pData);
|
SPVM_NATIVE_FUNC CreateFakeNative(SPVM_FAKENATIVE_FUNC callback, void *pData);
|
||||||
void DestroyFakeNative(SPVM_NATIVE_FUNC func);
|
void DestroyFakeNative(SPVM_NATIVE_FUNC func);
|
||||||
CompiledFunction *CompileFunction(PluginRuntime *runtime, cell_t pcode_offs, int *err);
|
CompiledFunction *CompileFunction(PluginRuntime *runtime, cell_t pcode_offs, int *err);
|
||||||
ICompilation *ApplyOptions(ICompilation *_IN, ICompilation *_OUT);
|
|
||||||
int InvokeFunction(PluginRuntime *runtime, CompiledFunction *fn, cell_t *result);
|
int InvokeFunction(PluginRuntime *runtime, CompiledFunction *fn, cell_t *result);
|
||||||
|
|
||||||
void *TimeoutStub() const {
|
void *TimeoutStub() const {
|
||||||
|
Loading…
Reference in New Issue
Block a user