e9d3611781
This reverts commit f9ebad0119
.
Reason for revert: suspected root cause of crbug.com/1257806 Additionally, this patch might actually be incorrect as we eagerly evaluate native accessors, which can only happen if the debugger is running.
Original change's description:
> [inspector] Use side-effect free debug evaluate for inherited accessors.
>
> Replace the hard-coded blocklist ("Response.body" and "Request.body") in
> the V8 inspector with proper side-effect free debug evaluate. This is
> otherwise a non-functional change and in particular preserves the
> behavior of reporting accessors as (own) data properties. That will be
> tackled in a follow-up CL.
>
> This CL is possible because with https://crrev.com/c/3056879 Blink now
> properly marks accessors as side-effect free consistently with what the
> V8 inspector had done before.
>
> Doc: http://doc/1gLyyOlssS5zyCSEyybVC-5sp0UnNJj2hBoFyf6ryrTc
> Bug: chromium:829571, chromium:1076820, chromium:1119900
> Change-Id: Idb256accaf4cfb5db5982b3eb06ddcef588be635
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3062573
> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
> Commit-Queue: Philip Pfaffe <pfaffe@chromium.org>
> Reviewed-by: Philip Pfaffe <pfaffe@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#76019}
Bug: chromium:829571, chromium:1076820, chromium:1119900, chromium:1257806
Fixed: chromium:1265372
Change-Id: Ia31a3022aaa9ddeae1f01eaa90e345f8bdbb21c9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3259653
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/main@{#77708}
373 lines
5.5 KiB
Plaintext
373 lines
5.5 KiB
Plaintext
Check internal properties reported in object preview.
|
|
|
|
Running test: boxedObjects
|
|
expression: new Number(239)
|
|
{
|
|
name : [[PrimitiveValue]]
|
|
type : number
|
|
value : 239
|
|
}
|
|
|
|
expression: new Boolean(false)
|
|
{
|
|
name : [[PrimitiveValue]]
|
|
type : boolean
|
|
value : false
|
|
}
|
|
|
|
expression: new String("abc")
|
|
{
|
|
name : [[PrimitiveValue]]
|
|
type : string
|
|
value : abc
|
|
}
|
|
|
|
expression: Object(Symbol(42))
|
|
{
|
|
name : [[PrimitiveValue]]
|
|
type : symbol
|
|
value : Symbol(42)
|
|
}
|
|
{
|
|
name : description
|
|
type : string
|
|
value : 42
|
|
}
|
|
|
|
expression: Object(BigInt(2))
|
|
{
|
|
name : [[PrimitiveValue]]
|
|
type : bigint
|
|
value : 2n
|
|
}
|
|
|
|
|
|
Running test: promise
|
|
expression: Promise.resolve(42)
|
|
{
|
|
name : [[PromiseState]]
|
|
type : string
|
|
value : fulfilled
|
|
}
|
|
{
|
|
name : [[PromiseResult]]
|
|
type : number
|
|
value : 42
|
|
}
|
|
|
|
expression: new Promise(() => undefined)
|
|
{
|
|
name : [[PromiseState]]
|
|
type : string
|
|
value : pending
|
|
}
|
|
{
|
|
name : [[PromiseResult]]
|
|
type : undefined
|
|
value : undefined
|
|
}
|
|
|
|
|
|
Running test: generatorObject
|
|
expression: (function* foo() { yield 1 })()
|
|
{
|
|
name : [[GeneratorState]]
|
|
type : string
|
|
value : suspended
|
|
}
|
|
|
|
|
|
Running test: entriesInMapAndSet
|
|
expression: new Map([[1,2]])
|
|
{
|
|
name : size
|
|
type : number
|
|
value : 1
|
|
}
|
|
[[Entries]]:
|
|
[
|
|
[0] : {
|
|
key : {
|
|
description : 1
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : number
|
|
}
|
|
value : {
|
|
description : 2
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : number
|
|
}
|
|
}
|
|
]
|
|
|
|
expression: new Set([1])
|
|
{
|
|
name : size
|
|
type : number
|
|
value : 1
|
|
}
|
|
[[Entries]]:
|
|
[
|
|
[0] : {
|
|
value : {
|
|
description : 1
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : number
|
|
}
|
|
}
|
|
]
|
|
|
|
expression: new WeakMap([[{}, 42]])
|
|
[[Entries]]:
|
|
[
|
|
[0] : {
|
|
key : {
|
|
description : Object
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : object
|
|
}
|
|
value : {
|
|
description : 42
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : number
|
|
}
|
|
}
|
|
]
|
|
|
|
expression: new WeakSet([{}])
|
|
[[Entries]]:
|
|
[
|
|
[0] : {
|
|
value : {
|
|
description : Object
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : object
|
|
}
|
|
}
|
|
]
|
|
|
|
|
|
Running test: iteratorObject
|
|
expression: (new Map([[1,2]])).entries()
|
|
[[Entries]]:
|
|
[
|
|
[0] : {
|
|
key : {
|
|
description : 1
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : number
|
|
}
|
|
value : {
|
|
description : 2
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : number
|
|
}
|
|
}
|
|
]
|
|
|
|
expression: (new Set([1,2])).entries()
|
|
[[Entries]]:
|
|
[
|
|
[0] : {
|
|
key : {
|
|
description : 1
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : number
|
|
}
|
|
value : {
|
|
description : 1
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : number
|
|
}
|
|
}
|
|
[1] : {
|
|
key : {
|
|
description : 2
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : number
|
|
}
|
|
value : {
|
|
description : 2
|
|
overflow : false
|
|
properties : [
|
|
]
|
|
type : number
|
|
}
|
|
}
|
|
]
|
|
|
|
|
|
Running test: noPreviewForFunctionObject
|
|
(function foo(){})
|
|
{
|
|
id : <messageId>
|
|
result : {
|
|
result : {
|
|
className : Function
|
|
description : function foo(){}
|
|
objectId : <objectId>
|
|
type : function
|
|
}
|
|
}
|
|
}
|
|
|
|
Running test: otherObjects
|
|
expression: [1,2,3]
|
|
{
|
|
name : 0
|
|
type : number
|
|
value : 1
|
|
}
|
|
{
|
|
name : 1
|
|
type : number
|
|
value : 2
|
|
}
|
|
{
|
|
name : 2
|
|
type : number
|
|
value : 3
|
|
}
|
|
|
|
expression: /123/
|
|
{
|
|
name : lastIndex
|
|
type : number
|
|
value : 0
|
|
}
|
|
{
|
|
name : dotAll
|
|
type : boolean
|
|
value : false
|
|
}
|
|
{
|
|
name : flags
|
|
type : string
|
|
value :
|
|
}
|
|
{
|
|
name : global
|
|
type : boolean
|
|
value : false
|
|
}
|
|
{
|
|
name : hasIndices
|
|
type : boolean
|
|
value : false
|
|
}
|
|
{
|
|
name : ignoreCase
|
|
type : boolean
|
|
value : false
|
|
}
|
|
{
|
|
name : multiline
|
|
type : boolean
|
|
value : false
|
|
}
|
|
{
|
|
name : source
|
|
type : string
|
|
value : 123
|
|
}
|
|
{
|
|
name : sticky
|
|
type : boolean
|
|
value : false
|
|
}
|
|
{
|
|
name : unicode
|
|
type : boolean
|
|
value : false
|
|
}
|
|
|
|
expression: ({})
|
|
|
|
|
|
Running test: overridenArrayGetter
|
|
expression: Promise.resolve(42)
|
|
{
|
|
name : [[PromiseState]]
|
|
type : string
|
|
value : fulfilled
|
|
}
|
|
{
|
|
name : [[PromiseResult]]
|
|
type : number
|
|
value : 42
|
|
}
|
|
|
|
|
|
Running test: privateNames
|
|
expression: new class { #foo = 1; #bar = 2; baz = 3;}
|
|
{
|
|
name : #foo
|
|
type : number
|
|
value : 1
|
|
}
|
|
{
|
|
name : #bar
|
|
type : number
|
|
value : 2
|
|
}
|
|
{
|
|
name : baz
|
|
type : number
|
|
value : 3
|
|
}
|
|
|
|
expression: new class extends class { #baz = 3; } { #foo = 1; #bar = 2; }
|
|
{
|
|
name : #baz
|
|
type : number
|
|
value : 3
|
|
}
|
|
{
|
|
name : #foo
|
|
type : number
|
|
value : 1
|
|
}
|
|
{
|
|
name : #bar
|
|
type : number
|
|
value : 2
|
|
}
|
|
|
|
expression: new class extends class { constructor() { return new Proxy({}, {}); } } { #foo = 1; #bar = 2; }
|
|
|
|
|
|
Running test: functionProxy
|
|
expression: new Proxy(() => {}, { get: () => x++ })
|
|
{
|
|
name : length
|
|
type : number
|
|
value : 0
|
|
}
|
|
{
|
|
name : name
|
|
type : string
|
|
value :
|
|
}
|