After offline discussion with Hannes, and reading *Space::Verify(), it does
seem like most (if not all) VerifyPointer() calls in objects-debug.cc are
redundant (since the spaces use VerifyPointersVisitor to iterate object
bodies and verify all of them).

On Thu, Oct 13, 2016 at 5:27 PM, Adam Klein <ad...@chromium.org> wrote:

> Hmm, am still confused. Will pick your brain when I'm in MUC next week :)
>
> On Thu, Oct 13, 2016 at 6:11 AM, Hannes Payer <hpa...@chromium.org> wrote:
>
>> This one you need because it verifies the content of the object fields,
>> i.e. the invariants.
>>
>> On Wed, Oct 12, 2016 at 7:01 PM Adam Klein <ad...@chromium.org> wrote:
>>
>>> Thanks, Hannes. Are the calls to VerifyPointer() in AccessorPairVerify
>>> also redundant?
>>>
>>> On Wed, Oct 12, 2016 at 12:50 AM, 'Hannes Payer' via v8-dev <
>>> v8-dev@googlegroups.com> wrote:
>>>
>>> Interesting observation.
>>>
>>> The recursion in Box with ObjectVerify seems indeed redundant since the
>>> referenced object will be found by the verifier later.
>>> It should be fine if we just verify basic invariants in object-debug.cc,
>>> given that there is an iterator that feeds the verifier with objects (which
>>> is the case for the heap verifier).
>>>
>>> On Wed, Oct 12, 2016 at 1:41 AM Adam Klein <ad...@chromium.org> wrote:
>>>
>>> +some GC folks directly
>>>
>>> On Tue, Oct 4, 2016 at 11:51 AM, Adam Klein <ad...@chromium.org> wrote:
>>>
>>> It seems there's some confusion (likely on my part) about what code
>>> needs to be added to objects-debug.cc when adding a new HeapObject.
>>> Consider two different Structs, AccessorPair and Box:
>>>
>>> void AccessorPair::AccessorPairVerify() {
>>>   CHECK(IsAccessorPair());
>>>   VerifyPointer(getter());
>>>   VerifyPointer(setter());
>>> }
>>>
>>> void Box::BoxVerify() {
>>>   CHECK(IsBox());
>>>   value()->ObjectVerify();
>>> }
>>>
>>> AccessorPair only calls VerifyPointer, which checks that the fields is
>>> either a Smi or is a pointer to a HeapObject that lives in the Heap.
>>> Meanwhile Box recurses into ObjectVerify on the thing it wraps. Which is
>>> correct?
>>>
>>> Reading Heap::Verify, it seems we call Verify on each space, which calls
>>> ObjectVerify() followed by iterating the body with a VerifyPointersVisitor.
>>> Which looks like it does something very similar to VerifyPointer(). So the
>>> call to VerifyPointer() in AccessorPairVerify looks redundant.
>>>
>>> What about the call to ObjectVerify() in BoxVerify? I expect we'll end
>>> up eventually calling ObjectVerify whenever the heap iteration hits
>>> Box::value() (and as per the previous paragraph, assuming we've already
>>> verified that the pointer is _in_ the heap).
>>>
>>> So do we really need anything in object-debug.cc other than specific
>>> invariants about the contents? Say, a field that ought to be one of a few
>>> object types.
>>>
>>> - Adam
>>>
>>>
>>> --
>>> --
>>> v8-dev mailing list
>>> v8-dev@googlegroups.com
>>> http://groups.google.com/group/v8-dev
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "v8-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to v8-dev+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>> --
>>> --
>>> v8-dev mailing list
>>> v8-dev@googlegroups.com
>>> http://groups.google.com/group/v8-dev
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "v8-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to v8-dev+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>>
>

-- 
-- 
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to