| Index: test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden
 | 
| diff --git a/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden b/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden
 | 
| index d9b0cb74a255484bb131f3d34d098db5079664f4..382eabfc3424372b001904de76a1b8b23c3f513a 100644
 | 
| --- a/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden
 | 
| +++ b/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden
 | 
| @@ -271,132 +271,172 @@
 | 
|    }
 | 
|    f();
 | 
|  "
 | 
| -frame size: 17
 | 
| +frame size: 14
 | 
|  parameter count: 1
 | 
| -bytecode array length: 243
 | 
| +bytecode array length: 331
 | 
|  bytecodes: [
 | 
|                  B(Ldar), R(new_target),
 | 
|                  B(JumpIfUndefined), U8(25),
 | 
|                  B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
 | 
| -                B(PushContext), R(8),
 | 
| +                B(PushContext), R(5),
 | 
|                  B(ResumeGenerator), R(new_target),
 | 
| -                B(Star), R(7),
 | 
| +                B(Star), R(4),
 | 
|                  B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
 | 
|                  B(LdaSmi), I8(79),
 | 
| -                B(Star), R(9),
 | 
| -                B(CallRuntime), U16(Runtime::kAbort), R(9), U8(1),
 | 
| +                B(Star), R(6),
 | 
| +                B(CallRuntime), U16(Runtime::kAbort), R(6), U8(1),
 | 
|                  B(LdaSmi), I8(-2),
 | 
| -                B(Star), R(7),
 | 
| -                B(Mov), R(closure), R(9),
 | 
| -                B(Mov), R(this), R(10),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(9), U8(2),
 | 
| -                B(Star), R(3),
 | 
| +                B(Star), R(4),
 | 
| +                B(CreateFunctionContext), U8(4),
 | 
| +                B(PushContext), R(0),
 | 
| +                B(Mov), R(closure), R(6),
 | 
| +                B(Mov), R(this), R(7),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(6), U8(2),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
|    /*   11 E> */ B(StackCheck),
 | 
| -                B(Mov), R(context), R(11),
 | 
| -                B(LdaZero),
 | 
| -                B(Mov), R(3), R(13),
 | 
| -                B(Mov), R(3), R(12),
 | 
| -  /*   11 E> */ B(SuspendGenerator), R(12), U8(0),
 | 
| -                B(Ldar), R(13),
 | 
| +                B(Mov), R(context), R(8),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(10),
 | 
| +                B(LdaZero),
 | 
| +  /*   11 E> */ B(SuspendGenerator), R(9), U8(0),
 | 
| +                B(Ldar), R(10),
 | 
|    /*   62 S> */ B(Return),
 | 
|                  B(LdaSmi), I8(-2),
 | 
| -                B(Star), R(7),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
 | 
| -                B(Star), R(13),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
 | 
| -                B(Star), R(14),
 | 
| -                B(LdaZero),
 | 
| -                B(TestEqualStrictNoFeedback), R(14),
 | 
| +                B(Star), R(4),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
 | 
| +                B(Star), R(10),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
 | 
| +                B(Star), R(11),
 | 
| +                B(LdaZero),
 | 
| +                B(TestEqualStrictNoFeedback), R(11),
 | 
|                  B(JumpIfTrue), U8(28),
 | 
|                  B(LdaSmi), I8(2),
 | 
| -                B(TestEqualStrictNoFeedback), R(14),
 | 
| +                B(TestEqualStrictNoFeedback), R(11),
 | 
|                  B(JumpIfTrue), U8(19),
 | 
|                  B(LdaTrue),
 | 
| -                B(Star), R(16),
 | 
| -                B(Mov), R(13), R(15),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(15), U8(2),
 | 
| -                B(Star), R(10),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(9),
 | 
| -                B(Jump), U8(114),
 | 
| -                B(Ldar), R(13),
 | 
| +                B(Star), R(13),
 | 
| +                B(Mov), R(10), R(12),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
 | 
| +                B(Star), R(7),
 | 
| +                B(LdaZero),
 | 
| +                B(Star), R(6),
 | 
| +                B(Jump), U8(192),
 | 
| +                B(Ldar), R(10),
 | 
|    /*   11 E> */ B(Throw),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateBlockContext), U8(1),
 | 
| +                B(PushContext), R(1),
 | 
| +                B(LdaTheHole),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
|    /*   31 S> */ B(LdaZero),
 | 
| -                B(Star), R(2),
 | 
| -                B(Star), R(4),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(5),
 | 
| -  /*   60 E> */ B(StackCheck),
 | 
| -                B(Mov), R(4), R(1),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(TestEqual), R(5), U8(3),
 | 
| -                B(JumpIfFalse), U8(7),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(5),
 | 
| -                B(Jump), U8(8),
 | 
| -  /*   44 S> */ B(Ldar), R(1),
 | 
| +  /*   31 E> */ B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +  /*   60 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(StaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(StackCheck),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateBlockContext), U8(2),
 | 
| +                B(PushContext), R(2),
 | 
| +                B(LdaTheHole),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaContextSlot), R(1), U8(5), U8(0),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(9), U8(3),
 | 
| +                B(JumpIfFalse), U8(9),
 | 
| +                B(LdaZero),
 | 
| +                B(StaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(Jump), U8(8),
 | 
| +  /*   44 S> */ B(LdaCurrentContextSlot), U8(4),
 | 
|                  B(Inc), U8(4),
 | 
| -                B(Star), R(1),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(6),
 | 
| -  /*   36 S> */ B(LdaSmi), I8(10),
 | 
| -  /*   36 E> */ B(TestLessThan), R(1), U8(5),
 | 
| +  /*   44 E> */ B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(StaContextSlot), R(1), U8(7), U8(0),
 | 
| +  /*   36 S> */ B(LdaCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaSmi), I8(10),
 | 
| +  /*   36 E> */ B(TestLessThan), R(9), U8(5),
 | 
|                  B(JumpIfFalse), U8(4),
 | 
| -                B(Jump), U8(4),
 | 
| -                B(Jump), U8(36),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(TestEqual), R(6), U8(6),
 | 
| -                B(JumpIfFalse), U8(17),
 | 
| +                B(Jump), U8(6),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(Jump), U8(69),
 | 
