Generators.golden 18 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

---
snippet: "
  function* f() { }
12
  f();
13
"
14
frame size: 5
15
parameter count: 1
16
bytecode array length: 92
17
bytecodes: [
18
                B(Mov), R(new_target), R(1),
19
                B(Ldar), R(new_target),
20
                B(JumpIfUndefined), U8(25),
21 22 23 24
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(1), U8(1),
                B(PushContext), R(3),
                B(RestoreGeneratorState), R(1),
                B(Star), R(2),
25
                B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
26
                B(LdaSmi), I8(81),
27 28
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
29
                B(LdaSmi), I8(-2),
30
                B(Star), R(2),
31 32 33
                B(Mov), R(closure), R(3),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
34
                B(Star), R(0),
35 36
  /*   11 E> */ B(StackCheck),
                B(LdaZero),
37 38 39 40
                B(Mov), R(0), R(1),
                B(Mov), R(0), R(3),
  /*   11 E> */ B(SuspendGenerator), R(1), R(0), U8(3), U8(0),
                B(Ldar), R(3),
41
  /*   16 S> */ B(Return),
42
                B(RestoreGeneratorRegisters), R(1), R(0), U8(3),
43
                B(LdaSmi), I8(-2),
44
                B(Star), R(2),
45
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1),
46
                B(Star), R(3),
47
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
48
                B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
49
                B(Ldar), R(3),
50
  /*   11 E> */ B(Throw),
51
                B(Ldar), R(3),
52 53 54
  /*   16 S> */ B(Return),
                B(LdaUndefined),
  /*   16 S> */ B(Return),
55 56
]
constant pool: [
57
  Smi [45],
58
  Smi [10],
59
  Smi [7],
60 61 62 63 64 65 66
]
handlers: [
]

---
snippet: "
  function* f() { yield 42 }
67
  f();
68
"
69
frame size: 6
70
parameter count: 1
71
bytecode array length: 142
72
bytecodes: [
73
                B(Mov), R(new_target), R(1),
74
                B(Ldar), R(new_target),
75
                B(JumpIfUndefined), U8(25),
76 77 78 79
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(1), U8(1),
                B(PushContext), R(3),
                B(RestoreGeneratorState), R(1),
                B(Star), R(2),
80
                B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
81
                B(LdaSmi), I8(81),
82 83
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
84
                B(LdaSmi), I8(-2),
85
                B(Star), R(2),
86 87 88
                B(Mov), R(closure), R(3),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
89
                B(Star), R(0),
90 91
  /*   11 E> */ B(StackCheck),
                B(LdaZero),
92 93 94 95
                B(Mov), R(0), R(1),
                B(Mov), R(0), R(3),
  /*   11 E> */ B(SuspendGenerator), R(1), R(0), U8(3), U8(0),
                B(Ldar), R(3),
96
  /*   25 S> */ B(Return),
97
                B(RestoreGeneratorRegisters), R(1), R(0), U8(3),
98
                B(LdaSmi), I8(-2),
99
                B(Star), R(2),
100
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1),
101
                B(Star), R(3),
102
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
103
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
104
                B(Ldar), R(3),
105
  /*   11 E> */ B(Throw),
106 107
                B(Ldar), R(3),
  /*   25 S> */ B(Return),
108
  /*   16 S> */ B(LdaSmi), I8(42),
109
                B(Star), R(3),
110
                B(LdaSmi), I8(1),
111 112 113 114 115
                B(SuspendGenerator), R(1), R(0), U8(3), U8(0),
                B(LdaFalse),
                B(Star), R(5),
                B(Mov), R(3), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(4), U8(2),
116
  /*   25 S> */ B(Return),
117
                B(RestoreGeneratorRegisters), R(1), R(0), U8(3),
118
                B(LdaSmi), I8(-2),
119
                B(Star), R(2),
120
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1),
121
                B(Star), R(3),
122
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
123
                B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
124
                B(Ldar), R(3),
125
  /*   16 E> */ B(Throw),
126
                B(Ldar), R(3),
127 128 129
  /*   25 S> */ B(Return),
                B(LdaUndefined),
  /*   25 S> */ B(Return),
130 131
]
constant pool: [
132
  Smi [45],
133 134
  Smi [95],
  Smi [10],
135
  Smi [7],
136
  Smi [10],
137
  Smi [7],
138 139 140 141 142 143 144
]
handlers: [
]

---
snippet: "
  function* f() { for (let x of [42]) yield x }
145
  f();
146
"
147
frame size: 19
148
parameter count: 1
149
bytecode array length: 431
150
bytecodes: [
151
                B(Mov), R(new_target), R(10),
152
                B(Ldar), R(new_target),
153
                B(JumpIfUndefined), U8(25),
154 155 156 157
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(10), U8(1),
                B(PushContext), R(12),
                B(RestoreGeneratorState), R(10),
                B(Star), R(11),
158
                B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
159
                B(LdaSmi), I8(81),
160 161
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1),
162
                B(LdaSmi), I8(-2),
163
                B(Star), R(11),
164 165 166
                B(Mov), R(closure), R(12),
                B(Mov), R(this), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(12), U8(2),
167
                B(Star), R(2),
168 169
  /*   11 E> */ B(StackCheck),
                B(LdaZero),
170 171 172 173
                B(Mov), R(2), R(10),
                B(Mov), R(2), R(12),
  /*   11 E> */ B(SuspendGenerator), R(10), R(0), U8(12), U8(0),
                B(Ldar), R(12),
174
  /*   44 S> */ B(Return),
175
                B(RestoreGeneratorRegisters), R(10), R(0), U8(12),
176
                B(LdaSmi), I8(-2),
177
                B(Star), R(11),
178
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
179
                B(Star), R(12),
180
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
181
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
182
                B(Ldar), R(12),
183
  /*   11 E> */ B(Throw),
184 185
                B(Ldar), R(12),
  /*   44 S> */ B(Return),
186
                B(LdaZero),
187
                B(Star), R(6),
188 189
                B(Mov), R(context), R(14),
                B(Mov), R(context), R(15),
190
  /*   30 S> */ B(CreateArrayLiteral), U8(4), U8(4), U8(17),
191
                B(Star), R(16),
192
                B(LdaNamedProperty), R(16), U8(5), U8(5),
193
                B(Star), R(17),
194
                B(CallProperty0), R(17), R(16), U8(7),
195 196
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
197
                B(Star), R(4),
198
                B(Ldar), R(11),
199
                B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(1),
200
                B(LdaSmi), I8(-2),
201
  /*   30 E> */ B(TestEqualStrictNoFeedback), R(11),
202
                B(JumpIfTrue), U8(11),
203
                B(LdaSmi), I8(81),
204 205
                B(Star), R(16),
                B(CallRuntime), U16(Runtime::kAbort), R(16), U8(1),
206
  /*   25 S> */ B(LdaNamedProperty), R(4), U8(7), U8(11),
207
                B(Star), R(16),
208
                B(CallProperty0), R(16), R(4), U8(9),
209 210
                B(Star), R(5),
  /*   25 E> */ B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(5), U8(1),
211
                B(ToBooleanLogicalNot),
212 213
                B(JumpIfFalse), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(5), U8(1),
214
                B(LdaNamedProperty), R(5), U8(8), U8(13),
215
                B(JumpIfToBooleanTrue), U8(79),
216
                B(LdaNamedProperty), R(5), U8(9), U8(15),
217
                B(Star), R(7),
218
                B(LdaSmi), I8(2),
219 220
                B(Star), R(6),
                B(Mov), R(7), R(3),
221
  /*   16 E> */ B(StackCheck),
222
                B(Mov), R(3), R(0),
223 224 225 226 227 228 229
  /*   36 S> */ B(LdaSmi), I8(1),
                B(Mov), R(0), R(16),
                B(SuspendGenerator), R(10), R(0), U8(16), U8(0),
                B(LdaFalse),
                B(Star), R(18),
                B(Mov), R(16), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(17), U8(2),
230
  /*   44 S> */ B(Return),
231
                B(RestoreGeneratorRegisters), R(10), R(0), U8(16),
232
                B(LdaSmi), I8(-2),
233
                B(Star), R(11),
234
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(10), U8(1),
235
                B(Star), R(16),
236
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(10), U8(1),
237
                B(SwitchOnSmiNoFeedback), U8(10), U8(2), I8(0),
238
                B(Ldar), R(16),
239
  /*   36 E> */ B(Throw),
240
                B(LdaZero),
241 242
                B(Star), R(12),
                B(Mov), R(16), R(13),
243
                B(Jump), U8(56),
244
                B(LdaZero),
245
                B(Star), R(6),
246
                B(JumpLoop), U8(125), I8(0),
247
                B(Jump), U8(36),
248
                B(Star), R(16),
249
                B(Ldar), R(closure),
250 251 252
                B(CreateCatchContext), R(16), U8(12), U8(13),
                B(PushContext), R(16),
                B(Star), R(15),
253
                B(LdaSmi), I8(2),
