aboutsummaryrefslogtreecommitdiff
path: root/stmt.h
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2016-02-17 17:19:21 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2016-02-17 17:19:21 +0900
commit92a4738218523292a0cec0310023eed194025f24 (patch)
tree384f420b0b9c8254be840caeb22d4b8576522db2 /stmt.h
parent121165ed878d844662a25d5ee3b95ab1ceaddca2 (diff)
[C++] Add a fast path for interning lhs of assignments
Diffstat (limited to 'stmt.h')
-rw-r--r--stmt.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/stmt.h b/stmt.h
index 4d4c5eb..3b6feeb 100644
--- a/stmt.h
+++ b/stmt.h
@@ -20,6 +20,7 @@
#include "loc.h"
#include "string_piece.h"
+#include "symtab.h"
using namespace std;
@@ -85,11 +86,19 @@ struct AssignStmt : public Stmt {
AssignOp op;
AssignDirective directive;
+ AssignStmt()
+ : lhs_sym_cache_(Symbol::IsUninitialized{}) {
+ }
virtual ~AssignStmt();
virtual void Eval(Evaluator* ev) const;
virtual string DebugString() const;
+
+ Symbol GetLhsSymbol(Evaluator* ev) const;
+
+ private:
+ mutable Symbol lhs_sym_cache_;
};
struct CommandStmt : public Stmt {