59 GotoIf(SmiEqual(receiver_continuation, closed), &if_receiverisclosed);
62 GotoIf(SmiLessThan(receiver_continuation, closed), &if_receiverisrunning);
87 CSA_DCHECK(
this, SmiNotEqual(result_continuation, closed));
90 GotoIf(SmiEqual(result_continuation, executing), &if_final_return);
94 BIND(&if_final_return);
98 receiver, JSGeneratorObject::kContinuationOffset, closed);
101 context,
result, TrueConstant()));
104 BIND(&if_receiverisclosed);
108 switch (resume_mode) {
112 UndefinedConstant(), TrueConstant());
116 context, value, TrueConstant());
125 args->PopAndReturn(builtin_result);
128 BIND(&if_receiverisrunning);
134 receiver, JSGeneratorObject::kContinuationOffset, closed);
135 CallRuntime(Runtime::kReThrow, context, var_exception.value());
152 const int kValueArg = 0;
154 auto argc = UncheckedParameter<Int32T>(Descriptor::kJSActualArgumentsCount);
159 auto context = Parameter<Context>(Descriptor::kContext);
163 char const*
const method_name =
"[AsyncModule].evaluate";
164 ThrowIfNotInstanceType(context,
receiver, JS_ASYNC_FUNCTION_OBJECT_TYPE,
221 auto generator = Parameter<JSGeneratorObject>(Descriptor::kGeneratorObject);
222 auto context = LoadContextFromBaseline();
223 StoreJSGeneratorObjectContext(generator, context);
224 auto parameter_count = LoadParameterCountWithoutReceiverFromBaseline();
225 auto suspend_id = SmiTag(UncheckedParameter<IntPtrT>(Descriptor::kSuspendId));
226 StoreJSGeneratorObjectContinuation(generator, suspend_id);
229 auto bytecode_offset =
230 SmiTag(UncheckedParameter<IntPtrT>(Descriptor::kBytecodeOffset));
232 StoreObjectFieldNoWriteBarrier(
233 generator, JSGeneratorObject::kInputOrDebugPosOffset, bytecode_offset);
236 LoadJSGeneratorObjectParametersAndRegisters(generator);
237 auto parameters_and_registers_length =
238 LoadAndUntagFixedArrayBaseLength(parameters_and_registers);
241 auto parameter_base_index = IntPtrConstant(
245 auto parent_frame_pointer = LoadParentFramePointer();
246 BuildFastLoop<IntPtrT>(
249 auto reg_index = IntPtrAdd(parameter_base_index, index);
251 TimesSystemPointerSize(reg_index));
252 UnsafeStoreFixedArrayElement(parameters_and_registers, index, value);
254 1, LoopUnrollingMode::kNo, IndexAdvanceMode::kPost);
259 auto register_base_index = IntPtrAdd(
261 auto register_count = UncheckedParameter<IntPtrT>(Descriptor::kRegisterCount);
263 CSA_CHECK(
this, UintPtrLessThan(end_index, parameters_and_registers_length));
264 BuildFastLoop<IntPtrT>(
267 auto reg_index = IntPtrSub(register_base_index, index);
269 TimesSystemPointerSize(reg_index));
270 UnsafeStoreFixedArrayElement(parameters_and_registers, index, value);
272 1, LoopUnrollingMode::kNo, IndexAdvanceMode::kPost);
275 Return(UndefinedConstant());
280 auto generator = Parameter<JSGeneratorObject>(Descriptor::kGeneratorObject);
281 auto parameter_count = LoadParameterCountWithoutReceiverFromBaseline();
284 LoadJSGeneratorObjectParametersAndRegisters(generator);
288 auto register_base_index = IntPtrAdd(
290 auto register_count = UncheckedParameter<IntPtrT>(Descriptor::kRegisterCount);
292 auto parameters_and_registers_length =
293 LoadAndUntagFixedArrayBaseLength(parameters_and_registers);
294 CSA_CHECK(
this, UintPtrLessThan(end_index, parameters_and_registers_length));
295 auto parent_frame_pointer = LoadParentFramePointer();
296 BuildFastLoop<IntPtrT>(
300 UnsafeLoadFixedArrayElement(parameters_and_registers, index);
301 auto reg_index = IntPtrSub(register_base_index, index);
302 StoreFullTaggedNoWriteBarrier(parent_frame_pointer,
303 TimesSystemPointerSize(reg_index), value);
304 UnsafeStoreFixedArrayElement(parameters_and_registers, index,
305 StaleRegisterConstant(),
308 1, LoopUnrollingMode::kNo, IndexAdvanceMode::kPost);
310 Return(LoadJSGeneratorObjectInputOrDebugPos(generator));
void InnerResume(CodeStubArguments *args, TNode< JSGeneratorObject > receiver, TNode< Object > value, TNode< Context > context, JSGeneratorObject::ResumeMode resume_mode, char const *const method_name)