Remove ICompilationData.

This commit is contained in:
David Anderson 2015-02-24 00:21:52 -08:00
parent 8cf3e227ea
commit 21f5400d9c
7 changed files with 15 additions and 130 deletions

View File

@ -931,20 +931,12 @@ LoadRes CPluginManager::_LoadPlugin(CPlugin **aResult, const char *path, bool de
pPlugin->m_type = PluginType_MapUpdated;
ICompilation *co = NULL;
if (pPlugin->m_status == Plugin_Uncompiled)
{
co = g_pSourcePawn2->StartCompilation();
}
/* Do the actual compiling */
if (co != NULL)
{
char fullpath[PLATFORM_MAX_PATH];
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 (error)

View File

@ -274,26 +274,7 @@ namespace SourcePawn
virtual int LookupLine(ucell_t addr, uint32_t *line) =0;
};
/**
* @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;
};
class ICompilation;
/**
* @brief Interface to managing a runtime plugin.
@ -425,11 +406,9 @@ namespace SourcePawn
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 Error code (SP_ERROR_NONE on success).
* @return Returns SP_ERROR_NONE.
*/
virtual int ApplyCompilationOptions(ICompilation *co) =0;
@ -1194,9 +1173,9 @@ namespace SourcePawn
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;
@ -1206,10 +1185,10 @@ namespace SourcePawn
* If a compilation object is supplied, it is destroyed upon
* 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 err Error code (filled on failure); required.
* @return New runtime pointer, or NULL on failure.
* @return New runtime pointer, or NULL on failure.
*/
virtual IPluginRuntime *LoadPlugin(ICompilation *co, const char *file, int *err) =0;

View File

@ -185,6 +185,12 @@ SourcePawnEngine2::LoadPlugin(ICompilation *co, const char *file, int *err)
size_t ignore;
PluginRuntime *pRuntime;
if (co) {
if (err)
*err = SP_ERROR_PARAM;
return nullptr;
}
FILE *fp = fopen(file, "rb");
if (!fp) {
@ -275,8 +281,6 @@ SourcePawnEngine2::LoadPlugin(ICompilation *co, const char *file, int *err)
if (!pRuntime->plugin()->name)
pRuntime->SetName(file);
pRuntime->ApplyCompilationOptions(co);
fclose(fp);
return pRuntime;
@ -332,7 +336,7 @@ SourcePawnEngine2::GetAPIVersion()
ICompilation *
SourcePawnEngine2::StartCompilation()
{
return g_Jit.StartCompilation();
return nullptr;
}
const char *
@ -364,9 +368,6 @@ SourcePawnEngine2::CreateEmptyRuntime(const char *name, uint32_t memory)
}
rt->SetName(name != NULL ? name : "<anonymous>");
rt->ApplyCompilationOptions(NULL);
return rt;
}

View File

@ -35,7 +35,6 @@ PluginRuntime::PluginRuntime()
m_pCtx(NULL),
m_PubFuncs(NULL),
m_PubJitFuncs(NULL),
co_(NULL),
m_CompSerial(0)
{
memset(&m_plugin, 0, sizeof(m_plugin));
@ -75,8 +74,6 @@ PluginRuntime::~PluginRuntime()
delete m_JitFunctions[i];
delete m_pCtx;
if (co_)
co_->Abort();
free(m_plugin.base);
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);
m_pCtx = new BaseContext(this);
co_ = g_Jit.StartCompilation(this);
SetupFloatNativeRemapping();
function_map_size_ = m_plugin.pcode_size / sizeof(cell_t) + 1;
@ -587,12 +583,6 @@ BaseContext *PluginRuntime::GetBaseContext()
int
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;
}
@ -609,7 +599,6 @@ PluginRuntime::CreateBlank(uint32_t heastk)
m_plugin.memory = new uint8_t[heastk];
m_pCtx = new BaseContext(this);
co_ = g_Jit.StartCompilation(this);
return SP_ERROR_NONE;
}

View File

@ -115,9 +115,6 @@ class PluginRuntime
ScriptedInvoker **m_PubFuncs;
CompiledFunction **m_PubJitFuncs;
private:
ICompilation *co_;
public:
unsigned int m_CompSerial;

View File

@ -1876,21 +1876,6 @@ GenerateEntry(void **retp, void **timeoutp)
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()
{
m_pJitEntry = NULL;
@ -1967,42 +1952,6 @@ JITX86::DestroyFakeNative(SPVM_NATIVE_FUNC 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
JITX86::InvokeFunction(PluginRuntime *runtime, CompiledFunction *fn, cell_t *result)
{

View File

@ -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
{
public:
@ -152,12 +133,9 @@ class JITX86
public:
bool InitializeJIT();
void ShutdownJIT();
ICompilation *StartCompilation(PluginRuntime *runtime);
ICompilation *StartCompilation();
SPVM_NATIVE_FUNC CreateFakeNative(SPVM_FAKENATIVE_FUNC callback, void *pData);
void DestroyFakeNative(SPVM_NATIVE_FUNC func);
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);
void *TimeoutStub() const {