| +                B(LdaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(9), U8(6),
 | 
| +                B(JumpIfFalse), U8(34),
 | 
|    /*   18 E> */ B(StackCheck),
 | 
| -  /*   57 S> */ B(Mov), R(1), R(0),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(6),
 | 
| -                B(Mov), R(0), R(4),
 | 
| -                B(Ldar), R(0),
 | 
| -                B(JumpLoop), U8(19), I8(1),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -  /*   60 E> */ B(TestEqual), R(6), U8(7),
 | 
| -                B(JumpIfFalse), U8(4),
 | 
| -                B(Jump), U8(5),
 | 
| -                B(JumpLoop), U8(68), I8(0),
 | 
| -                B(LdaUndefined),
 | 
| -                B(Star), R(12),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateBlockContext), U8(3),
 | 
| +                B(PushContext), R(3),
 | 
| +                B(LdaTheHole),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
| +  /*   57 S> */ B(LdaContextSlot), R(3), U8(4), U8(0),
 | 
| +  /*   57 E> */ B(StaCurrentContextSlot), U8(4),
 | 
| +                B(PopContext), R(3),
 | 
| +                B(LdaZero),
 | 
| +                B(StaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(LdaCurrentContextSlot), U8(4),
 | 
| +  /*   60 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
 | 
| +                B(JumpLoop), U8(42), I8(1),
 | 
| +                B(LdaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(9), U8(7),
 | 
| +                B(JumpIfFalse), U8(6),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(Jump), U8(7),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(JumpLoop), U8(129), I8(0),
 | 
| +                B(PopContext), R(1),
 | 
| +                B(LdaUndefined),
 | 
| +                B(Star), R(9),
 | 
|                  B(LdaTrue),
 | 
| -                B(Star), R(13),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
 | 
| -                B(Star), R(10),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(9),
 | 
| +                B(Star), R(10),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
 | 
| +                B(Star), R(7),
 | 
| +                B(LdaZero),
 | 
| +                B(Star), R(6),
 | 
|                  B(Jump), U8(14),
 | 
|                  B(LdaSmi), I8(-1),
 | 
| -                B(Star), R(9),
 | 
| -                B(Jump), U8(8),
 | 
| -                B(Star), R(10),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(9),
 | 
| +                B(Star), R(6),
 | 
| +                B(Jump), U8(8),
 | 
| +                B(Star), R(7),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(Star), R(6),
 | 
|                  B(LdaTheHole),
 | 
|                  B(SetPendingMessage),
 | 
| -                B(Star), R(11),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(3), U8(1),
 | 
| -                B(Ldar), R(11),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(9),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(9), U8(1),
 | 
| +                B(Ldar), R(8),
 | 
|                  B(SetPendingMessage),
 | 
| -                B(Ldar), R(9),
 | 
| -                B(SwitchOnSmiNoFeedback), U8(1), U8(2), I8(0),
 | 
| -                B(Jump), U8(8),
 | 
| -                B(Ldar), R(10),
 | 
| +                B(Ldar), R(6),
 | 
| +                B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
 | 
| +                B(Jump), U8(8),
 | 
| +                B(Ldar), R(7),
 | 
|    /*   62 S> */ B(Return),
 | 
| -                B(Ldar), R(10),
 | 
| +                B(Ldar), R(7),
 | 
|                  B(ReThrow),
 | 
|                  B(LdaUndefined),
 | 
|    /*   62 S> */ B(Return),
 | 
|  ]
 | 
|  constant pool: [
 | 
| -  Smi [46],
 | 
| +  Smi [52],
 | 
| +  FIXED_ARRAY_TYPE,
 | 
| +  FIXED_ARRAY_TYPE,
 | 
| +  FIXED_ARRAY_TYPE,
 | 
|    Smi [6],
 | 
|    Smi [9],
 | 
|  ]
 | 
|  handlers: [
 | 
| -  [47, 204, 210],
 | 
| +  [51, 288, 294],
 | 
|  ]
 | 
|  
 | 
|  ---
 | 
| @@ -406,182 +446,218 @@
 | 
|    }
 | 
|    f();
 | 
|  "
 | 
| -frame size: 16
 | 
| +frame size: 13
 | 
|  parameter count: 1
 | 
| -bytecode array length: 352
 | 
| +bytecode array length: 432
 | 
|  bytecodes: [
 | 
|                  B(Ldar), R(new_target),
 | 
|                  B(JumpIfUndefined), U8(25),
 | 
|                  B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
 | 
| -                B(PushContext), R(7),
 | 
| +                B(PushContext), R(4),
 | 
|                  B(ResumeGenerator), R(new_target),
 | 
| -                B(Star), R(6),
 | 
| +                B(Star), R(3),
 | 
|                  B(SwitchOnSmiNoFeedback), U8(0), U8(2), I8(0),
 | 
|                  B(LdaSmi), I8(79),
 | 
| -                B(Star), R(8),
 | 
| -                B(CallRuntime), U16(Runtime::kAbort), R(8), U8(1),
 | 
| +                B(Star), R(5),
 | 
| +                B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
 | 
|                  B(LdaSmi), I8(-2),
 | 
| -                B(Star), R(6),
 | 
| -                B(Mov), R(closure), R(8),
 | 
| -                B(Mov), R(this), R(9),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(8), U8(2),
 | 
| -                B(Star), R(2),
 | 
| +                B(Star), R(3),
 | 
| +                B(CreateFunctionContext), U8(4),
 | 
| +                B(PushContext), R(0),
 | 
| +                B(Mov), R(closure), R(5),
 | 
| +                B(Mov), R(this), R(6),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
|    /*   11 E> */ B(StackCheck),
 | 
| -                B(Mov), R(context), R(10),
 | 
| -                B(LdaZero),
 | 
| -                B(Mov), R(2), R(12),
 | 
| -                B(Mov), R(2), R(11),
 | 
| -  /*   11 E> */ B(SuspendGenerator), R(11), U8(0),
 | 
| -                B(Ldar), R(12),
 | 
| +                B(Mov), R(context), R(7),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaZero),
 | 
| +  /*   11 E> */ B(SuspendGenerator), R(8), U8(0),
 | 
| +                B(Ldar), R(9),
 | 
|    /*   56 S> */ B(Return),
 | 
|                  B(LdaSmi), I8(-2),
 | 
| -                B(Star), R(6),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
 | 
| -                B(Star), R(12),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
 | 
| -                B(Star), R(13),
 | 
| -                B(LdaZero),
 | 
| -                B(TestEqualStrictNoFeedback), R(13),
 | 
| +                B(Star), R(3),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
 | 
| +                B(Star), R(9),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
 | 
| +                B(Star), R(10),
 | 
