summaryrefslogtreecommitdiff
path: root/src/passes/Poppify.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/passes/Poppify.cpp')
-rw-r--r--src/passes/Poppify.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/passes/Poppify.cpp b/src/passes/Poppify.cpp
index b0d07e60c..2ab222697 100644
--- a/src/passes/Poppify.cpp
+++ b/src/passes/Poppify.cpp
@@ -128,6 +128,7 @@ struct Poppifier : BinaryenIRWriter<Poppifier> {
void emitIfElse(If* curr);
void emitCatch(Try* curr, Index i);
void emitCatchAll(Try* curr);
+ void emitDelegate(Try* curr);
void emitScopeEnd(Expression* curr);
void emitFunctionEnd();
void emitUnreachable();
@@ -272,6 +273,13 @@ void Poppifier::emitCatchAll(Try* curr) {
scopeStack.emplace_back(Scope::Catch);
}
+void Poppifier::emitDelegate(Try* curr) {
+ auto& scope = scopeStack.back();
+ assert(scope.kind == Scope::Try);
+ patchScope(curr->body);
+ scopeStack.back().instrs.push_back(curr);
+}
+
void Poppifier::emitScopeEnd(Expression* curr) {
switch (scopeStack.back().kind) {
case Scope::Block: