diff options
author | Gaming4JC <g4jc@hyperbola.info> | 2019-12-12 22:26:46 -0500 |
---|---|---|
committer | Gaming4JC <g4jc@hyperbola.info> | 2019-12-17 06:25:31 -0500 |
commit | c66d2551222dda12c56fb96bb29e067414e644aa (patch) | |
tree | 22938195817738df120ca50893464ef4e337eb9d /js/src/frontend/BytecodeEmitter.h | |
parent | c9bddfca7eb5ef4642bdd8f27e35b9e2f4de65c9 (diff) | |
download | UXP-c66d2551222dda12c56fb96bb29e067414e644aa.tar UXP-c66d2551222dda12c56fb96bb29e067414e644aa.tar.gz UXP-c66d2551222dda12c56fb96bb29e067414e644aa.tar.lz UXP-c66d2551222dda12c56fb96bb29e067414e644aa.tar.xz UXP-c66d2551222dda12c56fb96bb29e067414e644aa.zip |
Bug 1454285 - Part 1: Specify the current scope when emitting await and .generator.
Tag #1287
Diffstat (limited to 'js/src/frontend/BytecodeEmitter.h')
-rw-r--r-- | js/src/frontend/BytecodeEmitter.h | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/js/src/frontend/BytecodeEmitter.h b/js/src/frontend/BytecodeEmitter.h index 47bc87d76..36910c3dd 100644 --- a/js/src/frontend/BytecodeEmitter.h +++ b/js/src/frontend/BytecodeEmitter.h @@ -609,15 +609,20 @@ struct MOZ_STACK_CLASS BytecodeEmitter MOZ_MUST_USE bool iteratorResultShape(unsigned* shape); MOZ_MUST_USE bool emitToIteratorResult(bool done); - MOZ_MUST_USE bool emitGetDotGenerator(); + MOZ_MUST_USE bool emitGetDotGeneratorInInnermostScope() { + return emitGetDotGeneratorInScope(*innermostEmitterScope); + } + MOZ_MUST_USE bool emitGetDotGeneratorInScope(EmitterScope& currentScope); MOZ_MUST_USE bool emitInitialYield(ParseNode* pn); MOZ_MUST_USE bool emitYield(ParseNode* pn); MOZ_MUST_USE bool emitYieldOp(JSOp op); MOZ_MUST_USE bool emitYieldStar(ParseNode* iter); - MOZ_MUST_USE bool emitAwait(); - MOZ_MUST_USE bool emitAwait(ParseNode* pn); - + MOZ_MUST_USE bool emitAwaitInInnermostScope() { + return emitAwaitInScope(*innermostEmitterScope); + } + MOZ_MUST_USE bool emitAwaitInInnermostScope(ParseNode* pn); + MOZ_MUST_USE bool emitAwaitInScope(EmitterScope& currentScope); MOZ_MUST_USE bool emitPropLHS(ParseNode* pn); MOZ_MUST_USE bool emitPropOp(ParseNode* pn, JSOp op); MOZ_MUST_USE bool emitPropIncDec(ParseNode* pn); @@ -717,9 +722,16 @@ struct MOZ_STACK_CLASS BytecodeEmitter // onto the stack. MOZ_MUST_USE bool emitIteratorNext(ParseNode* pn, IteratorKind kind = IteratorKind::Sync, bool allowSelfHosted = false); - MOZ_MUST_USE bool emitIteratorClose(IteratorKind iterKind = IteratorKind::Sync, - CompletionKind completionKind = CompletionKind::Normal, - bool allowSelfHosted = false); + MOZ_MUST_USE bool emitIteratorCloseInScope(EmitterScope& currentScope, + IteratorKind iterKind = IteratorKind::Sync, + CompletionKind completionKind = CompletionKind::Normal, + bool allowSelfHosted = false); + MOZ_MUST_USE bool emitIteratorCloseInInnermostScope(IteratorKind iterKind = IteratorKind::Sync, + CompletionKind completionKind = CompletionKind::Normal, + bool allowSelfHosted = false) { + return emitIteratorCloseInScope(*innermostEmitterScope, iterKind, completionKind, + allowSelfHosted); + } template <typename InnerEmitter> MOZ_MUST_USE bool wrapWithDestructuringIteratorCloseTryNote(int32_t iterDepth, |