Commit ce8cef36 authored by Benedikt Meurer's avatar Benedikt Meurer Committed by V8 LUCI CQ

[inspector] Consistently format all native accessors as own properties.

Previously the V8 inspector would only turn embedder accessors on the
prototype chain into data properties, but would not do the same for
ECMAScript builtins, which is kind of inconsistent and weird behavior.

This leaves in the hack that the inspector reports native accessor
properties as (own) data properties, but now at least the very least
does so consistently. In the absence of a better solution, we'll go
with this for now.

Bug: chromium:1076820, chromium:1199247
Change-Id: I593f909a46cb714dbec629a2944eeb892881ba6f
Before: https://imgur.com/kPuSldj.png
After: https://imgur.com/eFau45m.png
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3067319
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: 's avatarKim-Anh Tran <kimanh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#76059}
parent 97b85196
......@@ -1201,8 +1201,6 @@ bool ValueMirror::getProperties(v8::Local<v8::Context> context,
}
}
bool formatAccessorsAsProperties =
clientFor(context)->formatAccessorsAsProperties(object);
auto iterator = v8::debug::PropertyIterator::Create(context, object);
if (!iterator) {
CHECK(tryCatch.HasCaught());
......@@ -1282,8 +1280,7 @@ bool ValueMirror::getProperties(v8::Local<v8::Context> context,
setterMirror = ValueMirror::create(context, descriptor.set);
}
isAccessorProperty = getterMirror || setterMirror;
if (formatAccessorsAsProperties && name != "__proto__" &&
!getterFunction.IsEmpty() &&
if (name != "__proto__" && !getterFunction.IsEmpty() &&
getterFunction->ScriptId() == v8::UnboundScript::kNoScriptId) {
v8::TryCatch tryCatch(isolate);
v8::Local<v8::Value> value;
......
......@@ -74,6 +74,11 @@ expression: (function* foo() { yield 1 })()
Running test: entriesInMapAndSet
expression: new Map([[1,2]])
{
name : size
type : number
value : 1
}
[[Entries]]:
[
[0] : {
......@@ -95,6 +100,11 @@ expression: new Map([[1,2]])
]
expression: new Set([1])
{
name : size
type : number
value : 1
}
[[Entries]]:
[
[0] : {
......
......@@ -121,6 +121,27 @@ Running test: testShortTypedArrayPropertiesPreview
type : number
value : 0
}
[3] : {
name : buffer
subtype : arraybuffer
type : object
value : ArrayBuffer(3)
}
[4] : {
name : byteLength
type : number
value : 3
}
[5] : {
name : byteOffset
type : number
value : 0
}
[6] : {
name : length
type : number
value : 3
}
]
subtype : typedarray
type : object
......@@ -670,6 +691,11 @@ Running test: testSetPropertiesPreview
]
overflow : false
properties : [
[0] : {
name : size
type : number
value : 3
}
]
subtype : set
type : object
......@@ -727,6 +753,11 @@ Running test: testBigSetPropertiesPreview
]
overflow : true
properties : [
[0] : {
name : size
type : number
value : 10
}
]
subtype : set
type : object
......
......@@ -623,6 +623,11 @@ Running test: testMap
description : Map(0)
overflow : false
properties : [
[0] : {
name : size
type : number
value : 0
}
]
subtype : map
type : object
......@@ -659,6 +664,11 @@ Running test: testMap
]
overflow : false
properties : [
[0] : {
name : size
type : number
value : 1
}
]
subtype : map
type : object
......@@ -681,6 +691,11 @@ Running test: testMap
description : Map(1)
overflow : true
properties : [
[0] : {
name : size
type : number
value : 1
}
]
subtype : map
type : object
......@@ -689,6 +704,11 @@ Running test: testMap
description : Map(1)
overflow : true
properties : [
[0] : {
name : size
type : number
value : 1
}
]
subtype : map
type : object
......@@ -697,6 +717,11 @@ Running test: testMap
]
overflow : false
properties : [
[0] : {
name : size
type : number
value : 1
}
]
subtype : map
type : object
......@@ -777,6 +802,11 @@ Running test: testMap
type : number
value : 42
}
[1] : {
name : size
type : number
value : 1
}
]
subtype : map
type : object
......@@ -966,6 +996,11 @@ Running test: testSet
]
overflow : false
properties : [
[0] : {
name : size
type : number
value : 1
}
]
subtype : set
type : object
......@@ -1039,6 +1074,11 @@ Running test: testSet
]
overflow : true
properties : [
[0] : {
name : size
type : number
value : 7
}
]
subtype : set
type : object
......@@ -1728,6 +1768,27 @@ Running test: testTypedArray
type : number
value : 2
}
[3] : {
name : buffer
subtype : arraybuffer
type : object
value : ArrayBuffer(2)
}
[4] : {
name : byteLength
type : number
value : 2
}
[5] : {
name : byteOffset
type : number
value : 0
}
[6] : {
name : length
type : number
value : 2
}
]
subtype : typedarray
type : object
......@@ -2266,6 +2327,11 @@ Running test: testArrayBuffer
description : ArrayBuffer(0)
overflow : false
properties : [
[0] : {
name : byteLength
type : number
value : 0
}
]
subtype : arraybuffer
type : object
......@@ -2284,6 +2350,11 @@ Running test: testArrayBuffer
description : ArrayBuffer(400)
overflow : false
properties : [
[0] : {
name : byteLength
type : number
value : 400
}
]
subtype : arraybuffer
type : object
......@@ -2304,6 +2375,22 @@ Running test: testDataView
description : DataView(16)
overflow : false
properties : [
[0] : {
name : buffer
subtype : arraybuffer
type : object
value : ArrayBuffer(16)
}
[1] : {
name : byteLength
type : number
value : 16
}
[2] : {
name : byteOffset
type : number
value : 0
}
]
subtype : dataview
type : object
......@@ -2322,6 +2409,22 @@ Running test: testDataView
description : DataView(4)
overflow : false
properties : [
[0] : {
name : buffer
subtype : arraybuffer
type : object
value : ArrayBuffer(16)
}
[1] : {
name : byteLength
type : number
value : 4
}
[2] : {
name : byteOffset
type : number
value : 12
}
]
subtype : dataview
type : object
......
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