Skip to content

Commit 3466358

Browse files
committed
anltr cache purge only in lowmem option
1 parent dc7abb8 commit 3466358

File tree

5 files changed

+12
-5
lines changed

5 files changed

+12
-5
lines changed

include/Surelog/SourceCompile/AntlrParserHandler.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class AntlrParserHandler {
4444
public:
4545
AntlrParserHandler() = default;
4646
~AntlrParserHandler();
47-
47+
bool m_clearAntlrCache = false;
4848
antlr4::ANTLRInputStream* m_inputStream = nullptr;
4949
SV3_1aLexer* m_lexer = nullptr;
5050
antlr4::CommonTokenStream* m_tokens = nullptr;

include/Surelog/SourceCompile/PreprocessFile.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ class PreprocessFile final {
260260
struct AntlrParserHandler final {
261261
AntlrParserHandler() = default;
262262
~AntlrParserHandler();
263+
bool m_clearAntlrCache = false;
263264
antlr4::ANTLRInputStream* m_inputStream = nullptr;
264265
SV3_1aPpLexer* m_pplexer = nullptr;
265266
antlr4::CommonTokenStream* m_pptokens = nullptr;

src/SourceCompile/AntlrParserHandler.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,10 @@ AntlrParserHandler::~AntlrParserHandler() {
3333
delete m_errorListener;
3434
// ParseTree is deleted in antlr4::ParseTreeTracker
3535
// delete m_tree; // INVALID MEMORY READ can be seen in AdvancedDebug
36-
m_lexer->getInterpreter<antlr4::atn::LexerATNSimulator>()->clearDFA();
37-
m_parser->getInterpreter<antlr4::atn::ParserATNSimulator>()->clearDFA();
36+
if (m_clearAntlrCache) {
37+
m_lexer->getInterpreter<antlr4::atn::LexerATNSimulator>()->clearDFA();
38+
m_parser->getInterpreter<antlr4::atn::ParserATNSimulator>()->clearDFA();
39+
}
3840
delete m_parser;
3941
delete m_tokens;
4042
delete m_lexer;

src/SourceCompile/ParseFile.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ bool ParseFile::parseOneFile_(PathId fileId, uint32_t lineOffset) {
271271
PreprocessFile* pp = getCompileSourceFile()->getPreprocessor();
272272
Timer tmr;
273273
m_antlrParserHandler = new AntlrParserHandler();
274+
m_antlrParserHandler->m_clearAntlrCache = clp->lowMem();
274275
if (m_sourceText.empty()) {
275276
std::istream& stream = fileSystem->openForRead(fileId);
276277
if (!stream.good()) {

src/SourceCompile/PreprocessFile.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,10 @@ PreprocessFile::~PreprocessFile() {
312312
PreprocessFile::AntlrParserHandler::~AntlrParserHandler() {
313313
delete m_errorListener;
314314
// delete m_pptree; // INVALID MEMORY READ can be seen in AdvancedDebug
315-
m_pplexer->getInterpreter<antlr4::atn::LexerATNSimulator>()->clearDFA();
316-
m_ppparser->getInterpreter<antlr4::atn::ParserATNSimulator>()->clearDFA();
315+
if (m_clearAntlrCache) {
316+
m_pplexer->getInterpreter<antlr4::atn::LexerATNSimulator>()->clearDFA();
317+
m_ppparser->getInterpreter<antlr4::atn::ParserATNSimulator>()->clearDFA();
318+
}
317319
delete m_ppparser;
318320
delete m_pptokens;
319321
delete m_pplexer;
@@ -364,6 +366,7 @@ bool PreprocessFile::preprocess() {
364366

365367
if (m_antlrParserHandler == nullptr) {
366368
m_antlrParserHandler = new AntlrParserHandler();
369+
m_antlrParserHandler->m_clearAntlrCache = clp->lowMem();
367370
if (m_macroBody.empty()) {
368371
if (m_debugPP)
369372
std::cout << "PP PREPROCESS FILE: " << PathIdPP(m_fileId) << std::endl;

0 commit comments

Comments
 (0)