Commit 0980d759 authored by mvstanton's avatar mvstanton Committed by Commit bot

[Interpreter] Handle various generator intrinsics

We can avoid some runtime calls by implementing intrinsics.

BUG=

Review-Url: https://codereview.chromium.org/2889973002
Cr-Commit-Position: refs/heads/master@{#45418}
parent 2f92e9eb
......@@ -405,6 +405,35 @@ Node* IntrinsicsGenerator::CreateJSGeneratorObject(Node* input, Node* arg_count,
Builtins::kCreateGeneratorObject);
}
Node* IntrinsicsGenerator::GeneratorGetContext(Node* args_reg, Node* arg_count,
Node* context) {
Node* generator = __ LoadRegister(args_reg);
Node* const value =
__ LoadObjectField(generator, JSGeneratorObject::kContextOffset);
return value;
}
Node* IntrinsicsGenerator::GeneratorGetInputOrDebugPos(Node* args_reg,
Node* arg_count,
Node* context) {
Node* generator = __ LoadRegister(args_reg);
Node* const value =
__ LoadObjectField(generator, JSGeneratorObject::kInputOrDebugPosOffset);
return value;
}
Node* IntrinsicsGenerator::GeneratorGetResumeMode(Node* args_reg,
Node* arg_count,
Node* context) {
Node* generator = __ LoadRegister(args_reg);
Node* const value =
__ LoadObjectField(generator, JSGeneratorObject::kResumeModeOffset);
return value;
}
Node* IntrinsicsGenerator::AsyncGeneratorReject(Node* input, Node* arg_count,
Node* context) {
return IntrinsicAsBuiltinCall(input, context,
......
......@@ -19,6 +19,9 @@ namespace interpreter {
V(AsyncGeneratorReject, async_generator_reject, 2) \
V(AsyncGeneratorResolve, async_generator_resolve, 3) \
V(CreateJSGeneratorObject, create_js_generator_object, 2) \
V(GeneratorGetContext, generator_get_context, 1) \
V(GeneratorGetResumeMode, generator_get_resume_mode, 1) \
V(GeneratorGetInputOrDebugPos, generator_get_input_or_debug_pos, 1) \
V(Call, call, -1) \
V(ClassOf, class_of, 1) \
V(CreateIterResultObject, create_iter_result_object, 2) \
......
......@@ -66,6 +66,10 @@ RUNTIME_FUNCTION(Runtime_GeneratorGetContext) {
DCHECK_EQ(1, args.length());
CONVERT_ARG_HANDLE_CHECKED(JSGeneratorObject, generator, 0);
// Runtime call is implemented in InterpreterIntrinsics and lowered in
// JSIntrinsicLowering
UNREACHABLE();
return generator->context();
}
......@@ -74,6 +78,10 @@ RUNTIME_FUNCTION(Runtime_GeneratorGetInputOrDebugPos) {
DCHECK_EQ(1, args.length());
CONVERT_ARG_HANDLE_CHECKED(JSGeneratorObject, generator, 0);
// Runtime call is implemented in InterpreterIntrinsics and lowered in
// JSIntrinsicLowering
UNREACHABLE();
return generator->input_or_debug_pos();
}
......@@ -81,7 +89,6 @@ RUNTIME_FUNCTION(Runtime_AsyncGeneratorGetAwaitInputOrDebugPos) {
HandleScope scope(isolate);
DCHECK_EQ(1, args.length());
CONVERT_ARG_HANDLE_CHECKED(JSAsyncGeneratorObject, generator, 0);
return generator->await_input_or_debug_pos();
}
......@@ -112,6 +119,10 @@ RUNTIME_FUNCTION(Runtime_GeneratorGetResumeMode) {
DCHECK_EQ(1, args.length());
CONVERT_ARG_HANDLE_CHECKED(JSGeneratorObject, generator, 0);
// Runtime call is implemented in InterpreterIntrinsics and lowered in
// JSIntrinsicLowering
UNREACHABLE();
return Smi::FromInt(generator->resume_mode());
}
......
......@@ -644,11 +644,11 @@ snippet: "
"
frame size: 15
parameter count: 2
bytecode array length: 593
bytecode array length: 590
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(5),
B(ResumeGenerator), R(new_target),
B(Star), R(4),
......@@ -678,9 +678,9 @@ bytecodes: [
/* 55 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(4),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(Star), R(10),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(11),
......@@ -909,10 +909,10 @@ constant pool: [
Smi [9],
]
handlers: [
[56, 549, 555],
[137, 334, 340],
[140, 290, 292],
[426, 442, 444],
[55, 546, 552],
[134, 331, 337],
[137, 287, 289],
[423, 439, 441],
]
---
......@@ -924,11 +924,11 @@ snippet: "
"
frame size: 17
parameter count: 2
bytecode array length: 701
bytecode array length: 696
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
......@@ -958,9 +958,9 @@ bytecodes: [
/* 49 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(10),
......@@ -1019,7 +1019,7 @@ bytecodes: [
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(6), U8(11),
B(JumpIfToBooleanTrue), U8(144),
B(JumpIfToBooleanTrue), U8(142),
B(LdaContextSlot), R(1), U8(8), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(7), U8(13),
......@@ -1050,9 +1050,9 @@ bytecodes: [
/* 49 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(14),
......@@ -1079,7 +1079,7 @@ bytecodes: [
B(PopContext), R(2),
B(LdaZero),
B(StaContextSlot), R(1), U8(9), U8(0),
B(JumpLoop), U8(212), I8(0),
B(JumpLoop), U8(210), I8(0),
B(Jump), U8(44),
B(Star), R(12),
B(Ldar), R(closure),
......@@ -1218,7 +1218,7 @@ bytecodes: [
]
constant pool: [
Smi [56],
Smi [152],
Smi [150],
FIXED_ARRAY_TYPE,
SYMBOL_TYPE,
Smi [142],
......@@ -1233,15 +1233,15 @@ constant pool: [
FIXED_ARRAY_TYPE,
Smi [6],
Smi [18],
Smi [554],
Smi [552],
Smi [6],
Smi [9],
]
handlers: [
[56, 657, 663],
[137, 426, 432],
[140, 382, 384],
[519, 535, 537],
[55, 652, 658],
[134, 421, 427],
[137, 377, 379],
[514, 530, 532],
]
---
......@@ -1523,11 +1523,11 @@ snippet: "
"
frame size: 18
parameter count: 2
bytecode array length: 735
bytecode array length: 732
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
......@@ -1593,7 +1593,7 @@ bytecodes: [
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(5), U8(11),
B(JumpIfToBooleanTrue), U8(167),
B(JumpIfToBooleanTrue), U8(165),
B(LdaContextSlot), R(1), U8(10), U8(0),
B(Star), R(13),
B(LdaNamedProperty), R(13), U8(6), U8(13),
......@@ -1631,9 +1631,9 @@ bytecodes: [
/* 54 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
B(Star), R(14),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
B(Star), R(15),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(15),
......@@ -1660,7 +1660,7 @@ bytecodes: [
B(PopContext), R(2),
B(LdaZero),
B(StaContextSlot), R(1), U8(11), U8(0),
B(JumpLoop), U8(235), I8(0),
B(JumpLoop), U8(233), I8(0),
B(Jump), U8(48),
B(Star), R(13),
B(Ldar), R(closure),
......@@ -1851,10 +1851,10 @@ constant pool: [
Smi [9],
]
handlers: [
[65, 689, 695],
[68, 636, 638],
[85, 401, 407],
[88, 353, 355],
[494, 510, 512],
[64, 686, 692],
[67, 633, 635],
[84, 398, 404],
[87, 350, 352],
[491, 507, 509],
]
......@@ -13,11 +13,11 @@ snippet: "
"
frame size: 11
parameter count: 1
bytecode array length: 177
bytecode array length: 174
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(2),
B(ResumeGenerator), R(new_target),
B(Star), R(1),
......@@ -45,9 +45,9 @@ bytecodes: [
/* 16 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1),
B(Star), R(7),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(6), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(6), U8(1),
B(Star), R(8),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(8),
......@@ -104,7 +104,7 @@ constant pool: [
Smi [9],
]
handlers: [
[52, 133, 139],
[51, 130, 136],
]
---
......@@ -114,11 +114,11 @@ snippet: "
"
frame size: 11
parameter count: 1
bytecode array length: 251
bytecode array length: 246
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(2),
B(ResumeGenerator), R(new_target),
B(Star), R(1),
......@@ -146,9 +146,9 @@ bytecodes: [
/* 25 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1),
B(Star), R(7),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(6), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(6), U8(1),
B(Star), R(8),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(8),
......@@ -163,7 +163,7 @@ bytecodes: [
B(Star), R(4),
B(LdaZero),
B(Star), R(3),
B(Jump), U8(108),
B(Jump), U8(106),
B(Ldar), R(7),
/* 11 E> */ B(Throw),
/* 16 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
......@@ -180,9 +180,9 @@ bytecodes: [
/* 25 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(1),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(6), U8(1),
B(Star), R(7),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(6), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(6), U8(1),
B(Star), R(8),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(8),
......@@ -235,12 +235,12 @@ bytecodes: [
]
constant pool: [
Smi [52],
Smi [126],
Smi [124],
Smi [6],
Smi [9],
]
handlers: [
[52, 207, 213],
[51, 202, 208],
]
---
......@@ -250,11 +250,11 @@ snippet: "
"
frame size: 17
parameter count: 1
bytecode array length: 697
bytecode array length: 692
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
......@@ -282,9 +282,9 @@ bytecodes: [
/* 44 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(10),
......@@ -343,7 +343,7 @@ bytecodes: [
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(7), U8(12),
B(JumpIfToBooleanTrue), U8(144),
B(JumpIfToBooleanTrue), U8(142),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(12),
B(LdaNamedProperty), R(12), U8(8), U8(14),
......@@ -374,9 +374,9 @@ bytecodes: [
/* 44 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(12), U8(1),
B(Star), R(13),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(12), U8(1),
B(Star), R(14),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(14),
......@@ -403,7 +403,7 @@ bytecodes: [
B(PopContext), R(2),
B(LdaZero),
B(StaContextSlot), R(1), U8(8), U8(0),
B(JumpLoop), U8(212), I8(0),
B(JumpLoop), U8(210), I8(0),
B(Jump), U8(44),
B(Star), R(12),
B(Ldar), R(closure),
......@@ -542,7 +542,7 @@ bytecodes: [
]
constant pool: [
Smi [52],
Smi [148],
Smi [146],
FIXED_ARRAY_TYPE,
TUPLE2_TYPE,
SYMBOL_TYPE,
......@@ -558,14 +558,14 @@ constant pool: [
FIXED_ARRAY_TYPE,
Smi [6],
Smi [18],
Smi [554],
Smi [552],
Smi [6],
Smi [9],
]
handlers: [
[52, 653, 659],
[133, 422, 428],
[136, 378, 380],
[515, 531, 533],
[51, 648, 654],
[130, 417, 423],
[133, 373, 375],
[510, 526, 528],
]
......@@ -273,11 +273,11 @@ snippet: "
"
frame size: 14
parameter count: 1
bytecode array length: 335
bytecode array length: 332
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(5),
B(ResumeGenerator), R(new_target),
B(Star), R(4),
......@@ -305,9 +305,9 @@ bytecodes: [
/* 62 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(4),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(Star), R(10),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(11),
......@@ -436,7 +436,7 @@ constant pool: [
Smi [9],
]
handlers: [
[52, 291, 297],
[51, 288, 294],
]
---
......@@ -448,11 +448,11 @@ snippet: "
"
frame size: 13
parameter count: 1
bytecode array length: 444
bytecode array length: 439
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
......@@ -480,9 +480,9 @@ bytecodes: [
/* 56 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(10),
......@@ -547,7 +547,7 @@ bytecodes: [
B(JumpIfFalse), U8(4),
B(Jump), U8(6),
B(PopContext), R(2),
B(Jump), U8(157),
B(Jump), U8(155),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(5), U8(1), I8(1),
B(LdaSmi), I8(-2),
......@@ -560,7 +560,7 @@ bytecodes: [
B(Star), R(8),
B(LdaSmi), I8(1),
B(TestEqual), R(8), U8(6),
B(JumpIfFalse), U8(101),
B(JumpIfFalse), U8(99),
/* 18 E> */ B(StackCheck),
/* 47 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(8),
......@@ -576,9 +576,9 @@ bytecodes: [
/* 56 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(8), U8(1),
B(Star), R(9),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(8), U8(1),
B(Star), R(10),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(10),
......@@ -604,7 +604,7 @@ bytecodes: [
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(130), I8(1),
B(JumpLoop), U8(128), I8(1),
B(LdaContextSlot), R(1), U8(7), U8(0),
B(Star), R(8),
B(LdaSmi), I8(1),
......@@ -613,7 +613,7 @@ bytecodes: [
B(PopContext), R(2),
B(Jump), U8(7),
B(PopContext), R(2),
B(JumpLoop), U8(238), I8(0),
B(JumpLoop), U8(236), I8(0),
B(PopContext), R(1),
B(LdaUndefined),
B(Star), R(8),
......@@ -650,17 +650,17 @@ bytecodes: [
]
constant pool: [
Smi [52],
Smi [125],
Smi [123],
FIXED_ARRAY_TYPE,
Smi [84],
FIXED_ARRAY_TYPE,
Smi [60],
Smi [301],
Smi [299],
Smi [6],
Smi [9],
]
handlers: [
[52, 400, 406],
[51, 395, 401],
]
---
......@@ -838,11 +838,11 @@ snippet: "
"
frame size: 14
parameter count: 1
bytecode array length: 483
bytecode array length: 480
bytecodes: [
B(Ldar), R(new_target),
B(JumpIfUndefined), U8(26),
B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(JumpIfUndefined), U8(25),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
B(PushContext), R(4),
B(ResumeGenerator), R(new_target),
B(Star), R(3),
......@@ -912,7 +912,7 @@ bytecodes: [
B(JumpIfFalse), U8(4),
B(Jump), U8(6),
B(PopContext), R(2),
B(Jump), U8(187),
B(Jump), U8(185),
B(Ldar), R(3),
B(SwitchOnSmiNoFeedback), U8(4), U8(1), I8(0),
B(LdaSmi), I8(-2),
......@@ -925,7 +925,7 @@ bytecodes: [
B(Star), R(9),
B(LdaSmi), I8(1),
B(TestEqual), R(9), U8(6),
B(JumpIfFalse), U8(128),
B(JumpIfFalse), U8(126),
/* 23 E> */ B(StackCheck),
/* 52 S> */ B(LdaImmutableContextSlot), R(1), U8(4), U8(0),
B(Star), R(9),
......@@ -948,9 +948,9 @@ bytecodes: [
/* 61 S> */ B(Return),
B(LdaSmi), I8(-2),
B(Star), R(3),
B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
B(Star), R(10),
B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(InvokeIntrinsic), U8(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
B(Star), R(11),
B(LdaZero),
B(TestEqualStrictNoFeedback), R(11),
......@@ -978,7 +978,7 @@ bytecodes: [
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(157), I8(1),
B(JumpLoop), U8(155), I8(1),
B(LdaContextSlot), R(1), U8(9), U8(0),
B(Star), R(9),
B(LdaSmi), I8(1),
......@@ -987,7 +987,7 @@ bytecodes: [
B(PopContext), R(2),
B(Jump), U8(10),
B(PopContext), R(2),
B(Wide), B(JumpLoop), U16(266), I16(0),
B(Wide), B(JumpLoop), U16(264), I16(0),
B(PopContext), R(1),
B(LdaUndefined),
B(Star), R(9),
......@@ -1064,7 +1064,7 @@ constant pool: [
Smi [9],
]
handlers: [
[61, 437, 443],
[64, 384, 386],
[60, 434, 440],
[63, 381, 383],
]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment