Lines Matching refs:generator
11 #include "src/objects/js-generator.h"
25 const TNode<JSGeneratorObject> generator) {
26 return LoadObjectField<Smi>(generator,
34 const TNode<JSGeneratorObject> generator) {
35 return IsGeneratorStateClosed(LoadGeneratorState(generator));
43 const TNode<JSGeneratorObject> generator) {
44 return IsGeneratorStateSuspended(LoadGeneratorState(generator));
56 const TNode<JSGeneratorObject> generator) {
57 return IsGeneratorStateNotExecuting(LoadGeneratorState(generator));
61 const TNode<JSGeneratorObject> generator) {
63 LoadObjectField(generator, JSAsyncGeneratorObject::kIsAwaitingOffset);
67 inline void SetGeneratorAwaiting(const TNode<JSGeneratorObject> generator) {
68 CSA_DCHECK(this, Word32BinaryNot(IsGeneratorAwaiting(generator)));
70 generator, JSAsyncGeneratorObject::kIsAwaitingOffset, SmiConstant(1));
71 CSA_DCHECK(this, IsGeneratorAwaiting(generator));
75 const TNode<JSGeneratorObject> generator) {
76 CSA_DCHECK(this, IsGeneratorAwaiting(generator));
78 generator, JSAsyncGeneratorObject::kIsAwaitingOffset, SmiConstant(0));
79 CSA_DCHECK(this, Word32BinaryNot(IsGeneratorAwaiting(generator)));
82 inline void CloseGenerator(const TNode<JSGeneratorObject> generator) {
84 generator, JSGeneratorObject::kContinuationOffset,
89 const TNode<JSGeneratorObject> generator) {
90 return LoadObjectField<HeapObject>(generator,
121 TNode<JSAsyncGeneratorObject> generator);
122 void AddAsyncGeneratorRequestToQueue(TNode<JSAsyncGeneratorObject> generator,
145 // of async generator requests to be executed. If the generator is not
158 const TNode<JSAsyncGeneratorObject> generator = CAST(receiver);
162 AddAsyncGeneratorRequestToQueue(generator, req);
164 // Let state be generator.[[AsyncGeneratorState]]
168 TNode<Smi> continuation = LoadGeneratorState(generator);
174 CallBuiltin(Builtin::kAsyncGeneratorResumeNext, context, generator);
270 TNode<JSAsyncGeneratorObject> generator,
276 generator, JSAsyncGeneratorObject::kQueueOffset);
281 StoreObjectField(generator, JSAsyncGeneratorObject::kQueueOffset, request);
310 TNode<JSAsyncGeneratorObject> generator) {
314 generator, JSAsyncGeneratorObject::kQueueOffset);
319 StoreObjectField(generator, JSAsyncGeneratorObject::kQueueOffset, next);
333 TNode<Object> generator = args.GetReceiver();
337 AsyncGeneratorEnqueue(&args, context, generator, value,
351 TNode<Object> generator = args.GetReceiver();
355 AsyncGeneratorEnqueue(&args, context, generator, value,
369 TNode<Object> generator = args.GetReceiver();
373 AsyncGeneratorEnqueue(&args, context, generator, value,
403 const auto generator =
414 // generator is not suspended due to an AwaitExpression.
415 TVARIABLE(Smi, var_state, LoadGeneratorState(generator));
417 LoadFirstAsyncGeneratorRequestFromQueue(generator));
422 CSA_DCHECK(this, IsGeneratorNotExecuting(generator));
425 ReturnIf(IsGeneratorAwaiting(generator), UndefinedConstant());
440 CloseGenerator(generator);
451 // and the generator is not closed, resume the generator with a "return"
454 // generator is not closed, resume the generator with a "throw" completion.
455 // If the generator was closed, perform AsyncGeneratorReject(thrownValue).
458 Runtime::kAsyncGeneratorHasCatchHandlerForPC, context, generator);
459 TailCallBuiltin(Builtin::kAsyncGeneratorReturn, context, generator,
464 CallBuiltin(Builtin::kAsyncGeneratorReject, context, generator, next_value);
465 var_next = LoadFirstAsyncGeneratorRequestFromQueue(generator);
472 CallBuiltin(Builtin::kAsyncGeneratorResolve, context, generator,
474 var_state = LoadGeneratorState(generator);
475 var_next = LoadFirstAsyncGeneratorRequestFromQueue(generator);
481 // Remember the {resume_type} for the {generator}.
483 generator, JSGeneratorObject::kResumeModeOffset, resume_type);
485 LoadValueFromAsyncGeneratorRequest(next), generator);
486 var_state = LoadGeneratorState(generator);
487 var_next = LoadFirstAsyncGeneratorRequestFromQueue(generator);
493 const auto generator =
499 CSA_DCHECK(this, Word32BinaryNot(IsGeneratorAwaiting(generator)));
508 TakeFirstAsyncGeneratorRequestFromQueue(generator);
563 const auto generator =
569 TakeFirstAsyncGeneratorRequestFromQueue(generator);
577 const auto generator = Parameter<JSGeneratorObject>(Descriptor::kGenerator);
583 CAST(LoadFirstAsyncGeneratorRequestFromQueue(generator));
587 Await(context, generator, value, outer_promise,
590 SetGeneratorAwaiting(generator);
597 const TNode<JSAsyncGeneratorObject> generator =
600 SetGeneratorNotAwaiting(generator);
604 CallBuiltin(Builtin::kAsyncGeneratorResolve, context, generator, value,
607 TailCallBuiltin(Builtin::kAsyncGeneratorResumeNext, context, generator);
613 // resolve/reject closures depending on whether or not the generator is marked
616 // In particular, non-closed generators will resume the generator with either
619 // generator. (per proposal-async-iteration/#sec-asyncgeneratoryield step 8.b)
621 // Closed generators do not resume the generator in the resolve/reject
627 const auto generator = Parameter<JSGeneratorObject>(Descriptor::kGenerator);
631 CAST(LoadFirstAsyncGeneratorRequestFromQueue(generator));
640 const TNode<Smi> state = LoadGeneratorState(generator);
649 SetGeneratorAwaiting(generator);
653 Await(context, generator, value, outer_promise, var_on_resolve.value(),
660 // Resume the generator with "return" resume_mode, and finally perform
677 const TNode<JSAsyncGeneratorObject> generator =
680 SetGeneratorNotAwaiting(generator);
683 // #async-generator-resume-next-return-processor-fulfilled step 2:
685 CallBuiltin(Builtin::kAsyncGeneratorResolve, context, generator, value,
688 TailCallBuiltin(Builtin::kAsyncGeneratorResumeNext, context, generator);
695 const TNode<JSAsyncGeneratorObject> generator =
698 SetGeneratorNotAwaiting(generator);
701 // #async-generator-resume-next-return-processor-rejected step 2:
703 CallBuiltin(Builtin::kAsyncGeneratorReject, context, generator, value);
705 TailCallBuiltin(Builtin::kAsyncGeneratorResumeNext, context, generator);