| +                B(LdaZero),
 | 
| +                B(TestEqualStrictNoFeedback), R(10),
 | 
|                  B(JumpIfTrue), U8(28),
 | 
|                  B(LdaSmi), I8(2),
 | 
| -                B(TestEqualStrictNoFeedback), R(13),
 | 
| +                B(TestEqualStrictNoFeedback), R(10),
 | 
|                  B(JumpIfTrue), U8(19),
 | 
|                  B(LdaTrue),
 | 
| -                B(Star), R(15),
 | 
| -                B(Mov), R(12), R(14),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(14), U8(2),
 | 
| -                B(Star), R(9),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(8),
 | 
| -                B(Jump), U8(223),
 | 
| -                B(Ldar), R(12),
 | 
| +                B(Star), R(12),
 | 
| +                B(Mov), R(9), R(11),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(11), U8(2),
 | 
| +                B(Star), R(6),
 | 
| +                B(LdaZero),
 | 
| +                B(Star), R(5),
 | 
| +                B(JumpConstant), U8(6),
 | 
| +                B(Ldar), R(9),
 | 
|    /*   11 E> */ B(Throw),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateBlockContext), U8(2),
 | 
| +                B(PushContext), R(1),
 | 
| +                B(LdaTheHole),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
|    /*   31 S> */ B(LdaZero),
 | 
| -                B(Star), R(1),
 | 
| -                B(Star), R(3),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(4),
 | 
| -                B(Ldar), R(6),
 | 
| -                B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(1),
 | 
| +  /*   31 E> */ B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +  /*   54 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(StaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(Ldar), R(3),
 | 
| +                B(SwitchOnSmiNoFeedback), U8(3), U8(1), I8(1),
 | 
|                  B(LdaSmi), I8(-2),
 | 
| -  /*   54 E> */ B(TestEqualStrictNoFeedback), R(6),
 | 
| +                B(TestEqualStrictNoFeedback), R(3),
 | 
|                  B(JumpIfTrue), U8(11),
 | 
|                  B(LdaSmi), I8(79),
 | 
| -                B(Star), R(11),
 | 
| -                B(CallRuntime), U16(Runtime::kAbort), R(11), U8(1),
 | 
| +                B(Star), R(8),
 | 
| +                B(CallRuntime), U16(Runtime::kAbort), R(8), U8(1),
 | 
|                  B(StackCheck),
 | 
| -                B(Mov), R(3), R(0),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(TestEqual), R(4), U8(3),
 | 
| -                B(JumpIfFalse), U8(7),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(4),
 | 
| -                B(Jump), U8(8),
 | 
| -  /*   44 S> */ B(Ldar), R(0),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateBlockContext), U8(4),
 | 
| +                B(PushContext), R(2),
 | 
| +                B(LdaTheHole),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaContextSlot), R(1), U8(5), U8(0),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(8), U8(3),
 | 
| +                B(JumpIfFalse), U8(9),
 | 
| +                B(LdaZero),
 | 
| +                B(StaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(Jump), U8(8),
 | 
| +  /*   44 S> */ B(LdaCurrentContextSlot), U8(4),
 | 
|                  B(Inc), U8(4),
 | 
| -                B(Star), R(0),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(5),
 | 
| -  /*   36 S> */ B(LdaSmi), I8(10),
 | 
| -  /*   36 E> */ B(TestLessThan), R(0), U8(5),
 | 
| +  /*   44 E> */ B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(StaContextSlot), R(1), U8(7), U8(0),
 | 
| +  /*   36 S> */ B(LdaCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaSmi), I8(10),
 | 
| +  /*   36 E> */ B(TestLessThan), R(8), U8(5),
 | 
|                  B(JumpIfFalse), U8(4),
 | 
| -                B(Jump), U8(4),
 | 
| -                B(Jump), U8(124),
 | 
| -                B(Ldar), R(6),
 | 
| -                B(SwitchOnSmiNoFeedback), U8(3), U8(1), I8(1),
 | 
| +                B(Jump), U8(6),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(Jump), U8(149),
 | 
| +                B(Ldar), R(3),
 | 
| +                B(SwitchOnSmiNoFeedback), U8(5), U8(1), I8(1),
 | 
|                  B(LdaSmi), I8(-2),
 | 
| -                B(TestEqualStrictNoFeedback), R(6),
 | 
| +                B(TestEqualStrictNoFeedback), R(3),
 | 
|                  B(JumpIfTrue), U8(11),
 | 
|                  B(LdaSmi), I8(79),
 | 
| -                B(Star), R(11),
 | 
| -                B(CallRuntime), U16(Runtime::kAbort), R(11), U8(1),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(TestEqual), R(5), U8(6),
 | 
| -                B(JumpIfFalse), U8(84),
 | 
| +                B(Star), R(8),
 | 
| +                B(CallRuntime), U16(Runtime::kAbort), R(8), U8(1),
 | 
| +                B(LdaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(8), U8(6),
 | 
| +                B(JumpIfFalse), U8(93),
 | 
|    /*   18 E> */ B(StackCheck),
 | 
| -  /*   47 S> */ B(LdaFalse),
 | 
| -                B(Star), R(13),
 | 
| -                B(Mov), R(0), R(12),
 | 
| -  /*   53 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
 | 
| -                B(Star), R(12),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Mov), R(2), R(11),
 | 
| -                B(SuspendGenerator), R(11), U8(0),
 | 
| -                B(Ldar), R(12),
 | 
| +  /*   47 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaFalse),
 | 
| +                B(Star), R(10),
 | 
| +  /*   53 E> */ B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(9), U8(2),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(SuspendGenerator), R(8), U8(0),
 | 
| +                B(Ldar), R(9),
 | 
|    /*   56 S> */ B(Return),
 | 
|                  B(LdaSmi), I8(-2),
 | 
| -                B(Star), R(6),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(11), U8(1),
 | 
| -                B(Star), R(12),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(11), U8(1),
 | 
| -                B(Star), R(13),
 | 
| -                B(LdaZero),
 | 
| -                B(TestEqualStrictNoFeedback), R(13),
 | 
| -                B(JumpIfTrue), U8(28),
 | 
| +                B(Star), R(3),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
 | 
| +                B(Star), R(9),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
 | 
| +                B(Star), R(10),
 | 
| +                B(LdaZero),
 | 
| +                B(TestEqualStrictNoFeedback), R(10),
 | 
| +                B(JumpIfTrue), U8(30),
 | 
|                  B(LdaSmi), I8(2),
 | 
| -                B(TestEqualStrictNoFeedback), R(13),
 | 
| -                B(JumpIfTrue), U8(19),
 | 
| -                B(LdaTrue),
 | 
| -                B(Star), R(15),
 | 
| -                B(Mov), R(12), R(14),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(14), U8(2),
 | 
| -                B(Star), R(9),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(8),
 | 
| -                B(Jump), U8(57),
 | 
| -                B(Ldar), R(12),
 | 
| -  /*   47 E> */ B(Throw),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(5),
 | 
| -                B(Mov), R(0), R(3),
 | 
| -                B(Ldar), R(0),
 | 
| -                B(JumpLoop), U8(107), I8(1),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -  /*   54 E> */ B(TestEqual), R(5), U8(7),
 | 
| -                B(JumpIfFalse), U8(4),
 | 
| -                B(Jump), U8(5),
 | 
| -                B(JumpLoop), U8(177), I8(0),
 | 
| -                B(LdaUndefined),
 | 
| -                B(Star), R(11),
 | 
| +                B(TestEqualStrictNoFeedback), R(10),
 | 
| +                B(JumpIfTrue), U8(21),
 | 
|                  B(LdaTrue),
 | 
|                  B(Star), R(12),
 | 
| +                B(Mov), R(9), R(11),
 | 
|                  B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(11), U8(2),
 | 
| -                B(Star), R(9),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(8),
 | 
| +                B(PopContext), R(1),
 | 
| +                B(Star), R(6),
 | 
| +                B(LdaZero),
 | 
| +                B(Star), R(5),
 | 
| +                B(Jump), U8(72),
 | 
| +                B(Ldar), R(9),
 | 
| +  /*   47 E> */ B(Throw),
 | 
| +                B(LdaZero),
 | 
| +                B(StaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(LdaCurrentContextSlot), U8(4),
 | 
| +  /*   54 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
 | 
| +                B(JumpLoop), U8(122), I8(1),
 | 
| +                B(LdaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(8), U8(7),
 | 
| +                B(JumpIfFalse), U8(6),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(Jump), U8(7),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(JumpLoop), U8(230), I8(0),
 | 
| +                B(PopContext), R(1),
 | 
| +                B(LdaUndefined),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaTrue),
 | 
| +                B(Star), R(9),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
 | 
| +                B(Star), R(6),
 | 
| +                B(LdaZero),
 | 
| +                B(Star), R(5),
 | 
|                  B(Jump), U8(14),
 | 
|                  B(LdaSmi), I8(-1),
 | 
| -                B(Star), R(8),
 | 
| -                B(Jump), U8(8),
 | 
| -                B(Star), R(9),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(8),
 | 
| +                B(Star), R(5),
 | 
| +                B(Jump), U8(8),
 | 
| +                B(Star), R(6),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(Star), R(5),
 | 
|                  B(LdaTheHole),
 | 
|                  B(SetPendingMessage),
 | 
| -                B(Star), R(10),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(2), U8(1),
 | 
| -                B(Ldar), R(10),
 | 
| +                B(Star), R(7),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(8),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_GeneratorClose), R(8), U8(1),
 | 
| +                B(Ldar), R(7),
 | 
|                  B(SetPendingMessage),
 | 
| -                B(Ldar), R(8),
 | 
| -                B(SwitchOnSmiNoFeedback), U8(4), U8(2), I8(0),
 | 
| -                B(Jump), U8(8),
 | 
| -                B(Ldar), R(9),
 | 
| +                B(Ldar), R(5),
 | 
| +                B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(0),
 | 
| +                B(Jump), U8(8),
 | 
| +                B(Ldar), R(6),
 | 
|    /*   56 S> */ B(Return),
 | 
| -                B(Ldar), R(9),
 | 
| +                B(Ldar), R(6),
 | 
|                  B(ReThrow),
 | 
|                  B(LdaUndefined),
 | 
|    /*   56 S> */ B(Return),
 | 
|  ]
 | 
|  constant pool: [
 | 
| -  Smi [46],
 | 
| -  Smi [102],
 | 
| -  Smi [56],
 | 
| -  Smi [50],
 | 
| +  Smi [52],
 | 
| +  Smi [123],
 | 
| +  FIXED_ARRAY_TYPE,
 | 
| +  Smi [84],
 | 
| +  FIXED_ARRAY_TYPE,
 | 
| +  Smi [60],
 | 
| +  Smi [293],
 | 
|    Smi [6],
 | 
|    Smi [9],
 | 
|  ]
 | 
|  handlers: [
 | 
| -  [47, 313, 319],
 | 
| +  [51, 389, 395],
 | 
|  ]
 | 
|  
 | 
|  ---
 | 
| @@ -591,121 +667,162 @@
 | 
|    }
 | 
|    f();
 | 
|  "
 | 
| -frame size: 17
 | 
| +frame size: 12
 | 
|  parameter count: 1
 | 
| -bytecode array length: 207
 | 
| +bytecode array length: 298
 | 
|  bytecodes: [
 | 
| +                B(CreateFunctionContext), U8(5),
 | 
| +                B(PushContext), R(0),
 | 
|    /*   16 E> */ B(StackCheck),
 | 
|                  B(LdaUndefined),
 | 
| -                B(Star), R(9),
 | 
| -                B(CallJSRuntime), U8(%async_function_promise_create), R(9), U8(1),
 | 
| +                B(Star), R(4),
 | 
| +                B(CallJSRuntime), U8(%async_function_promise_create), R(4), U8(1),
 | 
| +                B(StaCurrentContextSlot), U8(8),
 | 
| +                B(Mov), R(context), R(6),
 | 
| +                B(Mov), R(context), R(7),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateBlockContext), U8(0),
 | 
| +                B(PushContext), R(1),
 | 
| +                B(LdaTheHole),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
| +  /*   36 S> */ B(LdaZero),
 | 
| +  /*   36 E> */ B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +  /*   65 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(StaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(StackCheck),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateBlockContext), U8(1),
 | 
| +                B(PushContext), R(2),
 | 
| +                B(LdaTheHole),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaContextSlot), R(1), U8(5), U8(0),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(8), U8(3),
 | 
| +                B(JumpIfFalse), U8(9),
 | 
| +                B(LdaZero),
 | 
| +                B(StaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(Jump), U8(8),
 | 
| +  /*   49 S> */ B(LdaCurrentContextSlot), U8(4),
 | 
| +                B(Inc), U8(4),
 | 
| +  /*   49 E> */ B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(StaContextSlot), R(1), U8(7), U8(0),
 | 
| +  /*   41 S> */ B(LdaCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaSmi), I8(10),
 | 
| +  /*   41 E> */ B(TestLessThan), R(8), U8(5),
 | 
| +                B(JumpIfFalse), U8(4),
 | 
| +                B(Jump), U8(6),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(Jump), U8(69),
 | 
| +                B(LdaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(8), U8(6),
 | 
| +                B(JumpIfFalse), U8(34),
 | 
| +  /*   23 E> */ B(StackCheck),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateBlockContext), U8(2),
 | 
| +                B(PushContext), R(3),
 | 
| +                B(LdaTheHole),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
| +  /*   62 S> */ B(LdaContextSlot), R(3), U8(4), U8(0),
 | 
| +  /*   62 E> */ B(StaCurrentContextSlot), U8(4),
 | 
| +                B(PopContext), R(3),
 | 
| +                B(LdaZero),
 | 
| +                B(StaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(LdaCurrentContextSlot), U8(4),
 | 
| +  /*   65 E> */ B(StaContextSlot), R(1), U8(5), U8(0),
 | 
| +                B(JumpLoop), U8(42), I8(1),
 | 
| +                B(LdaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(8), U8(7),
 | 
| +                B(JumpIfFalse), U8(6),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(Jump), U8(7),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(JumpLoop), U8(129), I8(0),
 | 
| +                B(PopContext), R(1),
 | 
| +                B(LdaUndefined),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaCurrentContextSlot), U8(8),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaUndefined),
 | 
| +                B(Star), R(10),
 | 
| +                B(CallJSRuntime), U8(%promise_resolve), R(8), U8(3),
 | 
| +                B(LdaCurrentContextSlot), U8(8),
 | 
| +                B(Star), R(5),
 | 
| +                B(LdaZero),
 | 
| +                B(Star), R(4),
 | 
| +                B(Jump), U8(65),
 | 
| +                B(Jump), U8(51),
 | 
| +                B(Star), R(8),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateCatchContext), R(8), U8(3), U8(4),
 | 
