2016-02-25 12:07:07 +00:00
|
|
|
#
|
|
|
|
# Autogenerated by generate-bytecode-expectations.
|
|
|
|
#
|
|
|
|
|
|
|
|
---
|
|
|
|
wrap: no
|
|
|
|
top level: yes
|
|
|
|
|
|
|
|
---
|
|
|
|
snippet: "
|
|
|
|
var a = 1;
|
|
|
|
"
|
|
|
|
frame size: 4
|
|
|
|
parameter count: 1
|
2017-06-29 12:10:41 +00:00
|
|
|
bytecode array length: 23
|
2016-02-25 12:07:07 +00:00
|
|
|
bytecodes: [
|
[interpreter] Move function-entry stack check to start of bytecode array
The function-entry stack check should dominate all other
instructions in a function. Prior to this CL it was possible to create
paths not including a stack check due to SwitchOnGeneratorState: the
generator-creation branch had a stack check, while generator-resume
branches did not.
0 : af fb 00 01 SwitchOnGeneratorState r0, [0], [1] { 0: @22 }
4 : 27 fe fa Mov <closure>, r1
7 : 27 02 f9 Mov <this>, r2
10 : 64 0a fa 02 InvokeIntrinsic [_CreateJSGeneratorObject], r1-r2
14 : 26 fb Star r0
16 : a7 StackCheck
17 : b0 fb fb 01 00 SuspendGenerator r0, r0-r0, [0]
22 : b1 fb fb 01 ResumeGenerator r0, r0-r0
[... no stack check here ...]
This CL moves the stack check to the beginning of the bytecode array,
i.e. before SwitchOnGeneratorState.
Bug: chromium:1020031
Change-Id: I8ba8cba99611ddbe50c76023129d926cc84b1d5e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903440
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64888}
2019-11-11 13:34:07 +00:00
|
|
|
/* 0 E> */ B(StackCheck),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(LdaConstant), U8(0),
|
|
|
|
B(Star), R(1),
|
|
|
|
B(LdaZero),
|
|
|
|
B(Star), R(2),
|
2016-07-13 11:32:35 +00:00
|
|
|
B(Mov), R(closure), R(3),
|
2018-03-19 14:20:46 +00:00
|
|
|
B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(3),
|
2017-06-29 12:10:41 +00:00
|
|
|
/* 8 S> */ B(LdaSmi), I8(1),
|
2017-12-13 21:44:29 +00:00
|
|
|
/* 8 E> */ B(StaGlobal), U8(1), U8(2),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(LdaUndefined),
|
2018-06-12 21:57:52 +00:00
|
|
|
/* 11 S> */ B(Return),
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
constant pool: [
|
2016-09-06 16:10:19 +00:00
|
|
|
FIXED_ARRAY_TYPE,
|
|
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["a"],
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
handlers: [
|
|
|
|
]
|
|
|
|
|
|
|
|
---
|
|
|
|
snippet: "
|
|
|
|
function f() {}
|
|
|
|
"
|
2016-07-13 11:32:35 +00:00
|
|
|
frame size: 3
|
2016-02-25 12:07:07 +00:00
|
|
|
parameter count: 1
|
2016-07-13 11:32:35 +00:00
|
|
|
bytecode array length: 18
|
2016-02-25 12:07:07 +00:00
|
|
|
bytecodes: [
|
[interpreter] Move function-entry stack check to start of bytecode array
The function-entry stack check should dominate all other
instructions in a function. Prior to this CL it was possible to create
paths not including a stack check due to SwitchOnGeneratorState: the
generator-creation branch had a stack check, while generator-resume
branches did not.
0 : af fb 00 01 SwitchOnGeneratorState r0, [0], [1] { 0: @22 }
4 : 27 fe fa Mov <closure>, r1
7 : 27 02 f9 Mov <this>, r2
10 : 64 0a fa 02 InvokeIntrinsic [_CreateJSGeneratorObject], r1-r2
14 : 26 fb Star r0
16 : a7 StackCheck
17 : b0 fb fb 01 00 SuspendGenerator r0, r0-r0, [0]
22 : b1 fb fb 01 ResumeGenerator r0, r0-r0
[... no stack check here ...]
This CL moves the stack check to the beginning of the bytecode array,
i.e. before SwitchOnGeneratorState.
Bug: chromium:1020031
Change-Id: I8ba8cba99611ddbe50c76023129d926cc84b1d5e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903440
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64888}
2019-11-11 13:34:07 +00:00
|
|
|
/* 0 E> */ B(StackCheck),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(LdaConstant), U8(0),
|
|
|
|
B(Star), R(0),
|
|
|
|
B(LdaZero),
|
|
|
|
B(Star), R(1),
|
2016-07-13 11:32:35 +00:00
|
|
|
B(Mov), R(closure), R(2),
|
2018-03-19 14:20:46 +00:00
|
|
|
B(CallRuntime), U16(Runtime::kDeclareGlobals), R(0), U8(3),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(LdaUndefined),
|
2018-06-12 21:57:52 +00:00
|
|
|
/* 16 S> */ B(Return),
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
constant pool: [
|
2016-09-06 16:10:19 +00:00
|
|
|
FIXED_ARRAY_TYPE,
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
handlers: [
|
|
|
|
]
|
|
|
|
|
|
|
|
---
|
|
|
|
snippet: "
|
|
|
|
var a = 1;
|
|
|
|
a=2;
|
|
|
|
"
|
|
|
|
frame size: 4
|
|
|
|
parameter count: 1
|
2017-06-29 12:10:41 +00:00
|
|
|
bytecode array length: 29
|
2016-02-25 12:07:07 +00:00
|
|
|
bytecodes: [
|
[interpreter] Move function-entry stack check to start of bytecode array
The function-entry stack check should dominate all other
instructions in a function. Prior to this CL it was possible to create
paths not including a stack check due to SwitchOnGeneratorState: the
generator-creation branch had a stack check, while generator-resume
branches did not.
0 : af fb 00 01 SwitchOnGeneratorState r0, [0], [1] { 0: @22 }
4 : 27 fe fa Mov <closure>, r1
7 : 27 02 f9 Mov <this>, r2
10 : 64 0a fa 02 InvokeIntrinsic [_CreateJSGeneratorObject], r1-r2
14 : 26 fb Star r0
16 : a7 StackCheck
17 : b0 fb fb 01 00 SuspendGenerator r0, r0-r0, [0]
22 : b1 fb fb 01 ResumeGenerator r0, r0-r0
[... no stack check here ...]
This CL moves the stack check to the beginning of the bytecode array,
i.e. before SwitchOnGeneratorState.
Bug: chromium:1020031
Change-Id: I8ba8cba99611ddbe50c76023129d926cc84b1d5e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903440
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64888}
2019-11-11 13:34:07 +00:00
|
|
|
/* 0 E> */ B(StackCheck),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(LdaConstant), U8(0),
|
|
|
|
B(Star), R(1),
|
|
|
|
B(LdaZero),
|
|
|
|
B(Star), R(2),
|
2016-07-13 11:32:35 +00:00
|
|
|
B(Mov), R(closure), R(3),
|
2018-03-19 14:20:46 +00:00
|
|
|
B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(3),
|
2017-06-29 12:10:41 +00:00
|
|
|
/* 8 S> */ B(LdaSmi), I8(1),
|
2017-12-13 21:44:29 +00:00
|
|
|
/* 8 E> */ B(StaGlobal), U8(1), U8(2),
|
2017-01-25 17:39:24 +00:00
|
|
|
/* 11 S> */ B(LdaSmi), I8(2),
|
2018-03-20 15:16:25 +00:00
|
|
|
/* 12 E> */ B(StaGlobal), U8(1), U8(2),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(Star), R(0),
|
2018-06-12 21:57:52 +00:00
|
|
|
/* 16 S> */ B(Return),
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
constant pool: [
|
2016-09-06 16:10:19 +00:00
|
|
|
FIXED_ARRAY_TYPE,
|
|
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["a"],
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
handlers: [
|
|
|
|
]
|
|
|
|
|
|
|
|
---
|
|
|
|
snippet: "
|
|
|
|
function f() {}
|
|
|
|
f();
|
|
|
|
"
|
2016-07-13 11:32:35 +00:00
|
|
|
frame size: 4
|
2016-02-25 12:07:07 +00:00
|
|
|
parameter count: 1
|
2017-04-11 14:20:30 +00:00
|
|
|
bytecode array length: 27
|
2016-02-25 12:07:07 +00:00
|
|
|
bytecodes: [
|
[interpreter] Move function-entry stack check to start of bytecode array
The function-entry stack check should dominate all other
instructions in a function. Prior to this CL it was possible to create
paths not including a stack check due to SwitchOnGeneratorState: the
generator-creation branch had a stack check, while generator-resume
branches did not.
0 : af fb 00 01 SwitchOnGeneratorState r0, [0], [1] { 0: @22 }
4 : 27 fe fa Mov <closure>, r1
7 : 27 02 f9 Mov <this>, r2
10 : 64 0a fa 02 InvokeIntrinsic [_CreateJSGeneratorObject], r1-r2
14 : 26 fb Star r0
16 : a7 StackCheck
17 : b0 fb fb 01 00 SuspendGenerator r0, r0-r0, [0]
22 : b1 fb fb 01 ResumeGenerator r0, r0-r0
[... no stack check here ...]
This CL moves the stack check to the beginning of the bytecode array,
i.e. before SwitchOnGeneratorState.
Bug: chromium:1020031
Change-Id: I8ba8cba99611ddbe50c76023129d926cc84b1d5e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1903440
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#64888}
2019-11-11 13:34:07 +00:00
|
|
|
/* 0 E> */ B(StackCheck),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(LdaConstant), U8(0),
|
|
|
|
B(Star), R(1),
|
|
|
|
B(LdaZero),
|
|
|
|
B(Star), R(2),
|
2016-07-13 11:32:35 +00:00
|
|
|
B(Mov), R(closure), R(3),
|
2018-03-19 14:20:46 +00:00
|
|
|
B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(3),
|
2017-07-27 12:45:00 +00:00
|
|
|
/* 16 S> */ B(LdaGlobal), U8(1), U8(0),
|
2016-11-10 10:41:48 +00:00
|
|
|
B(Star), R(1),
|
2019-03-08 14:57:54 +00:00
|
|
|
/* 16 E> */ B(CallUndefinedReceiver0), R(1), U8(2),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(Star), R(0),
|
2018-06-12 21:57:52 +00:00
|
|
|
/* 21 S> */ B(Return),
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
constant pool: [
|
2016-09-06 16:10:19 +00:00
|
|
|
FIXED_ARRAY_TYPE,
|
2016-11-16 18:17:22 +00:00
|
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["f"],
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
handlers: [
|
|
|
|
]
|
|
|
|
|