Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[NFC] Generalize and simplify wasm-delegations-fields.h #6465

Merged
merged 2 commits into from
Apr 3, 2024

Conversation

kripken
Copy link
Member

@kripken kripken commented Apr 2, 2024

This removes the hard-coded generation of a switch and cases, and allows the user
to define the boilerplate at the start and end of the main output, and of what is
generated for each expression. By default we still emit a switch and cases.

Also standardize the output by never emitting ; unnecessarily, which we were
inconsistent about.

This serves two goals: First, it will make using embind on Binaryen simpler as
embind needs to generate C++ template logic for each expression, and not a
switch (and we cannot have extra ; in embind notation). Second, this makes
the format much simple to parse, which is a stepping stone for #6460, e.g.
before we had

  case Expression::Id::LoopId: {
    DELEGATE_START(Loop);
    DELEGATE_FIELD_CHILD(Loop, body);
    DELEGATE_FIELD_SCOPE_NAME_DEF(Loop, name);
    DELEGATE_END(Loop);
    break;
  }

and now we have

DELEGATE_FIELD_CASE_START(Loop)
DELEGATE_FIELD_CHILD(Loop, body)
DELEGATE_FIELD_SCOPE_NAME_DEF(Loop, name)
DELEGATE_FIELD_CASE_END(Loop)

The main part of this diff was autogenerated by this python:

for l in x.splitlines():
  if l.startswith('  case'):
    id = l.split(':')[4][:-2]
    print(f'DELEGATE_FIELD_CASE_START({id})')
  if l.startswith('    DELEGATE_FIELD'):
    print(l)
  if l.startswith('    DELEGATE_END'):
    id = l[17:-2]
    print(f'DELEGATE_FIELD_CASE_END({id})')
    print()

@kripken kripken requested a review from tlively April 2, 2024 23:20
@kripken
Copy link
Member Author

kripken commented Apr 3, 2024

Fuzzer found no issues here.

@kripken kripken merged commit 58f06cc into WebAssembly:main Apr 3, 2024
14 checks passed
@kripken kripken deleted the del.gen branch April 3, 2024 15:22
@gkdn gkdn mentioned this pull request Aug 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants