diff options
-rw-r--r-- | src/ir/ExpressionAnalyzer.cpp | 88 | ||||
-rw-r--r-- | src/ir/ExpressionManipulator.cpp | 60 | ||||
-rw-r--r-- | src/ir/branch-utils.h | 62 | ||||
-rw-r--r-- | src/ir/iteration.h | 34 | ||||
-rw-r--r-- | src/ir/properties.h | 32 | ||||
-rw-r--r-- | src/ir/type-updating.cpp | 30 | ||||
-rw-r--r-- | src/wasm-delegations-fields.def | 90 | ||||
-rw-r--r-- | src/wasm-traversal.h | 40 |
8 files changed, 218 insertions, 218 deletions
diff --git a/src/ir/ExpressionAnalyzer.cpp b/src/ir/ExpressionAnalyzer.cpp index db972e707..c6b24beaa 100644 --- a/src/ir/ExpressionAnalyzer.cpp +++ b/src/ir/ExpressionAnalyzer.cpp @@ -169,64 +169,64 @@ bool ExpressionAnalyzer::flexibleEqual(Expression* left, WASM_UNUSED(castRight); // Handle each type of field, comparing it appropriately. -#define DELEGATE_FIELD_CHILD(id, name) \ - leftStack.push_back(castLeft->name); \ - rightStack.push_back(castRight->name); +#define DELEGATE_FIELD_CHILD(id, field) \ + leftStack.push_back(castLeft->field); \ + rightStack.push_back(castRight->field); -#define DELEGATE_FIELD_CHILD_VECTOR(id, name) \ - if (castLeft->name.size() != castRight->name.size()) { \ +#define DELEGATE_FIELD_CHILD_VECTOR(id, field) \ + if (castLeft->field.size() != castRight->field.size()) { \ return false; \ } \ - for (auto* child : castLeft->name) { \ + for (auto* child : castLeft->field) { \ leftStack.push_back(child); \ } \ - for (auto* child : castRight->name) { \ + for (auto* child : castRight->field) { \ rightStack.push_back(child); \ } -#define COMPARE_FIELD(name) \ - if (castLeft->name != castRight->name) { \ +#define COMPARE_FIELD(field) \ + if (castLeft->field != castRight->field) { \ return false; \ } -#define DELEGATE_FIELD_INT(id, name) COMPARE_FIELD(name) -#define DELEGATE_FIELD_LITERAL(id, name) COMPARE_FIELD(name) -#define DELEGATE_FIELD_NAME(id, name) COMPARE_FIELD(name) -#define DELEGATE_FIELD_SIGNATURE(id, name) COMPARE_FIELD(name) -#define DELEGATE_FIELD_TYPE(id, name) COMPARE_FIELD(name) -#define DELEGATE_FIELD_HEAPTYPE(id, name) COMPARE_FIELD(name) -#define DELEGATE_FIELD_ADDRESS(id, name) COMPARE_FIELD(name) +#define DELEGATE_FIELD_INT(id, field) COMPARE_FIELD(field) +#define DELEGATE_FIELD_LITERAL(id, field) COMPARE_FIELD(field) +#define DELEGATE_FIELD_NAME(id, field) COMPARE_FIELD(field) +#define DELEGATE_FIELD_SIGNATURE(id, field) COMPARE_FIELD(field) +#define DELEGATE_FIELD_TYPE(id, field) COMPARE_FIELD(field) +#define DELEGATE_FIELD_HEAPTYPE(id, field) COMPARE_FIELD(field) +#define DELEGATE_FIELD_ADDRESS(id, field) COMPARE_FIELD(field) -#define COMPARE_LIST(name) \ - if (castLeft->name.size() != castRight->name.size()) { \ +#define COMPARE_LIST(field) \ + if (castLeft->field.size() != castRight->field.size()) { \ return false; \ } \ - for (Index i = 0; i < castLeft->name.size(); i++) { \ - if (castLeft->name[i] != castRight->name[i]) { \ + for (Index i = 0; i < castLeft->field.size(); i++) { \ + if (castLeft->field[i] != castRight->field[i]) { \ return false; \ } \ } -#define DELEGATE_FIELD_INT_ARRAY(id, name) COMPARE_LIST(name) -#define DELEGATE_FIELD_NAME_VECTOR(id, name) COMPARE_LIST(name) +#define DELEGATE_FIELD_INT_ARRAY(id, field) COMPARE_LIST(field) +#define DELEGATE_FIELD_NAME_VECTOR(id, field) COMPARE_LIST(field) -#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) \ - if (castLeft->name.is() != castRight->name.is()) { \ +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, field) \ + if (castLeft->field.is() != castRight->field.is()) { \ return false; \ } \ - rightNames[castLeft->name] = castRight->name; + rightNames[castLeft->field] = castRight->field; -#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) \ - if (!compareNames(castLeft->name, castRight->name)) { \ +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, field) \ + if (!compareNames(castLeft->field, castRight->field)) { \ return false; \ } -#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) \ - if (castLeft->name.size() != castRight->name.size()) { \ +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, field) \ + if (castLeft->field.size() != castRight->field.size()) { \ return false; \ } \ - for (Index i = 0; i < castLeft->name.size(); i++) { \ - if (!compareNames(castLeft->name[i], castRight->name[i])) { \ + for (Index i = 0; i < castLeft->field.size(); i++) { \ + if (!compareNames(castLeft->field[i], castRight->field[i])) { \ return false; \ } \ } @@ -303,31 +303,31 @@ struct Hasher { WASM_UNUSED(cast); // Handle each type of field, comparing it appropriately. -#define DELEGATE_GET_FIELD(id, name) cast->name +#define DELEGATE_GET_FIELD(id, field) cast->field -#define DELEGATE_FIELD_CHILD(id, name) \ +#define DELEGATE_FIELD_CHILD(id, field) \ if (visitChildren) { \ - stack.push_back(cast->name); \ + stack.push_back(cast->field); \ } -#define HASH_FIELD(name) rehash(digest, cast->name); +#define HASH_FIELD(field) rehash(digest, cast->field); -#define DELEGATE_FIELD_INT(id, name) HASH_FIELD(name) -#define DELEGATE_FIELD_LITERAL(id, name) HASH_FIELD(name) -#define DELEGATE_FIELD_SIGNATURE(id, name) HASH_FIELD(name) +#define DELEGATE_FIELD_INT(id, field) HASH_FIELD(field) +#define DELEGATE_FIELD_LITERAL(id, field) HASH_FIELD(field) +#define DELEGATE_FIELD_SIGNATURE(id, field) HASH_FIELD(field) -#define DELEGATE_FIELD_NAME(id, name) visitNonScopeName(cast->name) -#define DELEGATE_FIELD_TYPE(id, name) visitType(cast->name); -#define DELEGATE_FIELD_HEAPTYPE(id, name) visitHeapType(cast->name); -#define DELEGATE_FIELD_ADDRESS(id, name) visitAddress(cast->name); +#define DELEGATE_FIELD_NAME(id, field) visitNonScopeName(cast->field) +#define DELEGATE_FIELD_TYPE(id, field) visitType(cast->field); +#define DELEGATE_FIELD_HEAPTYPE(id, field) visitHeapType(cast->field); +#define DELEGATE_FIELD_ADDRESS(id, field) visitAddress(cast->field); // Note that we only note the scope name, but do not also visit it. That means // that (block $x) and (block) get the same hash. In other words, we only change // the hash based on uses of scope names, that is when there is a noticeable // difference in break targets. -#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) noteScopeName(cast->name); +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, field) noteScopeName(cast->field); -#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) visitScopeName(cast->name); +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, field) visitScopeName(cast->field); #include "wasm-delegations-fields.def" } diff --git a/src/ir/ExpressionManipulator.cpp b/src/ir/ExpressionManipulator.cpp index 8ae3ddc1c..e92efa925 100644 --- a/src/ir/ExpressionManipulator.cpp +++ b/src/ir/ExpressionManipulator.cpp @@ -63,44 +63,44 @@ flexibleCopy(Expression* original, Module& wasm, CustomCopier custom) { WASM_UNUSED(castCopy); // Handle each type of field, copying it appropriately. -#define DELEGATE_FIELD_CHILD(id, name) \ - tasks.push_back({castOriginal->name, &castCopy->name}); +#define DELEGATE_FIELD_CHILD(id, field) \ + tasks.push_back({castOriginal->field, &castCopy->field}); -#define DELEGATE_FIELD_CHILD_VECTOR(id, name) \ - castCopy->name.resize(castOriginal->name.size()); \ - for (Index i = 0; i < castOriginal->name.size(); i++) { \ - tasks.push_back({castOriginal->name[i], &castCopy->name[i]}); \ +#define DELEGATE_FIELD_CHILD_VECTOR(id, field) \ + castCopy->field.resize(castOriginal->field.size()); \ + for (Index i = 0; i < castOriginal->field.size(); i++) { \ + tasks.push_back({castOriginal->field[i], &castCopy->field[i]}); \ } -#define COPY_FIELD(name) castCopy->name = castOriginal->name; - -#define DELEGATE_FIELD_INT(id, name) COPY_FIELD(name) -#define DELEGATE_FIELD_LITERAL(id, name) COPY_FIELD(name) -#define DELEGATE_FIELD_NAME(id, name) COPY_FIELD(name) -#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) COPY_FIELD(name) -#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) COPY_FIELD(name) -#define DELEGATE_FIELD_SIGNATURE(id, name) COPY_FIELD(name) -#define DELEGATE_FIELD_TYPE(id, name) COPY_FIELD(name) -#define DELEGATE_FIELD_HEAPTYPE(id, name) COPY_FIELD(name) -#define DELEGATE_FIELD_ADDRESS(id, name) COPY_FIELD(name) - -#define COPY_FIELD_LIST(name) \ - for (Index i = 0; i < castOriginal->name.size(); i++) { \ - castCopy->name[i] = castOriginal->name[i]; \ +#define COPY_FIELD(field) castCopy->field = castOriginal->field; + +#define DELEGATE_FIELD_INT(id, field) COPY_FIELD(field) +#define DELEGATE_FIELD_LITERAL(id, field) COPY_FIELD(field) +#define DELEGATE_FIELD_NAME(id, field) COPY_FIELD(field) +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, field) COPY_FIELD(field) +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, field) COPY_FIELD(field) +#define DELEGATE_FIELD_SIGNATURE(id, field) COPY_FIELD(field) +#define DELEGATE_FIELD_TYPE(id, field) COPY_FIELD(field) +#define DELEGATE_FIELD_HEAPTYPE(id, field) COPY_FIELD(field) +#define DELEGATE_FIELD_ADDRESS(id, field) COPY_FIELD(field) + +#define COPY_FIELD_LIST(field) \ + for (Index i = 0; i < castOriginal->field.size(); i++) { \ + castCopy->field[i] = castOriginal->field[i]; \ } -#define COPY_VECTOR(name) \ - castCopy->name.resize(castOriginal->name.size()); \ - COPY_FIELD_LIST(name) +#define COPY_VECTOR(field) \ + castCopy->field.resize(castOriginal->field.size()); \ + COPY_FIELD_LIST(field) -#define COPY_ARRAY(name) \ - assert(castCopy->name.size() == castOriginal->name.size()); \ - COPY_FIELD_LIST(name) +#define COPY_ARRAY(field) \ + assert(castCopy->field.size() == castOriginal->field.size()); \ + COPY_FIELD_LIST(field) -#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) COPY_VECTOR(name) -#define DELEGATE_FIELD_NAME_VECTOR(id, name) COPY_VECTOR(name) +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, field) COPY_VECTOR(field) +#define DELEGATE_FIELD_NAME_VECTOR(id, field) COPY_VECTOR(field) -#define DELEGATE_FIELD_INT_ARRAY(id, name) COPY_ARRAY(name) +#define DELEGATE_FIELD_INT_ARRAY(id, field) COPY_ARRAY(field) #include "wasm-delegations-fields.def" diff --git a/src/ir/branch-utils.h b/src/ir/branch-utils.h index 57bad2fb9..25bfd9255 100644 --- a/src/ir/branch-utils.h +++ b/src/ir/branch-utils.h @@ -50,22 +50,22 @@ template<typename T> void operateOnScopeNameUses(Expression* expr, T func) { auto* cast = expr->cast<id>(); \ WASM_UNUSED(cast); -#define DELEGATE_GET_FIELD(id, name) cast->name - -#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) func(cast->name); - -#define DELEGATE_FIELD_CHILD(id, name) -#define DELEGATE_FIELD_INT(id, name) -#define DELEGATE_FIELD_LITERAL(id, name) -#define DELEGATE_FIELD_NAME(id, name) -#define DELEGATE_FIELD_NAME_VECTOR(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) -#define DELEGATE_FIELD_SIGNATURE(id, name) -#define DELEGATE_FIELD_TYPE(id, name) -#define DELEGATE_FIELD_HEAPTYPE(id, name) -#define DELEGATE_FIELD_ADDRESS(id, name) -#define DELEGATE_FIELD_CHILD_VECTOR(id, name) -#define DELEGATE_FIELD_INT_ARRAY(id, name) +#define DELEGATE_GET_FIELD(id, field) cast->field + +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, field) func(cast->field); + +#define DELEGATE_FIELD_CHILD(id, field) +#define DELEGATE_FIELD_INT(id, field) +#define DELEGATE_FIELD_LITERAL(id, field) +#define DELEGATE_FIELD_NAME(id, field) +#define DELEGATE_FIELD_NAME_VECTOR(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, field) +#define DELEGATE_FIELD_SIGNATURE(id, field) +#define DELEGATE_FIELD_TYPE(id, field) +#define DELEGATE_FIELD_HEAPTYPE(id, field) +#define DELEGATE_FIELD_ADDRESS(id, field) +#define DELEGATE_FIELD_CHILD_VECTOR(id, field) +#define DELEGATE_FIELD_INT_ARRAY(id, field) #include "wasm-delegations-fields.def" } @@ -117,21 +117,21 @@ template<typename T> void operateOnScopeNameDefs(Expression* expr, T func) { auto* cast = expr->cast<id>(); \ WASM_UNUSED(cast); -#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) func(cast->name) - -#define DELEGATE_FIELD_CHILD(id, name) -#define DELEGATE_FIELD_INT(id, name) -#define DELEGATE_FIELD_LITERAL(id, name) -#define DELEGATE_FIELD_NAME(id, name) -#define DELEGATE_FIELD_NAME_VECTOR(id, name) -#define DELEGATE_FIELD_SIGNATURE(id, name) -#define DELEGATE_FIELD_TYPE(id, name) -#define DELEGATE_FIELD_HEAPTYPE(id, name) -#define DELEGATE_FIELD_ADDRESS(id, name) -#define DELEGATE_FIELD_CHILD_VECTOR(id, name) -#define DELEGATE_FIELD_INT_ARRAY(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, field) func(cast->field) + +#define DELEGATE_FIELD_CHILD(id, field) +#define DELEGATE_FIELD_INT(id, field) +#define DELEGATE_FIELD_LITERAL(id, field) +#define DELEGATE_FIELD_NAME(id, field) +#define DELEGATE_FIELD_NAME_VECTOR(id, field) +#define DELEGATE_FIELD_SIGNATURE(id, field) +#define DELEGATE_FIELD_TYPE(id, field) +#define DELEGATE_FIELD_HEAPTYPE(id, field) +#define DELEGATE_FIELD_ADDRESS(id, field) +#define DELEGATE_FIELD_CHILD_VECTOR(id, field) +#define DELEGATE_FIELD_INT_ARRAY(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, field) #include "wasm-delegations-fields.def" } diff --git a/src/ir/iteration.h b/src/ir/iteration.h index 19bc44af1..b3553f1ec 100644 --- a/src/ir/iteration.h +++ b/src/ir/iteration.h @@ -79,27 +79,27 @@ public: auto* cast = parent->cast<id>(); \ WASM_UNUSED(cast); -#define DELEGATE_GET_FIELD(id, name) cast->name +#define DELEGATE_GET_FIELD(id, field) cast->field -#define DELEGATE_FIELD_CHILD(id, name) self->addChild(parent, &cast->name); +#define DELEGATE_FIELD_CHILD(id, field) self->addChild(parent, &cast->field); -#define DELEGATE_FIELD_OPTIONAL_CHILD(id, name) \ - if (cast->name) { \ - self->addChild(parent, &cast->name); \ +#define DELEGATE_FIELD_OPTIONAL_CHILD(id, field) \ + if (cast->field) { \ + self->addChild(parent, &cast->field); \ } -#define DELEGATE_FIELD_INT(id, name) -#define DELEGATE_FIELD_INT_ARRAY(id, name) -#define DELEGATE_FIELD_LITERAL(id, name) -#define DELEGATE_FIELD_NAME(id, name) -#define DELEGATE_FIELD_NAME_VECTOR(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) -#define DELEGATE_FIELD_SIGNATURE(id, name) -#define DELEGATE_FIELD_TYPE(id, name) -#define DELEGATE_FIELD_HEAPTYPE(id, name) -#define DELEGATE_FIELD_ADDRESS(id, name) +#define DELEGATE_FIELD_INT(id, field) +#define DELEGATE_FIELD_INT_ARRAY(id, field) +#define DELEGATE_FIELD_LITERAL(id, field) +#define DELEGATE_FIELD_NAME(id, field) +#define DELEGATE_FIELD_NAME_VECTOR(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, field) +#define DELEGATE_FIELD_SIGNATURE(id, field) +#define DELEGATE_FIELD_TYPE(id, field) +#define DELEGATE_FIELD_HEAPTYPE(id, field) +#define DELEGATE_FIELD_ADDRESS(id, field) #include "wasm-delegations-fields.def" } diff --git a/src/ir/properties.h b/src/ir/properties.h index 841d154f7..f111d555f 100644 --- a/src/ir/properties.h +++ b/src/ir/properties.h @@ -321,27 +321,27 @@ inline Index getNumChildren(Expression* curr) { auto* cast = curr->cast<id>(); \ WASM_UNUSED(cast); -#define DELEGATE_GET_FIELD(id, name) cast->name +#define DELEGATE_GET_FIELD(id, field) cast->field -#define DELEGATE_FIELD_CHILD(id, name) ret++; +#define DELEGATE_FIELD_CHILD(id, field) ret++; -#define DELEGATE_FIELD_OPTIONAL_CHILD(id, name) \ - if (cast->name) { \ +#define DELEGATE_FIELD_OPTIONAL_CHILD(id, field) \ + if (cast->field) { \ ret++; \ } -#define DELEGATE_FIELD_INT(id, name) -#define DELEGATE_FIELD_INT_ARRAY(id, name) -#define DELEGATE_FIELD_LITERAL(id, name) -#define DELEGATE_FIELD_NAME(id, name) -#define DELEGATE_FIELD_NAME_VECTOR(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) -#define DELEGATE_FIELD_SIGNATURE(id, name) -#define DELEGATE_FIELD_TYPE(id, name) -#define DELEGATE_FIELD_HEAPTYPE(id, name) -#define DELEGATE_FIELD_ADDRESS(id, name) +#define DELEGATE_FIELD_INT(id, field) +#define DELEGATE_FIELD_INT_ARRAY(id, field) +#define DELEGATE_FIELD_LITERAL(id, field) +#define DELEGATE_FIELD_NAME(id, field) +#define DELEGATE_FIELD_NAME_VECTOR(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, field) +#define DELEGATE_FIELD_SIGNATURE(id, field) +#define DELEGATE_FIELD_TYPE(id, field) +#define DELEGATE_FIELD_HEAPTYPE(id, field) +#define DELEGATE_FIELD_ADDRESS(id, field) #include "wasm-delegations-fields.def" diff --git a/src/ir/type-updating.cpp b/src/ir/type-updating.cpp index 91f74cff5..c69cbe1be 100644 --- a/src/ir/type-updating.cpp +++ b/src/ir/type-updating.cpp @@ -131,25 +131,25 @@ void GlobalTypeRewriter::update() { auto* cast = curr->cast<id>(); \ WASM_UNUSED(cast); -#define DELEGATE_GET_FIELD(id, name) cast->name +#define DELEGATE_GET_FIELD(id, field) cast->field -#define DELEGATE_FIELD_TYPE(id, name) cast->name = getNew(cast->name); +#define DELEGATE_FIELD_TYPE(id, field) cast->field = getNew(cast->field); -#define DELEGATE_FIELD_HEAPTYPE(id, name) cast->name = getNew(cast->name); +#define DELEGATE_FIELD_HEAPTYPE(id, field) cast->field = getNew(cast->field); -#define DELEGATE_FIELD_SIGNATURE(id, name) cast->name = getNew(cast->name); +#define DELEGATE_FIELD_SIGNATURE(id, field) cast->field = getNew(cast->field); -#define DELEGATE_FIELD_CHILD(id, name) -#define DELEGATE_FIELD_OPTIONAL_CHILD(id, name) -#define DELEGATE_FIELD_INT(id, name) -#define DELEGATE_FIELD_INT_ARRAY(id, name) -#define DELEGATE_FIELD_LITERAL(id, name) -#define DELEGATE_FIELD_NAME(id, name) -#define DELEGATE_FIELD_NAME_VECTOR(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) -#define DELEGATE_FIELD_ADDRESS(id, name) +#define DELEGATE_FIELD_CHILD(id, field) +#define DELEGATE_FIELD_OPTIONAL_CHILD(id, field) +#define DELEGATE_FIELD_INT(id, field) +#define DELEGATE_FIELD_INT_ARRAY(id, field) +#define DELEGATE_FIELD_LITERAL(id, field) +#define DELEGATE_FIELD_NAME(id, field) +#define DELEGATE_FIELD_NAME_VECTOR(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, field) +#define DELEGATE_FIELD_ADDRESS(id, field) #include "wasm-delegations-fields.def" } diff --git a/src/wasm-delegations-fields.def b/src/wasm-delegations-fields.def index d5fc7b077..c214b5b6b 100644 --- a/src/wasm-delegations-fields.def +++ b/src/wasm-delegations-fields.def @@ -29,56 +29,56 @@ // // DELEGATE_END(id) - called at the end of a case. // -// DELEGATE_GET_FIELD(id, name) - called to get a field by its name. This must +// DELEGATE_GET_FIELD(id, field) - called to get a field by its name. This must // know the object on which to get it, so it is just useful for the case // where you operate on a single such object, but in that case it is nice // because then other things can be defined automatically for you, see later. // -// DELEGATE_FIELD_CHILD(id, name) - called for each child field (note: children +// DELEGATE_FIELD_CHILD(id, field) - called for each child field (note: children // are visited in reverse order, which is convenient for walking by pushing // them to a stack first). // -// DELEGATE_FIELD_OPTIONAL_CHILD(id, name) - called for a child that may not be +// DELEGATE_FIELD_OPTIONAL_CHILD(id, field) - called for a child that may not be // present (like a Return's value). If you do not define this then // DELEGATE_FIELD_CHILD is called. // -// DELEGATE_FIELD_CHILD_VECTOR(id, name) - called for a variable-sized vector of -// child pointers. If this is not defined, and DELEGATE_GET_FIELD is, then +// DELEGATE_FIELD_CHILD_VECTOR(id, field) - called for a variable-sized vector +// of child pointers. If this is not defined, and DELEGATE_GET_FIELD is, then // DELEGATE_FIELD_CHILD is called on them. // -// DELEGATE_FIELD_INT(id, name) - called for an integer field (bool, enum, +// DELEGATE_FIELD_INT(id, field) - called for an integer field (bool, enum, // Index, int32, or int64). // -// DELEGATE_FIELD_INT_ARRAY(id, name) - called for a std::array of fixed size of -// integer values (like a SIMD mask). If this is not defined, and +// DELEGATE_FIELD_INT_ARRAY(id, field) - called for a std::array of fixed size +// of integer values (like a SIMD mask). If this is not defined, and // DELEGATE_GET_FIELD is, then DELEGATE_FIELD_INT is called on them. // -// DELEGATE_FIELD_LITERAL(id, name) - called for a Literal. +// DELEGATE_FIELD_LITERAL(id, field) - called for a Literal. // -// DELEGATE_FIELD_NAME(id, name) - called for a Name. +// DELEGATE_FIELD_NAME(id, field) - called for a Name. // -// DELEGATE_FIELD_NAME_VECTOR(id, name) - called for a variable-sized vector of +// DELEGATE_FIELD_NAME_VECTOR(id, field) - called for a variable-sized vector of // names (like try's catch tag names). If this is not defined, and // DELEGATE_GET_FIELD is, then DELEGATE_FIELD_CHILD is called on them. // -// DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) - called for a scope name definition +// DELEGATE_FIELD_SCOPE_NAME_DEF(id, field) - called for a scope name definition // (like a block's name). // -// DELEGATE_FIELD_SCOPE_NAME_USE(id, name) - called for a scope name use (like +// DELEGATE_FIELD_SCOPE_NAME_USE(id, field) - called for a scope name use (like // a break's target). // -// DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) - called for a variable-sized +// DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, field) - called for a variable-sized // vector of scope names (like a switch's targets). If this is not defined, // and DELEGATE_GET_FIELD is, then DELEGATE_FIELD_SCOPE_NAME_USE is called on // them. // -// DELEGATE_FIELD_SIGNATURE(id, name) - called for a Signature. +// DELEGATE_FIELD_SIGNATURE(id, field) - called for a Signature. // -// DELEGATE_FIELD_TYPE(id, name) - called for a Type. +// DELEGATE_FIELD_TYPE(id, field) - called for a Type. // -// DELEGATE_FIELD_HEAPTYPE(id, name) - called for a HeapType. +// DELEGATE_FIELD_HEAPTYPE(id, field) - called for a HeapType. // -// DELEGATE_FIELD_ADDRESS(id, name) - called for an Address. +// DELEGATE_FIELD_ADDRESS(id, field) - called for an Address. #ifndef DELEGATE_START #define DELEGATE_START(id) @@ -89,91 +89,91 @@ #endif #ifndef DELEGATE_FIELD_CHILD -#error please define DELEGATE_FIELD_CHILD(id, name) +#error please define DELEGATE_FIELD_CHILD(id, field) #endif #ifndef DELEGATE_FIELD_OPTIONAL_CHILD -#define DELEGATE_FIELD_OPTIONAL_CHILD(id, name) DELEGATE_FIELD_CHILD(id, name) +#define DELEGATE_FIELD_OPTIONAL_CHILD(id, field) DELEGATE_FIELD_CHILD(id, field) #endif #ifndef DELEGATE_FIELD_CHILD_VECTOR #ifdef DELEGATE_GET_FIELD -#define DELEGATE_FIELD_CHILD_VECTOR(id, name) \ - for (int i = int((DELEGATE_GET_FIELD(id, name)).size()) - 1; i >= 0; i--) { \ - DELEGATE_FIELD_CHILD(id, name[i]); \ +#define DELEGATE_FIELD_CHILD_VECTOR(id, field) \ + for (int i = int((DELEGATE_GET_FIELD(id, field)).size()) - 1; i >= 0; i--) { \ + DELEGATE_FIELD_CHILD(id, field[i]); \ } #else -#error please define DELEGATE_FIELD_CHILD_VECTOR(id, name) +#error please define DELEGATE_FIELD_CHILD_VECTOR(id, field) #endif #endif #ifndef DELEGATE_FIELD_INT -#error please define DELEGATE_FIELD_INT(id, name) +#error please define DELEGATE_FIELD_INT(id, field) #endif #ifndef DELEGATE_FIELD_INT_ARRAY #ifdef DELEGATE_GET_FIELD -#define DELEGATE_FIELD_INT_ARRAY(id, name) \ - for (Index i = 0; i < (DELEGATE_GET_FIELD(id, name)).size(); i++) { \ - DELEGATE_FIELD_INT(id, name[i]); \ +#define DELEGATE_FIELD_INT_ARRAY(id, field) \ + for (Index i = 0; i < (DELEGATE_GET_FIELD(id, field)).size(); i++) { \ + DELEGATE_FIELD_INT(id, field[i]); \ } #else -#error please define DELEGATE_FIELD_INT_ARRAY(id, name) +#error please define DELEGATE_FIELD_INT_ARRAY(id, field) #endif #endif #ifndef DELEGATE_FIELD_LITERAL -#error please define DELEGATE_FIELD_LITERAL(id, name) +#error please define DELEGATE_FIELD_LITERAL(id, field) #endif #ifndef DELEGATE_FIELD_NAME -#error please define DELEGATE_FIELD_NAME(id, name) +#error please define DELEGATE_FIELD_NAME(id, field) #endif #ifndef DELEGATE_FIELD_NAME_VECTOR #ifdef DELEGATE_GET_FIELD -#define DELEGATE_FIELD_NAME_VECTOR(id, name) \ - for (Index i = 0; i < (DELEGATE_GET_FIELD(id, name)).size(); i++) { \ - DELEGATE_FIELD_NAME(id, name[i]); \ +#define DELEGATE_FIELD_NAME_VECTOR(id, field) \ + for (Index i = 0; i < (DELEGATE_GET_FIELD(id, field)).size(); i++) { \ + DELEGATE_FIELD_NAME(id, field[i]); \ } #else -#error please define DELEGATE_FIELD_NAME_VECTOR(id, name) +#error please define DELEGATE_FIELD_NAME_VECTOR(id, field) #endif #endif #ifndef DELEGATE_FIELD_SCOPE_NAME_DEF -#error please define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) +#error please define DELEGATE_FIELD_SCOPE_NAME_DEF(id, field) #endif #ifndef DELEGATE_FIELD_SCOPE_NAME_USE -#error please define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) +#error please define DELEGATE_FIELD_SCOPE_NAME_USE(id, field) #endif #ifndef DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR #ifdef DELEGATE_GET_FIELD -#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) \ - for (Index i = 0; i < (DELEGATE_GET_FIELD(id, name)).size(); i++) { \ - DELEGATE_FIELD_SCOPE_NAME_USE(id, name[i]); \ +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, field) \ + for (Index i = 0; i < (DELEGATE_GET_FIELD(id, field)).size(); i++) { \ + DELEGATE_FIELD_SCOPE_NAME_USE(id, field[i]); \ } #else -#error please define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) +#error please define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, field) #endif #endif #ifndef DELEGATE_FIELD_SIGNATURE -#error please define DELEGATE_FIELD_SIGNATURE(id, name) +#error please define DELEGATE_FIELD_SIGNATURE(id, field) #endif #ifndef DELEGATE_FIELD_TYPE -#error please define DELEGATE_FIELD_TYPE(id, name) +#error please define DELEGATE_FIELD_TYPE(id, field) #endif #ifndef DELEGATE_FIELD_HEAPTYPE -#error please define DELEGATE_FIELD_HEAPTYPE(id, name) +#error please define DELEGATE_FIELD_HEAPTYPE(id, field) #endif #ifndef DELEGATE_FIELD_ADDRESS -#error please define DELEGATE_FIELD_ADDRESS(id, name) +#error please define DELEGATE_FIELD_ADDRESS(id, field) #endif switch (DELEGATE_ID) { diff --git a/src/wasm-traversal.h b/src/wasm-traversal.h index 47e99226d..201cc95fa 100644 --- a/src/wasm-traversal.h +++ b/src/wasm-traversal.h @@ -355,26 +355,26 @@ struct PostWalker : public Walker<SubType, VisitorType> { auto* cast = curr->cast<id>(); \ WASM_UNUSED(cast); -#define DELEGATE_GET_FIELD(id, name) cast->name - -#define DELEGATE_FIELD_CHILD(id, name) \ - self->pushTask(SubType::scan, &cast->name); - -#define DELEGATE_FIELD_OPTIONAL_CHILD(id, name) \ - self->maybePushTask(SubType::scan, &cast->name); - -#define DELEGATE_FIELD_INT(id, name) -#define DELEGATE_FIELD_INT_ARRAY(id, name) -#define DELEGATE_FIELD_LITERAL(id, name) -#define DELEGATE_FIELD_NAME(id, name) -#define DELEGATE_FIELD_NAME_VECTOR(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) -#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) -#define DELEGATE_FIELD_SIGNATURE(id, name) -#define DELEGATE_FIELD_TYPE(id, name) -#define DELEGATE_FIELD_HEAPTYPE(id, name) -#define DELEGATE_FIELD_ADDRESS(id, name) +#define DELEGATE_GET_FIELD(id, field) cast->field + +#define DELEGATE_FIELD_CHILD(id, field) \ + self->pushTask(SubType::scan, &cast->field); + +#define DELEGATE_FIELD_OPTIONAL_CHILD(id, field) \ + self->maybePushTask(SubType::scan, &cast->field); + +#define DELEGATE_FIELD_INT(id, field) +#define DELEGATE_FIELD_INT_ARRAY(id, field) +#define DELEGATE_FIELD_LITERAL(id, field) +#define DELEGATE_FIELD_NAME(id, field) +#define DELEGATE_FIELD_NAME_VECTOR(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, field) +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, field) +#define DELEGATE_FIELD_SIGNATURE(id, field) +#define DELEGATE_FIELD_TYPE(id, field) +#define DELEGATE_FIELD_HEAPTYPE(id, field) +#define DELEGATE_FIELD_ADDRESS(id, field) #include "wasm-delegations-fields.def" } |