|                  B(Star), R(7),
 | 
| -                B(Mov), R(context), R(11),
 | 
| -                B(Mov), R(context), R(12),
 | 
| -  /*   36 S> */ B(LdaZero),
 | 
| -                B(Star), R(2),
 | 
| +                B(LdaTheHole),
 | 
| +                B(SetPendingMessage),
 | 
| +                B(Ldar), R(7),
 | 
| +                B(PushContext), R(1),
 | 
| +                B(LdaUndefined),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaContextSlot), R(1), U8(8), U8(0),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(10),
 | 
| +                B(LdaFalse),
 | 
| +                B(Star), R(11),
 | 
| +                B(CallJSRuntime), U8(%promise_internal_reject), R(8), U8(4),
 | 
| +                B(LdaContextSlot), R(1), U8(8), U8(0),
 | 
| +                B(PopContext), R(1),
 | 
| +                B(Star), R(5),
 | 
| +                B(LdaZero),
 | 
|                  B(Star), R(4),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(5),
 | 
| -  /*   65 E> */ B(StackCheck),
 | 
| -                B(Mov), R(4), R(1),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(TestEqual), R(5), U8(3),
 | 
| -                B(JumpIfFalse), U8(7),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(5),
 | 
| -                B(Jump), U8(8),
 | 
| -  /*   49 S> */ B(Ldar), R(1),
 | 
| -                B(Inc), U8(4),
 | 
| -                B(Star), R(1),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(6),
 | 
| -  /*   41 S> */ B(LdaSmi), I8(10),
 | 
| -  /*   41 E> */ B(TestLessThan), R(1), U8(5),
 | 
| -                B(JumpIfFalse), U8(4),
 | 
| -                B(Jump), U8(4),
 | 
| -                B(Jump), U8(36),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(TestEqual), R(6), U8(6),
 | 
| -                B(JumpIfFalse), U8(17),
 | 
| -  /*   23 E> */ B(StackCheck),
 | 
| -  /*   62 S> */ B(Mov), R(1), R(0),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(6),
 | 
| -                B(Mov), R(0), R(4),
 | 
| -                B(Ldar), R(0),
 | 
| -                B(JumpLoop), U8(19), I8(1),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -  /*   65 E> */ B(TestEqual), R(6), U8(7),
 | 
| -                B(JumpIfFalse), U8(4),
 | 
| -                B(Jump), U8(5),
 | 
| -                B(JumpLoop), U8(68), I8(0),
 | 
| -                B(LdaUndefined),
 | 
| -                B(Star), R(13),
 | 
| -                B(LdaUndefined),
 | 
| -                B(Star), R(15),
 | 
| -                B(Mov), R(7), R(14),
 | 
| -                B(CallJSRuntime), U8(%promise_resolve), R(13), U8(3),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(9),
 | 
| -                B(Mov), R(7), R(10),
 | 
| -                B(Jump), U8(59),
 | 
| -                B(Jump), U8(45),
 | 
| -                B(Star), R(13),
 | 
| -                B(Ldar), R(closure),
 | 
| -                B(CreateCatchContext), R(13), U8(0), U8(1),
 | 
| -                B(Star), R(12),
 | 
| -                B(LdaTheHole),
 | 
| -                B(SetPendingMessage),
 | 
| -                B(Ldar), R(12),
 | 
| -                B(PushContext), R(8),
 | 
| -                B(LdaUndefined),
 | 
| -                B(Star), R(13),
 | 
| -                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| -                B(Star), R(15),
 | 
| -                B(LdaFalse),
 | 
| -                B(Star), R(16),
 | 
| -                B(Mov), R(7), R(14),
 | 
| -                B(CallJSRuntime), U8(%promise_internal_reject), R(13), U8(4),
 | 
| -                B(PopContext), R(8),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(9),
 | 
| -                B(Mov), R(7), R(10),
 | 
|                  B(Jump), U8(14),
 | 
|                  B(LdaSmi), I8(-1),
 | 
| -                B(Star), R(9),
 | 
| -                B(Jump), U8(8),
 | 
| -                B(Star), R(10),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(9),
 | 
| +                B(Star), R(4),
 | 
| +                B(Jump), U8(8),
 | 
| +                B(Star), R(5),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(Star), R(4),
 | 
|                  B(LdaTheHole),
 | 
|                  B(SetPendingMessage),
 | 
