poor man's contention profiler

When enabled this dumps a stack when an SkSpinlock is contended:

    out/skottie_tool(_ZN10SkSpinlock16contendedAcquireEv+0x1d)[0xa14d81]
    out/skottie_tool(_ZN13SkStrikeCache10attachNodeEPNS_4NodeE+0x21)[0x7274d3]
    out/skottie_tool(_ZN21SkGlyphRunListPainter19drawForBitmapDeviceERK14SkGlyphRunListRK8SkMatrixPKNS_19BitmapDevicePainterE+0x570)[0x9f83c2]
    out/skottie_tool(_ZN14SkBitmapDevice16drawGlyphRunListERK14SkGlyphRunList+0x47)[0x9d8f0d]
    out/skottie_tool(_ZN17SkGlyphRunBuilder12drawTextBlobERK7SkPaintRK10SkTextBlob7SkPointP12SkBaseDevice+0x1eb)[0x6d9c59]
    out/skottie_tool(_ZN8SkCanvas14onDrawTextBlobEPK10SkTextBlobffRK7SkPaint+0xf9)[0x6c9cff]
    out/skottie_tool(_ZN8SkCanvas12drawTextBlobEPK10SkTextBlobffRK7SkPaint+0xff)[0x6c9f3d]
    out/skottie_tool(_ZNK4sksg4Draw8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x74)[0xcdba5c]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg15TransformEffect8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x82)[0xce5e2e]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg5Group8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0xf0)[0xcdd11c]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg15TransformEffect8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x82)[0xce5e2e]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg10ClipEffect8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x5d)[0xcda27f]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg11ColorFilter8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x86)[0xcda4b6]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg15TransformEffect8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0x82)[0xce5e2e]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK7skottie8internal16MotionBlurEffect29renderToRaster8888Pow2SamplesEP8SkCanvasPKN4sksg10RenderNode13RenderContextE+0x18e)[0x6ab7d8]
    out/skottie_tool(_ZNK7skottie8internal16MotionBlurEffect8onRenderEP8SkCanvasPKN4sksg10RenderNode13RenderContextE+0xfe)[0x6abbba]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK4sksg5Group8onRenderEP8SkCanvasPKNS_10RenderNode13RenderContextE+0xf0)[0xcdd11c]
    out/skottie_tool(_ZNK4sksg10RenderNode6renderEP8SkCanvasPKNS0_13RenderContextE+0x46)[0xce3e08]
    out/skottie_tool(_ZNK7skottie9Animation6renderEP8SkCanvasPK6SkRectj+0x166)[0x691a78]
    out/skottie_tool[0x688aca]
    out/skottie_tool[0x6886fb]
    out/skottie_tool[0x72bc3e]
    out/skottie_tool(_ZN12SkThreadPoolI8SkTArrayISt8functionIFvvEELb0EEE7do_workEv+0xe5)[0x6d4d63]
    out/skottie_tool(_ZN12SkThreadPoolI8SkTArrayISt8functionIFvvEELb0EEE4LoopEPv+0x28)[0x6d4a94]
    /lib/x86_64-linux-gnu/libstdc++.so.6(+0xbbb2f)[0x7fbec2880b2f]
    /lib/x86_64-linux-gnu/libpthread.so.0(+0x7c73)[0x7fbec2547c73]
    /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f)[0x7fbec1568def]

Change-Id: I32ce3b0d47a07b8b03a64539962a31a2bab89af9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/244117
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
1 file changed