added optimization tweaker

added binary log maxsize support
This commit is contained in:
David Anderson 2006-03-17 22:50:13 +00:00
parent 4bcb0fcb13
commit 2c5520cad0
6 changed files with 47 additions and 9 deletions

View File

@ -6,6 +6,7 @@
BinLog g_BinLog;
int g_binlog_level = 0;
int g_binlog_maxsize = 0;
bool BinLog::Open()
{
@ -61,6 +62,20 @@ void BinLog::WriteOp(BinLogOp op, int plug, ...)
if (!fp)
return;
if (g_binlog_maxsize)
{
fseek(fp, 0, SEEK_END);
if (ftell(fp) > (g_binlog_maxsize * (1024 * 1024)))
{
fclose(fp);
Close();
Open();
fp = fopen(m_logfile.c_str(), "ab");
if (!fp)
return;
}
}
unsigned char c = static_cast<char>(op);
time_t t = time(NULL);
float gt = gpGlobals->time;

View File

@ -69,6 +69,7 @@ private:
extern BinLog g_BinLog;
extern int g_binlog_level;
extern int g_binlog_maxsize;
#endif //BINLOG_ENABLED

View File

@ -40,6 +40,7 @@
#include "newmenus.h"
#include "natives.h"
#include "binlog.h"
#include "optimizer.h"
plugin_info_t Plugin_info =
{
@ -305,8 +306,13 @@ int C_Spawn(edict_t *pent)
LOG_ERROR(PLID, "Binary log failed to open.");
}
g_binlog_level = atoi(get_localinfo("bin_logging", "17"));
g_binlog_maxsize = atoi(get_localinfo("g_binlog_maxsize", "20"));
#endif
g_opt_level = atoi(get_localinfo("optimizer", "7"));
if (!g_opt_level)
g_opt_level = 7;
// ###### Load AMX scripts
g_plugins.loadPluginsFromFile(get_localinfo("amxx_plugins", "addons/amxmodx/configs/plugins.ini"));
g_plugins.Finalize();

View File

@ -267,7 +267,10 @@ int load_amxscript(AMX *amx, void **program, const char *filename, char error[64
#endif
}
SetupOptimizer(amx);
if (g_opt_level != 65536)
{
SetupOptimizer(amx);
}
if ((err = amx_Init(amx, *program)) != AMX_ERR_NONE)
{

View File

@ -1,6 +1,8 @@
#include <string.h>
#include "optimizer.h"
int g_opt_level = 0;
#define OP_SYSREQ_C 123
#define OP_NOP 134
#define OP_FLOAT_MUL 138
@ -82,14 +84,23 @@ void _Setup_Optimizer_Stage2(AMX *amx, cell *oplist, cell *cip)
opt->natives[i] = -1;
amx->usertags[UT_OPTIMIZER] = (void *)opt;
FIND_NATIVE("floatmul", N_Float_Mul);
FIND_NATIVE("floatdiv", N_Float_Div);
FIND_NATIVE("floatadd", N_Float_Add);
FIND_NATIVE("floatsub", N_Float_Sub);
FIND_NATIVE("float", N_Float_To);
FIND_NATIVE("floatround", N_Float_Round);
FIND_NATIVE("floatcmp", N_Float_Cmp);
if (g_opt_level & 1)
{
FIND_NATIVE("floatmul", N_Float_Mul);
FIND_NATIVE("floatdiv", N_Float_Div);
FIND_NATIVE("floatadd", N_Float_Add);
FIND_NATIVE("floatsub", N_Float_Sub);
}
if (g_opt_level & 4)
{
FIND_NATIVE("float", N_Float_To);
FIND_NATIVE("floatround", N_Float_Round);
}
if (g_opt_level & 2)
{
FIND_NATIVE("floatcmp", N_Float_Cmp);
}
//we don't do these yet because of radix stuff >:\
//FIND_NATIVE("floatsin", N_Float_Sin);
//FIND_NATIVE("floatcos", N_Float_Cos);

View File

@ -23,4 +23,6 @@ struct optimizer_s
void SetupOptimizer(AMX *amx);
extern int g_opt_level;
#endif //_INCLUDE_AMXMODX_OPTIMIZER_H