| -                B(Star), R(11),
 | 
| -                B(LdaUndefined),
 | 
| -                B(Star), R(12),
 | 
| -                B(Mov), R(7), R(13),
 | 
| -                B(CallJSRuntime), U8(%async_function_promise_release), R(12), U8(2),
 | 
| -                B(Ldar), R(11),
 | 
| +                B(Star), R(6),
 | 
| +                B(LdaUndefined),
 | 
| +                B(Star), R(7),
 | 
| +                B(LdaCurrentContextSlot), U8(8),
 | 
| +                B(Star), R(8),
 | 
| +                B(CallJSRuntime), U8(%async_function_promise_release), R(7), U8(2),
 | 
| +                B(Ldar), R(6),
 | 
|                  B(SetPendingMessage),
 | 
| -                B(Ldar), R(9),
 | 
| -                B(SwitchOnSmiNoFeedback), U8(2), U8(2), I8(0),
 | 
| -                B(Jump), U8(8),
 | 
| -                B(Ldar), R(10),
 | 
| +                B(Ldar), R(4),
 | 
| +                B(SwitchOnSmiNoFeedback), U8(5), U8(2), I8(0),
 | 
| +                B(Jump), U8(8),
 | 
| +                B(Ldar), R(5),
 | 
|    /*   67 S> */ B(Return),
 | 
| -                B(Ldar), R(10),
 | 
| +                B(Ldar), R(5),
 | 
|                  B(ReThrow),
 | 
|                  B(LdaUndefined),
 | 
|    /*   67 S> */ B(Return),
 | 
|  ]
 | 
|  constant pool: [
 | 
| +  FIXED_ARRAY_TYPE,
 | 
| +  FIXED_ARRAY_TYPE,
 | 
| +  FIXED_ARRAY_TYPE,
 | 
|    ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
 | 
|    FIXED_ARRAY_TYPE,
 | 
|    Smi [6],
 | 
|    Smi [9],
 | 
|  ]
 | 
|  handlers: [
 | 
| -  [13, 162, 168],
 | 
| -  [16, 117, 119],
 | 
| +  [17, 252, 258],
 | 
| +  [20, 201, 203],
 | 
|  ]
 | 
|  
 | 
|  ---
 | 
| @@ -715,190 +832,229 @@
 | 
|    }
 | 
|    f();
 | 
|  "
 | 
| -frame size: 20
 | 
| +frame size: 14
 | 
|  parameter count: 1
 | 
| -bytecode array length: 369
 | 
| +bytecode array length: 465
 | 
|  bytecodes: [
 | 
|                  B(Ldar), R(new_target),
 | 
|                  B(JumpIfUndefined), U8(25),
 | 
|                  B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
 | 
| -                B(PushContext), R(10),
 | 
| +                B(PushContext), R(4),
 | 
|                  B(ResumeGenerator), R(new_target),
 | 
| -                B(Star), R(9),
 | 
| +                B(Star), R(3),
 | 
|                  B(SwitchOnSmiNoFeedback), U8(0), U8(1), I8(0),
 | 
|                  B(LdaSmi), I8(79),
 | 
| -                B(Star), R(11),
 | 
| -                B(CallRuntime), U16(Runtime::kAbort), R(11), U8(1),
 | 
| +                B(Star), R(5),
 | 
| +                B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
 | 
|                  B(LdaSmi), I8(-2),
 | 
| -                B(Star), R(9),
 | 
| -                B(Mov), R(closure), R(11),
 | 
| -                B(Mov), R(this), R(12),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(11), U8(2),
 | 
| -                B(Star), R(2),
 | 
| +                B(Star), R(3),
 | 
| +                B(CreateFunctionContext), U8(6),
 | 
| +                B(PushContext), R(0),
 | 
| +                B(Mov), R(closure), R(5),
 | 
| +                B(Mov), R(this), R(6),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_CreateJSGeneratorObject), R(5), U8(2),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
|    /*   16 E> */ B(StackCheck),
 | 
|                  B(LdaUndefined),
 | 
| -                B(Star), R(11),
 | 
| -                B(CallJSRuntime), U8(%async_function_promise_create), R(11), U8(1),
 | 
| -                B(Star), R(4),
 | 
| -                B(Mov), R(context), R(13),
 | 
| -                B(Mov), R(context), R(14),
 | 
| +                B(Star), R(5),
 | 
| +                B(CallJSRuntime), U8(%async_function_promise_create), R(5), U8(1),
 | 
| +                B(StaCurrentContextSlot), U8(6),
 | 
| +                B(Mov), R(context), R(7),
 | 
| +                B(Mov), R(context), R(8),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateBlockContext), U8(1),
 | 
| +                B(PushContext), R(1),
 | 
| +                B(LdaTheHole),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
|    /*   36 S> */ B(LdaZero),
 | 
| -                B(Star), R(1),
 | 
| -                B(Star), R(5),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(6),
 | 
| -                B(Ldar), R(9),
 | 
| -                B(SwitchOnSmiNoFeedback), U8(1), U8(1), I8(0),
 | 
| +  /*   36 E> */ B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +  /*   59 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(StaContextSlot), R(1), U8(8), U8(0),
 | 
| +                B(Ldar), R(3),
 | 
| +                B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(0),
 | 
|                  B(LdaSmi), I8(-2),
 | 
| -  /*   59 E> */ B(TestEqualStrictNoFeedback), R(9),
 | 
| +                B(TestEqualStrictNoFeedback), R(3),
 | 
|                  B(JumpIfTrue), U8(11),
 | 
|                  B(LdaSmi), I8(79),
 | 
| -                B(Star), R(15),
 | 
| -                B(CallRuntime), U16(Runtime::kAbort), R(15), U8(1),
 | 
| +                B(Star), R(9),
 | 
| +                B(CallRuntime), U16(Runtime::kAbort), R(9), U8(1),
 | 
|                  B(StackCheck),
 | 
| -                B(Mov), R(5), R(0),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(TestEqual), R(6), U8(3),
 | 
| -                B(JumpIfFalse), U8(7),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(6),
 | 
| -                B(Jump), U8(8),
 | 
| -  /*   49 S> */ B(Ldar), R(0),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateBlockContext), U8(3),
 | 
| +                B(PushContext), R(2),
 | 
| +                B(LdaTheHole),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaContextSlot), R(1), U8(8), U8(0),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(9), U8(3),
 | 
| +                B(JumpIfFalse), U8(9),
 | 
| +                B(LdaZero),
 | 
