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, ...@@ -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); auto iterator = v8::debug::PropertyIterator::Create(context, object);
if (!iterator) { if (!iterator) {
CHECK(tryCatch.HasCaught()); CHECK(tryCatch.HasCaught());
...@@ -1282,8 +1280,7 @@ bool ValueMirror::getProperties(v8::Local<v8::Context> context, ...@@ -1282,8 +1280,7 @@ bool ValueMirror::getProperties(v8::Local<v8::Context> context,
setterMirror = ValueMirror::create(context, descriptor.set); setterMirror = ValueMirror::create(context, descriptor.set);
} }
isAccessorProperty = getterMirror || setterMirror; isAccessorProperty = getterMirror || setterMirror;
if (formatAccessorsAsProperties && name != "__proto__" && if (name != "__proto__" && !getterFunction.IsEmpty() &&
!getterFunction.IsEmpty() &&
getterFunction->ScriptId() == v8::UnboundScript::kNoScriptId) { getterFunction->ScriptId() == v8::UnboundScript::kNoScriptId) {
v8::TryCatch tryCatch(isolate); v8::TryCatch tryCatch(isolate);
v8::Local<v8::Value> value; v8::Local<v8::Value> value;
......
...@@ -74,6 +74,11 @@ expression: (function* foo() { yield 1 })() ...@@ -74,6 +74,11 @@ expression: (function* foo() { yield 1 })()
Running test: entriesInMapAndSet Running test: entriesInMapAndSet
expression: new Map([[1,2]]) expression: new Map([[1,2]])
{
name : size
type : number
value : 1
}
[[Entries]]: [[Entries]]:
[ [
[0] : { [0] : {
...@@ -95,6 +100,11 @@ expression: new Map([[1,2]]) ...@@ -95,6 +100,11 @@ expression: new Map([[1,2]])
] ]
expression: new Set([1]) expression: new Set([1])
{
name : size
type : number
value : 1
}
[[Entries]]: [[Entries]]:
[ [
[0] : { [0] : {
......
...@@ -121,6 +121,27 @@ Running test: testShortTypedArrayPropertiesPreview ...@@ -121,6 +121,27 @@ Running test: testShortTypedArrayPropertiesPreview
type : number type : number
value : 0 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 subtype : typedarray
type : object type : object
...@@ -670,6 +691,11 @@ Running test: testSetPropertiesPreview ...@@ -670,6 +691,11 @@ Running test: testSetPropertiesPreview
] ]
overflow : false overflow : false
properties : [ properties : [
[0] : {
name : size
type : number
value : 3
}
] ]
subtype : set subtype : set
type : object type : object
...@@ -727,6 +753,11 @@ Running test: testBigSetPropertiesPreview ...@@ -727,6 +753,11 @@ Running test: testBigSetPropertiesPreview
] ]
overflow : true overflow : true
properties : [ properties : [
[0] : {
name : size
type : number
value : 10
}
] ]
subtype : set subtype : set
type : object type : object
......
...@@ -623,6 +623,11 @@ Running test: testMap ...@@ -623,6 +623,11 @@ Running test: testMap
description : Map(0) description : Map(0)
overflow : false overflow : false
properties : [ properties : [
[0] : {
name : size
type : number
value : 0
}
] ]
subtype : map subtype : map
type : object type : object
...@@ -659,6 +664,11 @@ Running test: testMap ...@@ -659,6 +664,11 @@ Running test: testMap
] ]
overflow : false overflow : false
properties : [ properties : [
[0] : {
name : size
type : number
value : 1
}
] ]
subtype : map subtype : map
type : object type : object
...@@ -681,6 +691,11 @@ Running test: testMap ...@@ -681,6 +691,11 @@ Running test: testMap
description : Map(1) description : Map(1)
overflow : true overflow : true
properties : [ properties : [
[0] : {
name : size
type : number
value : 1
}
] ]
subtype : map subtype : map
type : object type : object
...@@ -689,6 +704,11 @@ Running test: testMap ...@@ -689,6 +704,11 @@ Running test: testMap
description : Map(1) description : Map(1)
overflow : true overflow : true
properties : [ properties : [
[0] : {
name : size
type : number
value : 1
}
] ]
subtype : map subtype : map
type : object type : object
...@@ -697,6 +717,11 @@ Running test: testMap ...@@ -697,6 +717,11 @@ Running test: testMap
] ]
overflow : false overflow : false
properties : [ properties : [
[0] : {
name : size
type : number
value : 1
}
] ]
subtype : map subtype : map
type : object type : object
...@@ -777,6 +802,11 @@ Running test: testMap ...@@ -777,6 +802,11 @@ Running test: testMap
type : number type : number
value : 42 value : 42
} }
[1] : {
name : size
type : number
value : 1
}
] ]
subtype : map subtype : map
type : object type : object
...@@ -966,6 +996,11 @@ Running test: testSet ...@@ -966,6 +996,11 @@ Running test: testSet
] ]
overflow : false overflow : false
properties : [ properties : [
[0] : {
name : size
type : number
value : 1
}
] ]
subtype : set subtype : set
type : object type : object
...@@ -1039,6 +1074,11 @@ Running test: testSet ...@@ -1039,6 +1074,11 @@ Running test: testSet
] ]
overflow : true overflow : true
properties : [ properties : [
[0] : {
name : size
type : number
value : 7
}
] ]
subtype : set subtype : set
type : object type : object
...@@ -1728,6 +1768,27 @@ Running test: testTypedArray ...@@ -1728,6 +1768,27 @@ Running test: testTypedArray
type : number type : number
value : 2 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 subtype : typedarray
type : object type : object
...@@ -2266,6 +2327,11 @@ Running test: testArrayBuffer ...@@ -2266,6 +2327,11 @@ Running test: testArrayBuffer
description : ArrayBuffer(0) description : ArrayBuffer(0)
overflow : false overflow : false
properties : [ properties : [
[0] : {
name : byteLength
type : number
value : 0
}
] ]
subtype : arraybuffer subtype : arraybuffer
type : object type : object
...@@ -2284,6 +2350,11 @@ Running test: testArrayBuffer ...@@ -2284,6 +2350,11 @@ Running test: testArrayBuffer
description : ArrayBuffer(400) description : ArrayBuffer(400)
overflow : false overflow : false
properties : [ properties : [
[0] : {
name : byteLength
type : number
value : 400
}
] ]
subtype : arraybuffer subtype : arraybuffer
type : object type : object
...@@ -2304,6 +2375,22 @@ Running test: testDataView ...@@ -2304,6 +2375,22 @@ Running test: testDataView
description : DataView(16) description : DataView(16)
overflow : false overflow : false
properties : [ 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 subtype : dataview
type : object type : object
...@@ -2322,6 +2409,22 @@ Running test: testDataView ...@@ -2322,6 +2409,22 @@ Running test: testDataView
description : DataView(4) description : DataView(4)
overflow : false overflow : false
properties : [ 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 subtype : dataview
type : object 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