summaryrefslogtreecommitdiff
path: root/src/wasm-traversal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm-traversal.h')
-rw-r--r--src/wasm-traversal.h49
1 files changed, 31 insertions, 18 deletions
diff --git a/src/wasm-traversal.h b/src/wasm-traversal.h
index fc6b1cbb8..94997caf1 100644
--- a/src/wasm-traversal.h
+++ b/src/wasm-traversal.h
@@ -71,7 +71,8 @@ template<typename SubType, typename ReturnType = void> struct Visitor {
ReturnType visitSelect(Select* curr) { return ReturnType(); }
ReturnType visitDrop(Drop* curr) { return ReturnType(); }
ReturnType visitReturn(Return* curr) { return ReturnType(); }
- ReturnType visitHost(Host* curr) { return ReturnType(); }
+ ReturnType visitMemorySize(MemorySize* curr) { return ReturnType(); }
+ ReturnType visitMemoryGrow(MemoryGrow* curr) { return ReturnType(); }
ReturnType visitRefNull(RefNull* curr) { return ReturnType(); }
ReturnType visitRefIsNull(RefIsNull* curr) { return ReturnType(); }
ReturnType visitRefFunc(RefFunc* curr) { return ReturnType(); }
@@ -169,8 +170,10 @@ template<typename SubType, typename ReturnType = void> struct Visitor {
DELEGATE(Drop);
case Expression::Id::ReturnId:
DELEGATE(Return);
- case Expression::Id::HostId:
- DELEGATE(Host);
+ case Expression::Id::MemorySizeId:
+ DELEGATE(MemorySize);
+ case Expression::Id::MemoryGrowId:
+ DELEGATE(MemoryGrow);
case Expression::Id::RefNullId:
DELEGATE(RefNull);
case Expression::Id::RefIsNullId:
@@ -252,7 +255,8 @@ struct OverriddenVisitor {
UNIMPLEMENTED(Select);
UNIMPLEMENTED(Drop);
UNIMPLEMENTED(Return);
- UNIMPLEMENTED(Host);
+ UNIMPLEMENTED(MemorySize);
+ UNIMPLEMENTED(MemoryGrow);
UNIMPLEMENTED(RefNull);
UNIMPLEMENTED(RefIsNull);
UNIMPLEMENTED(RefFunc);
@@ -351,8 +355,10 @@ struct OverriddenVisitor {
DELEGATE(Drop);
case Expression::Id::ReturnId:
DELEGATE(Return);
- case Expression::Id::HostId:
- DELEGATE(Host);
+ case Expression::Id::MemorySizeId:
+ DELEGATE(MemorySize);
+ case Expression::Id::MemoryGrowId:
+ DELEGATE(MemoryGrow);
case Expression::Id::RefNullId:
DELEGATE(RefNull);
case Expression::Id::RefIsNullId:
@@ -497,7 +503,10 @@ struct UnifiedExpressionVisitor : public Visitor<SubType, ReturnType> {
ReturnType visitReturn(Return* curr) {
return static_cast<SubType*>(this)->visitExpression(curr);
}
- ReturnType visitHost(Host* curr) {
+ ReturnType visitMemorySize(MemorySize* curr) {
+ return static_cast<SubType*>(this)->visitExpression(curr);
+ }
+ ReturnType visitMemoryGrow(MemoryGrow* curr) {
return static_cast<SubType*>(this)->visitExpression(curr);
}
ReturnType visitRefNull(RefNull* curr) {
@@ -811,8 +820,11 @@ struct Walker : public VisitorType {
static void doVisitReturn(SubType* self, Expression** currp) {
self->visitReturn((*currp)->cast<Return>());
}
- static void doVisitHost(SubType* self, Expression** currp) {
- self->visitHost((*currp)->cast<Host>());
+ static void doVisitMemorySize(SubType* self, Expression** currp) {
+ self->visitMemorySize((*currp)->cast<MemorySize>());
+ }
+ static void doVisitMemoryGrow(SubType* self, Expression** currp) {
+ self->visitMemoryGrow((*currp)->cast<MemoryGrow>());
}
static void doVisitRefNull(SubType* self, Expression** currp) {
self->visitRefNull((*currp)->cast<RefNull>());
@@ -1076,14 +1088,13 @@ struct PostWalker : public Walker<SubType, VisitorType> {
self->maybePushTask(SubType::scan, &curr->cast<Return>()->value);
break;
}
- case Expression::Id::HostId: {
- self->pushTask(SubType::doVisitHost, currp);
- auto& list = curr->cast<Host>()->operands;
- for (int i = int(list.size()) - 1; i >= 0; i--) {
- self->pushTask(SubType::scan, &list[i]);
- }
+ case Expression::Id::MemorySizeId:
+ self->pushTask(SubType::doVisitMemorySize, currp);
+ break;
+ case Expression::Id::MemoryGrowId:
+ self->pushTask(SubType::doVisitMemoryGrow, currp);
+ self->pushTask(SubType::scan, &curr->cast<MemoryGrow>()->delta);
break;
- }
case Expression::Id::RefNullId: {
self->pushTask(SubType::doVisitRefNull, currp);
break;
@@ -1210,7 +1221,8 @@ struct ControlFlowWalker : public PostWalker<SubType, VisitorType> {
self->pushTask(SubType::doPostVisitControlFlow, currp);
break;
}
- default: {}
+ default: {
+ }
}
PostWalker<SubType, VisitorType>::scan(self, currp);
@@ -1223,7 +1235,8 @@ struct ControlFlowWalker : public PostWalker<SubType, VisitorType> {
self->pushTask(SubType::doPreVisitControlFlow, currp);
break;
}
- default: {}
+ default: {
+ }
}
}
};