| +                B(StaContextSlot), R(1), U8(8), U8(0),
 | 
| +                B(Jump), U8(8),
 | 
| +  /*   49 S> */ B(LdaCurrentContextSlot), U8(4),
 | 
|                  B(Inc), U8(4),
 | 
| -                B(Star), R(0),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(7),
 | 
| -  /*   41 S> */ B(LdaSmi), I8(10),
 | 
| -  /*   41 E> */ B(TestLessThan), R(0), U8(5),
 | 
| +  /*   49 E> */ B(StaCurrentContextSlot), U8(4),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(StaContextSlot), R(1), U8(9), U8(0),
 | 
| +  /*   41 S> */ B(LdaCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaSmi), I8(10),
 | 
| +  /*   41 E> */ B(TestLessThan), R(9), U8(5),
 | 
|                  B(JumpIfFalse), U8(4),
 | 
| -                B(Jump), U8(4),
 | 
| -                B(Jump), U8(134),
 | 
| -                B(Ldar), R(9),
 | 
| -                B(SwitchOnSmiNoFeedback), U8(2), U8(1), I8(0),
 | 
| +                B(Jump), U8(6),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(Jump), U8(172),
 | 
| +                B(Ldar), R(3),
 | 
| +                B(SwitchOnSmiNoFeedback), U8(4), U8(1), I8(0),
 | 
|                  B(LdaSmi), I8(-2),
 | 
| -                B(TestEqualStrictNoFeedback), R(9),
 | 
| +                B(TestEqualStrictNoFeedback), R(3),
 | 
|                  B(JumpIfTrue), U8(11),
 | 
|                  B(LdaSmi), I8(79),
 | 
| -                B(Star), R(15),
 | 
| -                B(CallRuntime), U16(Runtime::kAbort), R(15), U8(1),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(TestEqual), R(7), U8(6),
 | 
| -                B(JumpIfFalse), U8(94),
 | 
| +                B(Star), R(9),
 | 
| +                B(CallRuntime), U16(Runtime::kAbort), R(9), U8(1),
 | 
| +                B(LdaContextSlot), R(1), U8(9), U8(0),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(9), U8(6),
 | 
| +                B(JumpIfFalse), U8(116),
 | 
|    /*   23 E> */ B(StackCheck),
 | 
| -  /*   52 S> */ B(Nop),
 | 
| -  /*   58 S> */ B(Mov), R(0), R(3),
 | 
| +  /*   52 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
 | 
| +                B(Star), R(9),
 | 
| +  /*   58 S> */ B(LdaCurrentContextSlot), U8(4),
 | 
| +                B(StaContextSlot), R(1), U8(5), U8(0),
 | 
|    /*   52 S> */ B(LdaUndefined),
 | 
| -                B(Star), R(16),
 | 
| -                B(Mov), R(2), R(17),
 | 
| -                B(Mov), R(0), R(18),
 | 
| -                B(Mov), R(4), R(19),
 | 
| -                B(CallJSRuntime), U8(%async_function_await_uncaught), R(16), U8(4),
 | 
| -                B(LdaZero),
 | 
| -                B(Mov), R(2), R(15),
 | 
| -                B(Mov), R(4), R(16),
 | 
| -                B(SuspendGenerator), R(15), U8(2),
 | 
| -                B(Ldar), R(16),
 | 
| +                B(Star), R(10),
 | 
| +                B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
 | 
| +                B(Star), R(11),
 | 
| +                B(LdaContextSlot), R(1), U8(5), U8(0),
 | 
| +                B(Star), R(12),
 | 
