From 9f0127c3c82203d308e4230a4b32304e155d05c7 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Thu, 23 Feb 2023 18:04:49 -0500 Subject: fix cell size handling; optimize for speed --- parser.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'parser.cpp') diff --git a/parser.cpp b/parser.cpp index 8a77df5..0883230 100644 --- a/parser.cpp +++ b/parser.cpp @@ -54,19 +54,20 @@ ParseStatus Parser::parseWord(State& state, Word word) { int ins, imm; - ins = CoreWords::findi(state, word); - if (ins < 0) { - ins = state.dict.find(word); + ins = state.dict.find(word); - if (ins <= 0) { + if (ins <= 0) { + ins = CoreWords::findi(state, word); + + if (ins < 0) { return parseNumber(state, word); } else { - imm = state.dict.read(ins) & CoreWords::Immediate; - ins = state.dict.getexec(ins); + imm = ins & CoreWords::Compiletime; + ins &= ~CoreWords::Compiletime; } } else { - imm = ins & CoreWords::Compiletime; - ins &= ~CoreWords::Compiletime; + imm = state.dict.read(ins) & CoreWords::Immediate; + ins = state.dict.getexec(ins); } if (state.dict.read(Dictionary::Postpone)) { -- cgit v1.2.3