mirror of
https://github.com/ZDoom/qzdoom.git
synced 2025-06-04 10:50:48 +00:00
- properly clear all script compiler data for a restart.
This commit is contained in:
parent
dc055b74c1
commit
208fe28042
4 changed files with 10 additions and 16 deletions
|
@ -213,18 +213,17 @@ void ExpEmit::Reuse(VMFunctionBuilder *build)
|
||||||
// it and install it a local symbol table.
|
// it and install it a local symbol table.
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
static PSymbolTable Builtins;
|
|
||||||
|
|
||||||
static PSymbol *FindBuiltinFunction(FName funcname, VMNativeFunction::NativeCallType func)
|
static PSymbol *FindBuiltinFunction(FName funcname, VMNativeFunction::NativeCallType func)
|
||||||
{
|
{
|
||||||
PSymbol *sym = Builtins.FindSymbol(funcname, false);
|
PSymbol *sym = GlobalSymbols.FindSymbol(funcname, false);
|
||||||
if (sym == nullptr)
|
if (sym == nullptr)
|
||||||
{
|
{
|
||||||
PSymbolVMFunction *symfunc = new PSymbolVMFunction(funcname);
|
PSymbolVMFunction *symfunc = new PSymbolVMFunction(funcname);
|
||||||
VMNativeFunction *calldec = new VMNativeFunction(func, funcname);
|
VMNativeFunction *calldec = new VMNativeFunction(func, funcname);
|
||||||
symfunc->Function = calldec;
|
symfunc->Function = calldec;
|
||||||
sym = symfunc;
|
sym = symfunc;
|
||||||
Builtins.AddSymbol(sym);
|
GlobalSymbols.AddSymbol(sym);
|
||||||
}
|
}
|
||||||
return sym;
|
return sym;
|
||||||
}
|
}
|
||||||
|
|
|
@ -774,5 +774,5 @@ void FFunctionBuildList::Build()
|
||||||
fclose(dump);
|
fclose(dump);
|
||||||
}
|
}
|
||||||
FScriptPosition::StrictErrors = false;
|
FScriptPosition::StrictErrors = false;
|
||||||
|
mItems.Clear();
|
||||||
}
|
}
|
|
@ -51,8 +51,6 @@
|
||||||
#include "codegeneration/codegen.h"
|
#include "codegeneration/codegen.h"
|
||||||
#include "vmbuilder.h"
|
#include "vmbuilder.h"
|
||||||
|
|
||||||
#define DEFINING_CONST ((PSymbolConst *)(void *)1)
|
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// ZCCCompiler :: ProcessClass
|
// ZCCCompiler :: ProcessClass
|
||||||
|
@ -714,10 +712,8 @@ bool ZCCCompiler::CompileConstant(ZCC_ConstantDef *def, PSymbolTable *sym)
|
||||||
{
|
{
|
||||||
assert(def->Symbol == nullptr);
|
assert(def->Symbol == nullptr);
|
||||||
|
|
||||||
def->Symbol = DEFINING_CONST; // avoid recursion
|
|
||||||
ZCC_Expression *val = Simplify(def->Value, sym, true);
|
ZCC_Expression *val = Simplify(def->Value, sym, true);
|
||||||
def->Value = val;
|
def->Value = val;
|
||||||
if (def->Symbol == DEFINING_CONST) def->Symbol = nullptr;
|
|
||||||
return (val->NodeType == AST_ExprConstant);
|
return (val->NodeType == AST_ExprConstant);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -199,9 +199,6 @@ static void InitTokenMap()
|
||||||
TOKENDEF (TK_CanRaise, ZCC_CANRAISE);
|
TOKENDEF (TK_CanRaise, ZCC_CANRAISE);
|
||||||
TOKENDEF (TK_Light, ZCC_LIGHT);
|
TOKENDEF (TK_Light, ZCC_LIGHT);
|
||||||
TOKENDEF (TK_Extend, ZCC_EXTEND);
|
TOKENDEF (TK_Extend, ZCC_EXTEND);
|
||||||
|
|
||||||
ZCC_InitOperators();
|
|
||||||
ZCC_InitConversions();
|
|
||||||
}
|
}
|
||||||
#undef TOKENDEF
|
#undef TOKENDEF
|
||||||
#undef TOKENDEF2
|
#undef TOKENDEF2
|
||||||
|
@ -293,11 +290,6 @@ parse_end:
|
||||||
|
|
||||||
static void DoParse(int lumpnum)
|
static void DoParse(int lumpnum)
|
||||||
{
|
{
|
||||||
if (TokenMap.CountUsed() == 0)
|
|
||||||
{
|
|
||||||
InitTokenMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
FScanner sc;
|
FScanner sc;
|
||||||
void *parser;
|
void *parser;
|
||||||
ZCCToken value;
|
ZCCToken value;
|
||||||
|
@ -400,6 +392,13 @@ static void DoParse(int lumpnum)
|
||||||
|
|
||||||
void ParseScripts()
|
void ParseScripts()
|
||||||
{
|
{
|
||||||
|
if (TokenMap.CountUsed() == 0)
|
||||||
|
{
|
||||||
|
InitTokenMap();
|
||||||
|
}
|
||||||
|
ZCC_InitOperators();
|
||||||
|
ZCC_InitConversions();
|
||||||
|
|
||||||
int lump, lastlump = 0;
|
int lump, lastlump = 0;
|
||||||
FScriptPosition::ResetErrorCounter();
|
FScriptPosition::ResetErrorCounter();
|
||||||
while ((lump = Wads.FindLump("ZSCRIPT", &lastlump)) != -1)
|
while ((lump = Wads.FindLump("ZSCRIPT", &lastlump)) != -1)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue