summaryrefslogtreecommitdiff
path: root/src/synthesis.cc
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2014-11-09 16:20:20 -0500
committerAdrian Thurston <thurston@complang.org>2014-11-09 16:20:20 -0500
commitffdf34999edea7fdc176ab4ac36bd3993f5d1061 (patch)
treee5ece58d19c841314a5f7597b3a5f75ab3a2f94f /src/synthesis.cc
parent9a184d893dc837865cbf1ed42a8fbf34a7f88ac3 (diff)
downloadcolm-ffdf34999edea7fdc176ab4ac36bd3993f5d1061.tar.gz
immediately new/deref the parser in parse statements
This forces the parser to exist on the heap, where we can clean it up with the new object downref machinery.
Diffstat (limited to 'src/synthesis.cc')
-rw-r--r--src/synthesis.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/synthesis.cc b/src/synthesis.cc
index 0d4e947c..10c09b4c 100644
--- a/src/synthesis.cc
+++ b/src/synthesis.cc
@@ -1221,6 +1221,8 @@ UniqueType *LangTerm::evaluateParse( Compiler *pd, CodeVect &code,
/* Construct the parser. */
code.append( IN_CONS_GENERIC );
code.appendHalf( parserUT->langEl->generic->id );
+ code.append( IN_TREE_NEW );
+ code.append( IN_PTR_DEREF_R );
/* Dup for the finish operation. */
code.append( IN_DUP_TOP );