• Mathieu Chartier's avatar
    Fix and optimize verify object. · 4e30541a
    Mathieu Chartier authored
    VerifyObject no longer resides in heap. You can now enable
    VerifyObject for non-debug builds. VerifyStack is still slow, so it
    is now guarded by its own flag.
    
    Fixed the image writer to not use verification at places where
    verification fails due to invalid reads.
    
    Fixed RosAlloc to use SizeOf which doesn't call verify object.
    
    Added a flag paremeter to some of the mirror getters / setters to
    be able to selectively disable VerifyObject on certain calls.
    
    Optimized the GC to not verify each object multiple times during
    object scanning if verify object is enabled.
    
    Added 3 verification options: verify reads, verify this, and verify
    writes so that you can select how much verification you want for
    mirror getters and setters.
    
    Removed some useless DCHECKs which would slow debug builds without
    providing any benefits.
    
    TODO: RosAlloc verification doesn't currently work with verify
    objects.
    
    Bug: 12934910
    Bug: 12879358
    
    Change-Id: Ic61033104dfc334543f89b0fc0ad8cd4f4015d69
    4e30541a
heap-inl.h 11.4 KB