Кто-нибудь может объяснить V8 байт-код SwitchOnGeneratorState? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь понять фрагмент байт-кода V8. Но я не могу понять, что такое SwitchOnGeneratorState. Я предполагаю, что это связано с контекстом функции JavaScript, но хочу знать правильное значение. Это фрагмент байт-кода V8. Любая подсказка была бы благодарна.

0000013D630F11C1: [BytecodeArray] in OldSpace
 - map: 0x02c083f838d9 <Map>Parameter count 2
Frame size 136
         0000013D630F11FA @    0 : a8 f9 00 01       SwitchOnGeneratorState r2, [0], [1] { 0: @305 }
         0000013D630F11FE @    4 : 7f 01 01          CreateFunctionContext [1], [1]
         0000013D630F1201 @    7 : 16 f4             PushContext r7
         0000013D630F1203 @    9 : 25 02             Ldar a0
         0000013D630F1205 @   11 : 1d 04             StaCurrentContextSlot [4]
         0000013D630F1207 @   13 : 27 fe f3          Mov <closure>, r8
         0000013D630F120A @   16 : 27 03 f2          Mov <this>, r9
         0000013D630F120D @   19 : 61 03 f3 02       InvokeIntrinsic [_CreateJSGeneratorObject], r8-r9
         0000013D630F1211 @   23 : 26 f9             Star r2
  837 E> 0000013D630F1213 @   25 : a0                StackCheck
         0000013D630F1214 @   26 : 60 b4 fb 00       CallJSRuntime [async_function_promise_create], r0-r0
         0000013D630F1218 @   30 : 26 f5             Star r6
         0000013D630F121A @   32 : 27 ff f1          Mov <context>, r10
         0000013D630F121D @   35 : 27 ff f0          Mov <context>, r11
  876 S> 0000013D630F1220 @   38 : 19 f4 06 00       LdaImmutableContextSlot r7, [6], [0]
...