2016-02-25 12:07:07 +00:00
|
|
|
#
|
|
|
|
# Autogenerated by generate-bytecode-expectations.
|
|
|
|
#
|
|
|
|
|
|
|
|
---
|
|
|
|
wrap: yes
|
|
|
|
|
|
|
|
---
|
|
|
|
snippet: "
|
|
|
|
const x = 10;
|
|
|
|
"
|
|
|
|
frame size: 1
|
|
|
|
parameter count: 1
|
2017-05-08 18:55:54 +00:00
|
|
|
bytecode array length: 7
|
2016-02-25 12:07:07 +00:00
|
|
|
bytecodes: [
|
2016-05-11 12:21:56 +00:00
|
|
|
/* 30 E> */ B(StackCheck),
|
2017-01-25 17:39:24 +00:00
|
|
|
/* 44 S> */ B(LdaSmi), I8(10),
|
2016-06-09 13:32:33 +00:00
|
|
|
B(Star), R(0),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(LdaUndefined),
|
|
|
|
/* 48 S> */ B(Return),
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
constant pool: [
|
|
|
|
]
|
|
|
|
handlers: [
|
|
|
|
]
|
|
|
|
|
|
|
|
---
|
|
|
|
snippet: "
|
|
|
|
const x = 10; return x;
|
|
|
|
"
|
2016-10-20 17:31:36 +00:00
|
|
|
frame size: 1
|
2016-02-25 12:07:07 +00:00
|
|
|
parameter count: 1
|
2017-07-17 19:02:35 +00:00
|
|
|
bytecode array length: 6
|
2016-02-25 12:07:07 +00:00
|
|
|
bytecodes: [
|
2016-05-11 12:21:56 +00:00
|
|
|
/* 30 E> */ B(StackCheck),
|
2017-01-25 17:39:24 +00:00
|
|
|
/* 44 S> */ B(LdaSmi), I8(10),
|
2016-05-23 13:31:53 +00:00
|
|
|
B(Star), R(0),
|
2017-07-14 17:50:09 +00:00
|
|
|
/* 57 S> */ B(Return),
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
constant pool: [
|
|
|
|
]
|
|
|
|
handlers: [
|
|
|
|
]
|
|
|
|
|
|
|
|
---
|
|
|
|
snippet: "
|
|
|
|
const x = ( x = 20);
|
|
|
|
"
|
2017-06-06 09:00:22 +00:00
|
|
|
frame size: 2
|
2016-02-25 12:07:07 +00:00
|
|
|
parameter count: 1
|
2017-06-06 09:00:22 +00:00
|
|
|
bytecode array length: 21
|
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
|
|
|
/* 30 E> */ B(StackCheck),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(LdaTheHole),
|
|
|
|
B(Star), R(0),
|
[inspector] moved var initialization break location before init expression (reland)
This CL improves break locations for expressions like 'var a = <expr>'. Without CL we use <expr> position as break location for initialization statement, with this CL we use position of first character after '=' as position.
Benefits (see test for details):
- only one break in expressions which includes mix of property lookup and calls, e.g. var p = Promise.resolve().then(x => x * 2),
- removed redundant break location for expressions like: let { x, y } = { x: 1, y: 2}.
TBR=dgozman@chromium.org,rmcilroy@chromium.org,machenbach@chromium.org,marja@chromium.org,kozyatinskiy@chromium.org,devtools-reviews@chromium.org,v8-reviews@googlegroups.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: v8:5909
Change-Id: Ie84fa79afeed09e28cf8478ba610a0cfbfdfc294
Reviewed-on: https://chromium-review.googlesource.com/518116
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45598}
2017-05-30 12:25:55 +00:00
|
|
|
/* 44 S> */ B(LdaSmi), I8(20),
|
2016-06-09 13:32:33 +00:00
|
|
|
B(Star), R(1),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(Ldar), R(0),
|
2017-06-06 09:00:22 +00:00
|
|
|
/* 48 E> */ B(ThrowReferenceErrorIfHole), U8(0),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
|
2016-08-10 17:32:30 +00:00
|
|
|
B(Star), R(0),
|
2016-05-23 13:31:53 +00:00
|
|
|
B(LdaUndefined),
|
2016-05-11 12:21:56 +00:00
|
|
|
/* 55 S> */ B(Return),
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
constant pool: [
|
2016-09-06 16:10:19 +00:00
|
|
|
ONE_BYTE_INTERNALIZED_STRING_TYPE ["x"],
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
handlers: [
|
|
|
|
]
|
|
|
|
|
|
|
|
---
|
|
|
|
snippet: "
|
|
|
|
const x = 10; x = 20;
|
|
|
|
"
|
2016-10-20 17:31:36 +00:00
|
|
|
frame size: 1
|
2016-02-25 12:07:07 +00:00
|
|
|
parameter count: 1
|
2017-06-27 08:44:35 +00:00
|
|
|
bytecode array length: 14
|
2016-02-25 12:07:07 +00:00
|
|
|
bytecodes: [
|
2016-05-11 12:21:56 +00:00
|
|
|
/* 30 E> */ B(StackCheck),
|
2017-01-25 17:39:24 +00:00
|
|
|
/* 44 S> */ B(LdaSmi), I8(10),
|
2016-05-23 13:31:53 +00:00
|
|
|
B(Star), R(0),
|
2017-06-27 08:44:35 +00:00
|
|
|
/* 48 S> */ B(LdaSmi), I8(20),
|
2016-10-20 17:31:36 +00:00
|
|
|
/* 50 E> */ B(CallRuntime), U16(Runtime::kThrowConstAssignError), R(0), U8(0),
|
2016-05-11 12:21:56 +00:00
|
|
|
B(LdaUndefined),
|
|
|
|
/* 56 S> */ B(Return),
|
2016-02-25 12:07:07 +00:00
|
|
|
]
|
|
|
|
constant pool: [
|
|
|
|
]
|
|
|
|
handlers: [
|
|
|
|
]
|
|
|
|
|