254
                B(TestEqualStrict), R(6), U8(17),
255
                B(JumpIfFalse), U8(6),
256
                B(LdaSmi), I8(1),
257
                B(Star), R(6),
258
                B(LdaImmutableCurrentContextSlot), U8(4),
259 260 261
                B(Star), R(17),
                B(CallRuntime), U16(Runtime::kReThrow), R(17), U8(1),
                B(PopContext), R(16),
262
                B(LdaSmi), I8(-1),
263
                B(Star), R(12),
264
                B(Jump), U8(8),
265
                B(Star), R(13),
266
                B(LdaSmi), I8(1),
267
                B(Star), R(12),
268 269
                B(LdaTheHole),
                B(SetPendingMessage),
270
                B(Star), R(14),
271
                B(LdaZero),
272
                B(TestEqualStrict), R(6), U8(18),
273
                B(JumpIfTrue), U8(104),
274
                B(LdaNamedProperty), R(4), U8(14), U8(19),
275
                B(Star), R(8),
276
                B(TestUndetectable),
277
                B(JumpIfFalse), U8(4),
278
                B(Jump), U8(93),
279
                B(LdaSmi), I8(1),
280
                B(TestEqualStrict), R(6), U8(22),
281 282
                B(JumpIfFalse), U8(61),
                B(Ldar), R(8),
283
                B(TestTypeOf), U8(5),
284 285
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
286
                B(Wide), B(LdaSmi), I16(132),
287
                B(Star), R(15),
288
                B(LdaConstant), U8(15),
289 290
                B(Star), R(16),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(15), U8(2),
291
                B(Throw),
292 293 294 295
                B(Mov), R(context), R(15),
                B(Mov), R(8), R(16),
                B(Mov), R(4), R(17),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(16), U8(2),
296
                B(Jump), U8(20),
297
                B(Star), R(16),
298
                B(Ldar), R(closure),
299 300
                B(CreateCatchContext), R(16), U8(12), U8(16),
                B(Star), R(15),
301 302
                B(LdaTheHole),
                B(SetPendingMessage),
303 304 305
                B(Ldar), R(15),
                B(PushContext), R(16),
                B(PopContext), R(16),
306
                B(Jump), U8(27),
307 308 309
                B(Mov), R(8), R(15),
                B(Mov), R(4), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(15), U8(2),
310 311
                B(Star), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(9), U8(1),
312
                B(JumpIfToBooleanFalse), U8(4),
313 314
                B(Jump), U8(7),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(9), U8(1),
315
                B(Ldar), R(14),
316
                B(SetPendingMessage),
317
                B(Ldar), R(12),
318
                B(SwitchOnSmiNoFeedback), U8(17), U8(2), I8(0),
319
                B(Jump), U8(8),
320
                B(Ldar), R(13),
321
  /*   44 S> */ B(Return),
322
                B(Ldar), R(13),
323 324 325
                B(ReThrow),
                B(LdaUndefined),
  /*   44 S> */ B(Return),
326 327
]
constant pool: [
328
  Smi [45],
329 330
  Smi [107],
  Smi [10],
331
  Smi [7],
332
  TUPLE2_TYPE,
333
  SYMBOL_TYPE,
334
  Smi [87],
335 336 337
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
338
  Smi [15],
339
  Smi [7],
340 341 342 343 344
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
345
  Smi [6],
346
  Smi [9],
347 348
]
handlers: [
349 350 351
  [96, 288, 294],
  [99, 252, 254],
  [355, 365, 367],
352 353
]

354 355 356 357 358 359
---
snippet: "
  function* g() { yield 42 }
  function* f() { yield* g() }
  f();
"
360
frame size: 10
361
parameter count: 1
362
bytecode array length: 293
363
bytecodes: [
364
                B(Mov), R(new_target), R(1),
365 366
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(25),
367 368 369 370
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(1), U8(1),
                B(PushContext), R(3),
                B(RestoreGeneratorState), R(1),
                B(Star), R(2),
371
                B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
372
                B(LdaSmi), I8(81),
373 374
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
375
                B(LdaSmi), I8(-2),
376 377 378 379
                B(Star), R(2),
                B(Mov), R(closure), R(3),
                B(Mov), R(this), R(4),
                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(3), U8(2),
380
                B(Star), R(0),
381 382
  /*   38 E> */ B(StackCheck),
                B(LdaZero),
383 384 385 386
                B(Mov), R(0), R(1),
                B(Mov), R(0), R(3),
  /*   38 E> */ B(SuspendGenerator), R(1), R(0), U8(3), U8(0),
                B(Ldar), R(3),
387
  /*   54 S> */ B(Return),
388
                B(RestoreGeneratorRegisters), R(1), R(0), U8(3),
389
                B(LdaSmi), I8(-2),
390 391 392 393
                B(Star), R(2),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1),
                B(Star), R(3),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
