Avoid unnecessary side exits in Await and WHResult
Summary:
Merge the logic of emitAwait() and emitWHResult() into implAwait(), as these
opcodes differ only in handling of non-finished Awaitables. This gives WHResult
ability to handle exceptions without side-exiting if the stack is empty.
Try to perform the fast path of Await in async generators resumed from
a previous blocking Await and side-exit only if the async generator would
suspend at Await for the second time.
Reviewed By: oulgen
Differential Revision:
D30026257
fbshipit-source-id:
a5c61d6426b91f55ab033afe4a6819e552438a97