| +                B(LdaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(Star), R(13),
 | 
| +                B(CallJSRuntime), U8(%async_function_await_uncaught), R(10), U8(4),
 | 
| +                B(LdaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(Star), R(10),
 | 
| +                B(LdaZero),
 | 
| +                B(SuspendGenerator), R(9), U8(2),
 | 
| +                B(Ldar), R(10),
 | 
|    /*   61 S> */ B(Return),
 | 
|                  B(LdaSmi), I8(-2),
 | 
| -                B(Star), R(9),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(15), U8(1),
 | 
| -                B(Star), R(16),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(15), U8(1),
 | 
| -                B(Star), R(17),
 | 
| -                B(LdaZero),
 | 
| -                B(TestEqualStrictNoFeedback), R(17),
 | 
| -                B(JumpIfTrue), U8(28),
 | 
| +                B(Star), R(3),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
 | 
| +                B(Star), R(10),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
 | 
| +                B(Star), R(11),
 | 
| +                B(LdaZero),
 | 
| +                B(TestEqualStrictNoFeedback), R(11),
 | 
| +                B(JumpIfTrue), U8(30),
 | 
|                  B(LdaSmi), I8(2),
 | 
| -                B(TestEqualStrictNoFeedback), R(17),
 | 
| -                B(JumpIfTrue), U8(19),
 | 
| +                B(TestEqualStrictNoFeedback), R(11),
 | 
| +                B(JumpIfTrue), U8(21),
 | 
|                  B(LdaTrue),
 | 
| -                B(Star), R(19),
 | 
| -                B(Mov), R(16), R(18),
 | 
| -                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(18), U8(2),
 | 
| +                B(Star), R(13),
 | 
| +                B(Mov), R(10), R(12),
 | 
| +                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
 | 
| +                B(PopContext), R(1),
 | 
| +                B(Star), R(6),
 | 
| +                B(LdaZero),
 | 
| +                B(Star), R(5),
 | 
| +                B(Jump), U8(129),
 | 
| +                B(Ldar), R(10),
 | 
| +                B(ReThrow),
 | 
| +                B(LdaZero),
 | 
| +                B(StaContextSlot), R(1), U8(9), U8(0),
 | 
| +                B(LdaCurrentContextSlot), U8(4),
 | 
| +  /*   59 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
 | 
| +                B(JumpLoop), U8(145), I8(1),
 | 
| +                B(LdaContextSlot), R(1), U8(9), U8(0),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(TestEqual), R(9), U8(7),
 | 
| +                B(JumpIfFalse), U8(6),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(Jump), U8(7),
 | 
| +                B(PopContext), R(2),
 | 
| +                B(JumpLoop), U8(253), I8(0),
 | 
| +                B(PopContext), R(1),
 | 
| +                B(LdaUndefined),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaCurrentContextSlot), U8(6),
 | 
| +                B(Star), R(10),
 | 
| +                B(LdaUndefined),
 | 
| +                B(Star), R(11),
 | 
| +                B(CallJSRuntime), U8(%promise_resolve), R(9), U8(3),
 | 
| +                B(LdaCurrentContextSlot), U8(6),
 | 
| +                B(Star), R(6),
 | 
| +                B(LdaZero),
 | 
| +                B(Star), R(5),
 | 
| +                B(Jump), U8(65),
 | 
| +                B(Jump), U8(51),
 | 
| +                B(Star), R(9),
 | 
| +                B(Ldar), R(closure),
 | 
| +                B(CreateCatchContext), R(9), U8(5), U8(6),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaTheHole),
 | 
| +                B(SetPendingMessage),
 | 
| +                B(Ldar), R(8),
 | 
| +                B(PushContext), R(1),
 | 
| +                B(LdaUndefined),
 | 
| +                B(Star), R(9),
 | 
| +                B(LdaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(Star), R(10),
 | 
| +                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| +                B(Star), R(11),
 | 
| +                B(LdaFalse),
 | 
|                  B(Star), R(12),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(11),
 | 
| -                B(Jump), U8(106),
 | 
| -                B(Ldar), R(16),
 | 
| -                B(ReThrow),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(7),
 | 
| -                B(Mov), R(0), R(5),
 | 
| -                B(Ldar), R(0),
 | 
| -                B(JumpLoop), U8(117), I8(1),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -  /*   59 E> */ B(TestEqual), R(7), U8(7),
 | 
| -                B(JumpIfFalse), U8(4),
 | 
| -                B(Jump), U8(5),
 | 
| -                B(JumpLoop), U8(187), I8(0),
 | 
| -                B(LdaUndefined),
 | 
| -                B(Star), R(15),
 | 
| -                B(LdaUndefined),
 | 
| -                B(Star), R(17),
 | 
| -                B(Mov), R(4), R(16),
 | 
| -                B(CallJSRuntime), U8(%promise_resolve), R(15), U8(3),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(11),
 | 
| -                B(Mov), R(4), R(12),
 | 
| -                B(Jump), U8(59),
 | 
| -                B(Jump), U8(45),
 | 
| -                B(Star), R(15),
 | 
| -                B(Ldar), R(closure),
 | 
| -                B(CreateCatchContext), R(15), U8(3), U8(4),
 | 
| -                B(Star), R(14),
 | 
| -                B(LdaTheHole),
 | 
| -                B(SetPendingMessage),
 | 
| -                B(Ldar), R(14),
 | 
| -                B(PushContext), R(8),
 | 
| -                B(LdaUndefined),
 | 
| -                B(Star), R(15),
 | 
| -                B(LdaImmutableCurrentContextSlot), U8(4),
 | 
| -                B(Star), R(17),
 | 
| -                B(LdaFalse),
 | 
| -                B(Star), R(18),
 | 
| -                B(Mov), R(4), R(16),
 | 
| -                B(CallJSRuntime), U8(%promise_internal_reject), R(15), U8(4),
 | 
| -                B(PopContext), R(8),
 | 
| -                B(LdaZero),
 | 
| -                B(Star), R(11),
 | 
| -                B(Mov), R(4), R(12),
 | 
| +                B(CallJSRuntime), U8(%promise_internal_reject), R(9), U8(4),
 | 
| +                B(LdaContextSlot), R(1), U8(6), U8(0),
 | 
| +                B(PopContext), R(1),
 | 
| +                B(Star), R(6),
 | 
| +                B(LdaZero),
 | 
| +                B(Star), R(5),
 | 
|                  B(Jump), U8(14),
 | 
|                  B(LdaSmi), I8(-1),
 | 
| -                B(Star), R(11),
 | 
| -                B(Jump), U8(8),
 | 
| -                B(Star), R(12),
 | 
| -                B(LdaSmi), I8(1),
 | 
| -                B(Star), R(11),
 | 
| +                B(Star), R(5),
 | 
| +                B(Jump), U8(8),
 | 
| +                B(Star), R(6),
 | 
| +                B(LdaSmi), I8(1),
 | 
| +                B(Star), R(5),
 | 
|                  B(LdaTheHole),
 | 
|                  B(SetPendingMessage),
 | 
| -                B(Star), R(13),
 | 
| -                B(LdaUndefined),
 | 
| -                B(Star), R(14),
 | 
| -                B(Mov), R(4), R(15),
 | 
| -                B(CallJSRuntime), U8(%async_function_promise_release), R(14), U8(2),
 | 
| -                B(Ldar), R(13),
 | 
| +                B(Star), R(7),
 | 
| +                B(LdaUndefined),
 | 
| +                B(Star), R(8),
 | 
| +                B(LdaCurrentContextSlot), U8(6),
 | 
| +                B(Star), R(9),
 | 
| +                B(CallJSRuntime), U8(%async_function_promise_release), R(8), U8(2),
 | 
| +                B(Ldar), R(7),
 | 
|                  B(SetPendingMessage),
 | 
| -                B(Ldar), R(11),
 | 
| -                B(SwitchOnSmiNoFeedback), U8(5), U8(2), I8(0),
 | 
| -                B(Jump), U8(8),
 | 
| -                B(Ldar), R(12),
 | 
| +                B(Ldar), R(5),
 | 
| +                B(SwitchOnSmiNoFeedback), U8(7), U8(2), I8(0),
 | 
| +                B(Jump), U8(8),
 | 
| +                B(Ldar), R(6),
 | 
|    /*   61 S> */ B(Return),
 | 
| -                B(Ldar), R(12),
 | 
| +                B(Ldar), R(6),
 | 
|                  B(ReThrow),
 | 
|                  B(LdaUndefined),
 | 
|    /*   61 S> */ B(Return),
 | 
|  ]
 | 
|  constant pool: [
 | 
| -  Smi [54],
 | 
| -  Smi [56],
 | 
| -  Smi [60],
 | 
| +  Smi [73],
 | 
| +  FIXED_ARRAY_TYPE,
 | 
| +  Smi [84],
 | 
| +  FIXED_ARRAY_TYPE,
 | 
| +  Smi [83],
 | 
|    ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
 | 
|    FIXED_ARRAY_TYPE,
 | 
|    Smi [6],
 | 
|    Smi [9],
 | 
|  ]
 | 
|  handlers: [
 | 
| -  [56, 324, 330],
 | 
| -  [59, 279, 281],
 | 
| +  [60, 419, 425],
 | 
| +  [63, 368, 370],
 | 
|  ]
 | 
|  
 | 
| 
 |