394
                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
395
                B(Ldar), R(3),
396
  /*   38 E> */ B(Throw),
397
                B(Ldar), R(3),
398
  /*   54 S> */ B(Return),
399
  /*   43 S> */ B(LdaGlobal), U8(4), U8(6),
400
                B(Star), R(9),
401
  /*   50 E> */ B(CallUndefinedReceiver0), R(9), U8(4),
402
                B(Star), R(7),
403
                B(LdaNamedProperty), R(7), U8(5), U8(8),
404
                B(Star), R(8),
405
                B(CallProperty0), R(8), R(7), U8(20),
406 407
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
408 409 410 411
                B(Star), R(5),
                B(LdaUndefined),
                B(Star), R(6),
                B(LdaZero),
412
                B(Star), R(4),
413
                B(Ldar), R(2),
414
                B(SwitchOnSmiNoFeedback), U8(6), U8(1), I8(1),
415
                B(LdaSmi), I8(-2),
416
                B(TestEqualStrictNoFeedback), R(2),
417
                B(JumpIfTrue), U8(11),
418
                B(LdaSmi), I8(81),
419 420 421 422
                B(Star), R(9),
                B(CallRuntime), U16(Runtime::kAbort), R(9), U8(1),
                B(Ldar), R(4),
                B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(1),
423
                B(LdaNamedProperty), R(5), U8(9), U8(12),
424
                B(Star), R(9),
425
                B(CallProperty1), R(9), R(5), R(6), U8(26),
426
                B(Jump), U8(65),
427
                B(LdaNamedProperty), R(5), U8(10), U8(10),
428 429 430
                B(JumpIfUndefined), U8(13),
                B(JumpIfNull), U8(11),
                B(Star), R(9),
431
                B(CallProperty1), R(9), R(5), R(6), U8(22),
432 433
                B(Jump), U8(48),
                B(Ldar), R(6),
434
  /*   54 S> */ B(Return),
435
                B(LdaNamedProperty), R(5), U8(11), U8(14),
436 437 438
                B(JumpIfUndefined), U8(13),
                B(JumpIfNull), U8(11),
                B(Star), R(9),
439
                B(CallProperty1), R(9), R(5), R(6), U8(28),
440
                B(Jump), U8(28),
441
                B(LdaNamedProperty), R(5), U8(10), U8(10),
442 443 444
                B(Star), R(9),
                B(JumpIfUndefined), U8(15),
                B(JumpIfNull), U8(13),
445
                B(CallProperty0), R(9), R(5), U8(24),
446
                B(JumpIfJSReceiver), U8(7),
447
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
448
                B(CallRuntime), U16(Runtime::kThrowThrowMethodMissing), R(0), U8(0),
449
                B(Star), R(3),
450
                B(JumpIfJSReceiver), U8(7),
451
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(3), U8(1),
452
                B(LdaNamedProperty), R(3), U8(12), U8(16),
453
                B(JumpIfToBooleanTrue), U8(35),
454
                B(LdaSmi), I8(1),
455 456
                B(SuspendGenerator), R(1), R(0), U8(9), U8(1),
                B(Ldar), R(3),
457
  /*   54 S> */ B(Return),
458
                B(RestoreGeneratorRegisters), R(1), R(0), U8(9),
459 460
                B(LdaSmi), I8(-2),
                B(Star), R(2),
461 462 463 464 465
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(1), U8(1),
                B(Star), R(6),
                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(1), U8(1),
                B(Star), R(4),
                B(JumpLoop), U8(148), I8(0),
466
                B(LdaNamedProperty), R(3), U8(13), U8(18),
467
                B(Star), R(5),
468
                B(LdaSmi), I8(1),
469 470 471
                B(TestEqualStrictNoFeedback), R(4),
                B(JumpIfFalse), U8(5),
                B(Ldar), R(5),
472
  /*   54 S> */ B(Return),
473 474 475 476
                B(LdaUndefined),
  /*   54 S> */ B(Return),
]
constant pool: [
477
  Smi [45],
478
  Smi [108],
479
  Smi [10],
480
  Smi [7],
481 482
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["g"],
  SYMBOL_TYPE,
483 484 485
  Smi [126],
  Smi [17],
  Smi [37],
486 487 488 489 490 491 492 493 494
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["throw"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
]
handlers: [
]