Files
UnrealEngineUWP/Engine/Source/Programs/UnrealBuildTool/System
russell johnston 09f35473e4 VerseVM Await and sync expressions
Bind the `task` class to `VTask` with a native `Await` method. For tasks created before this binding, `VTask` uses a trivial emergent type and shape, so code that runs in this context (i.e. module top-levels) does not support structured concurrency.

Each `sync` arm spawns a new task, and the overall expression `Await`s each of them in turn to collect their results. These tasks may need to remain active when the outer `sync` expression suspends, which conflicts with the way lenient suspension forcibly suspends child tasks - to resolve this, suspenion no longer affects child tasks (in fact child tasks are no longer tracked at all) and instead `EndTask` (really any time the current task changes) must check for an already-suspended `YieldTask`.

Also adjust the bytecode of `for` loops so that the body runs outside of any failure context, rather than forwarding failures. This enables `<suspends>` calls in `for` loop bodies.

#rb Markus.Breyer

[CL 32277546 by russell johnston in ue5-main branch]
2024-03-15 12:58:08 -04:00
..
2024-02-07 18:34:43 -05:00
2023-12-06 19:03:56 -05:00
2024-01-26 08:22:07 -05:00