mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-03-03 15:31:11 +00:00
Rename "INCOMPLETE_STRUCT_ACCESS" to CON_DISCRETE_VAR_ACCESS as it was neither incomplete nor anything to do with access to structs
However, it's remaining disabled because even with the new dispatch method it still doesn't improve performance any. git-svn-id: https://svn.eduke32.com/eduke32@7382 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
35b208eeab
commit
3c0a38d47a
3 changed files with 23 additions and 25 deletions
|
@ -676,6 +676,7 @@ static const vec2_t varvartable[] =
|
|||
{ CON_XORVARVAR, CON_XORVAR },
|
||||
};
|
||||
|
||||
#ifdef CON_DISCRETE_VAR_ACCESS
|
||||
static const vec2_t globalvartable[] =
|
||||
{
|
||||
{ CON_IFVARA, CON_IFVARA_GLOBAL },
|
||||
|
@ -710,7 +711,6 @@ static const vec2_t globalvartable[] =
|
|||
{ CON_XORVAR, CON_XORVAR_GLOBAL },
|
||||
};
|
||||
|
||||
#ifdef INCOMPLETE_STRUCT_ACCESS
|
||||
static const vec2_t playervartable[] =
|
||||
{
|
||||
{ CON_IFVARA, CON_IFVARA_PLAYER },
|
||||
|
@ -781,16 +781,16 @@ static const vec2_t actorvartable[] =
|
|||
#endif
|
||||
|
||||
static inthashtable_t h_varvar = { NULL, INTHASH_SIZE(ARRAY_SIZE(varvartable)) };
|
||||
#ifdef CON_DISCRETE_VAR_ACCESS
|
||||
static inthashtable_t h_globalvar = { NULL, INTHASH_SIZE(ARRAY_SIZE(globalvartable)) };
|
||||
#ifdef INCOMPLETE_STRUCT_ACCESS
|
||||
static inthashtable_t h_playervar = { NULL, INTHASH_SIZE(ARRAY_SIZE(playervartable)) };
|
||||
static inthashtable_t h_actorvar = { NULL, INTHASH_SIZE(ARRAY_SIZE(actorvartable)) };
|
||||
#endif
|
||||
|
||||
static inthashtable_t *const inttables[] = {
|
||||
&h_varvar,
|
||||
#ifdef CON_DISCRETE_VAR_ACCESS
|
||||
&h_globalvar,
|
||||
#ifdef INCOMPLETE_STRUCT_ACCESS
|
||||
&h_playervar,
|
||||
&h_actorvar,
|
||||
#endif
|
||||
|
@ -2442,6 +2442,7 @@ static void scriptUpdateOpcodeForVariableType(intptr_t *ins)
|
|||
{
|
||||
int opcode = -1;
|
||||
|
||||
#ifdef CON_DISCRETE_VAR_ACCESS
|
||||
if (ins[1] < MAXGAMEVARS)
|
||||
{
|
||||
switch (aGameVars[ins[1] & (MAXGAMEVARS - 1)].flags & (GAMEVAR_USER_MASK | GAMEVAR_PTR_MASK))
|
||||
|
@ -2449,16 +2450,15 @@ static void scriptUpdateOpcodeForVariableType(intptr_t *ins)
|
|||
case 0:
|
||||
opcode = inthash_find(&h_globalvar, *ins & VM_INSTMASK);
|
||||
break;
|
||||
#ifdef INCOMPLETE_STRUCT_ACCESS
|
||||
case GAMEVAR_PERACTOR:
|
||||
opcode = inthash_find(&h_actorvar, *ins & VM_INSTMASK);
|
||||
break;
|
||||
case GAMEVAR_PERPLAYER:
|
||||
opcode = inthash_find(&h_playervar, *ins & VM_INSTMASK);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (opcode != -1)
|
||||
{
|
||||
|
@ -6158,10 +6158,10 @@ void scriptInitTables()
|
|||
for (auto &varvar : varvartable)
|
||||
inthash_add(&h_varvar, varvar.x, varvar.y, 0);
|
||||
|
||||
#ifdef CON_DISCRETE_VAR_ACCESS
|
||||
for (auto &globalvar : globalvartable)
|
||||
inthash_add(&h_globalvar, globalvar.x, globalvar.y, 0);
|
||||
|
||||
#ifdef INCOMPLETE_STRUCT_ACCESS
|
||||
for (auto &playervar : playervartable)
|
||||
inthash_add(&h_playervar, playervar.x, playervar.y, 0);
|
||||
|
||||
|
|
|
@ -23,6 +23,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#ifndef gamedef_h_
|
||||
#define gamedef_h_
|
||||
|
||||
// #define CON_DISCRETE_VAR_ACCESS
|
||||
|
||||
#include "actors.h"
|
||||
#include "build.h" // hashtable_t
|
||||
#include "cheats.h"
|
||||
|
@ -846,7 +848,8 @@ enum IterationTypes_t
|
|||
|
||||
// most keywords have opcodes but some opcodes don't have keywords
|
||||
#define TRANSFORM_SCRIPT_KEYWORDS_LIST(TRANSFORM, DELIMITER) \
|
||||
\
|
||||
/* CON_DISCRETE_VAR_ACCESS \
|
||||
|
||||
TRANSFORM(CON_IFVARA_GLOBAL) DELIMITER \
|
||||
TRANSFORM(CON_IFVARAE_GLOBAL) DELIMITER \
|
||||
TRANSFORM(CON_IFVARAND_GLOBAL) DELIMITER \
|
||||
|
@ -878,7 +881,6 @@ enum IterationTypes_t
|
|||
TRANSFORM(CON_WHILEVARN_GLOBAL) DELIMITER \
|
||||
TRANSFORM(CON_XORVAR_GLOBAL) DELIMITER \
|
||||
\
|
||||
/* INCOMPLETE_STRUCT_ACCESS
|
||||
TRANSFORM(CON_IFVARA_PLAYER) DELIMITER \
|
||||
TRANSFORM(CON_IFVARAE_PLAYER) DELIMITER \
|
||||
TRANSFORM(CON_IFVARAND_PLAYER) DELIMITER \
|
||||
|
@ -940,8 +942,7 @@ enum IterationTypes_t
|
|||
TRANSFORM(CON_WHILEVARL_ACTOR) DELIMITER \
|
||||
TRANSFORM(CON_WHILEVARN_ACTOR) DELIMITER \
|
||||
TRANSFORM(CON_XORVAR_ACTOR) DELIMITER \
|
||||
*/ \
|
||||
\
|
||||
*/ \
|
||||
TRANSFORM(CON_IFVARVARA) DELIMITER \
|
||||
TRANSFORM(CON_IFVARVARAE) DELIMITER \
|
||||
TRANSFORM(CON_IFVARVARAND) DELIMITER \
|
||||
|
|
|
@ -1270,6 +1270,7 @@ void Screen_Play(void)
|
|||
#if defined __GNUC__ || defined __clang__
|
||||
# define CON_DIRECT_THREADING_DISPATCH
|
||||
#endif
|
||||
|
||||
#ifdef CON_DIRECT_THREADING_DISPATCH
|
||||
# define vInstruction(KEYWORDID) VINST_ ## KEYWORDID
|
||||
# define eval(INSTRUCTION) {if ((unsigned)INSTRUCTION <= CON_OPCODE_END) {goto *jumpTable[INSTRUCTION];} goto VINST_CON_OPCODE_END;}
|
||||
|
@ -1343,7 +1344,16 @@ GAMEEXEC_STATIC void VM_Execute(native_t const poop)
|
|||
dispatch_unconditionally();
|
||||
}
|
||||
#endif
|
||||
vInstruction(CON_STATE):
|
||||
{
|
||||
auto tempscrptr = &insptr[2];
|
||||
insptr = (intptr_t *)insptr[1];
|
||||
VM_Execute(1);
|
||||
insptr = tempscrptr;
|
||||
}
|
||||
dispatch();
|
||||
|
||||
#ifdef CON_DISCRETE_VAR_ACCESS
|
||||
vInstruction(CON_IFVARE_GLOBAL):
|
||||
insptr++;
|
||||
tw = aGameVars[*insptr++].global;
|
||||
|
@ -1465,16 +1475,7 @@ GAMEEXEC_STATIC void VM_Execute(native_t const poop)
|
|||
aGameVars[*insptr].global >>= insptr[1];
|
||||
insptr += 2;
|
||||
dispatch();
|
||||
vInstruction(CON_STATE):
|
||||
{
|
||||
auto tempscrptr = &insptr[2];
|
||||
insptr = (intptr_t *)insptr[1];
|
||||
VM_Execute(1);
|
||||
insptr = tempscrptr;
|
||||
}
|
||||
dispatch();
|
||||
|
||||
#ifdef INCOMPLETE_STRUCT_ACCESS
|
||||
vInstruction(CON_IFVARE_ACTOR):
|
||||
insptr++;
|
||||
tw = aGameVars[*insptr++].pValues[vm.spriteNum & (MAXSPRITES-1)];
|
||||
|
@ -1718,7 +1719,6 @@ GAMEEXEC_STATIC void VM_Execute(native_t const poop)
|
|||
aGameVars[*insptr].pValues[vm.playerNum & (MAXPLAYERS-1)] >>= insptr[1];
|
||||
insptr += 2;
|
||||
dispatch();
|
||||
#endif
|
||||
|
||||
vInstruction(CON_WHILEVARN_GLOBAL):
|
||||
{
|
||||
|
@ -1744,7 +1744,6 @@ GAMEEXEC_STATIC void VM_Execute(native_t const poop)
|
|||
dispatch();
|
||||
}
|
||||
|
||||
#ifdef INCOMPLETE_STRUCT_ACCESS
|
||||
vInstruction(CON_WHILEVARN_ACTOR):
|
||||
{
|
||||
auto const savedinsptr = &insptr[2];
|
||||
|
@ -1800,14 +1799,12 @@ GAMEEXEC_STATIC void VM_Execute(native_t const poop)
|
|||
|
||||
dispatch();
|
||||
}
|
||||
#endif
|
||||
|
||||
vInstruction(CON_MODVAR_GLOBAL):
|
||||
insptr++;
|
||||
aGameVars[*insptr].global %= insptr[1];
|
||||
insptr += 2;
|
||||
dispatch();
|
||||
#ifdef INCOMPLETE_STRUCT_ACCESS
|
||||
vInstruction(CON_MODVAR_ACTOR):
|
||||
insptr++;
|
||||
aGameVars[*insptr].pValues[vm.spriteNum & (MAXSPRITES-1)] %= insptr[1];
|
||||
|
@ -1963,13 +1960,13 @@ GAMEEXEC_STATIC void VM_Execute(native_t const poop)
|
|||
Gv_MulVar(tw, Gv_GetVarX(*insptr++));
|
||||
dispatch();
|
||||
|
||||
#ifdef CON_DISCRETE_VAR_ACCESS
|
||||
vInstruction(CON_DIVVAR_GLOBAL):
|
||||
insptr++;
|
||||
aGameVars[*insptr].global = tabledivide32(aGameVars[*insptr].global, insptr[1]);
|
||||
insptr += 2;
|
||||
dispatch();
|
||||
|
||||
#ifdef INCOMPLETE_STRUCT_ACCESS
|
||||
vInstruction(CON_DIVVAR_PLAYER):
|
||||
{
|
||||
insptr++;
|
||||
|
@ -2281,13 +2278,13 @@ GAMEEXEC_STATIC void VM_Execute(native_t const poop)
|
|||
insptr += 2;
|
||||
dispatch();
|
||||
|
||||
#ifdef CON_DISCRETE_VAR_ACCESS
|
||||
vInstruction(CON_RANDVAR_GLOBAL):
|
||||
insptr++;
|
||||
aGameVars[*insptr].global = mulscale16(krand(), insptr[1] + 1);
|
||||
insptr += 2;
|
||||
dispatch();
|
||||
|
||||
#ifdef INCOMPLETE_STRUCT_ACCESS
|
||||
vInstruction(CON_RANDVAR_PLAYER):
|
||||
insptr++;
|
||||
aGameVars[*insptr].pValues[vm.playerNum & (MAXPLAYERS-1)] = mulscale16(krand(), insptr[1] + 1);
|
||||
|
|
Loading…
Reference in a new issue