skia2/include/private
Mike Klein 80e1d56e19 implement SkTDArray with std::vector
It's always worth seeing if we can get away with replacing custom data
structures with ones from the standard library.  Our array-like types
are all good candidates to replace with std::vector, and it's especially
easy to start with SkTDArray.  Unlike the others, it has no preallocated
S-variant, which is tricky to make work with std::vector.

SkTDArray also has known integer overflow bugs, leading to out of range
writes.  It'd be _very_ nice to ditch it for a better standard vector.

I removed a bunch of unused or little-used methods, and updated a couple
call sites that used methods in unusual or dangerous ways.

I've had to tweak GrAAConvexTessellator and SkBaseShadowTessellator just
a touch to work within the constraints of an std::vector impl.  It's not
intended to be legal to write to the reserved-but-not-counted elements
of an SkTDArray, but you can get away with it in our old implementation.
This version now uses setCount() to actually reserve and count them, and
should have the same performance and use the same amount of memory.

The PathMeasure_explosion GM I added recently to reproduce this bug now
draws without triggering undefined behavior or ASAN errors, provided you
have ~40GB of RAM.

Bug: skia:7674

Change-Id: I4eacae18a976cd4a6d218102f8ca5d973d4d7d0e
Reviewed-on: https://skia-review.googlesource.com/115982
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2018-04-02 15:38:05 +00:00
..
GrAuditTrail.h Remove trailing whitespace. 2017-10-09 21:20:34 +00:00
GrColor.h Revert "Revert "move GrColor.h to private, IWYU"" 2018-02-06 23:05:46 +00:00
GrGLSL.h Switch atlas clients over to using absolute texture coordinates (take 2) 2017-08-25 15:19:27 +00:00
GrOpList.h Move control of explicit GPU resource allocation to GrContextOptions 2018-02-08 12:36:29 +00:00
GrRenderTargetProxy.h Alter GrSurface/GrSurfaceProxy flags to prepare for GrTexture/GrTextureProxy -specific flags 2018-03-19 12:21:05 +00:00
GrSharedEnums.h sksl enum support 2017-11-13 14:36:40 +00:00
GrSingleOwner.h Reland of Make a single GrSingleOwner in GrContext (patchset #1 id:1 of https://codereview.chromium.org/1565303003/ ) 2016-01-08 10:09:13 -08:00
GrSurfaceProxy.h Add texture-specific flags for External & Rectangle textures 2018-03-21 17:04:18 +00:00
GrSurfaceProxyRef.h Implement GPU/OpList DDLs 2018-02-01 15:00:53 +00:00
GrSwizzle.h Replace SkFAIL with SK_ABORT. 2017-08-16 15:37:54 +00:00
GrTextureProxy.h Alter GrSurface/GrSurfaceProxy flags to prepare for GrTexture/GrTextureProxy -specific flags 2018-03-19 12:21:05 +00:00
GrTypesPriv.h Move GrPixelConfig to GrTypesPriv 2018-03-23 21:05:10 +00:00
SkAtomics.h Clean up some unused atomic routines. 2016-07-27 08:40:45 -07:00
SkBitmaskEnum.h SkPDF: SkPDFFont class changes 2016-08-16 09:36:23 -07:00
SkChecksum.h Use sse4.2 CRC32 instructions to hash when available. 2016-08-08 09:06:28 -07:00
SkDeferredDisplayList.h Remove SK_RASTER_RECORDER_IMPLEMENTATION 2018-03-15 12:55:06 +00:00
SkEncodedInfo.h Reland "Hide SkEncodedInfo" 2017-12-05 19:28:08 +00:00
SkFixed.h add saturate helper for float2int64 2018-01-31 21:21:36 +00:00
SkFloatBits.h clean up useage of SkFloatBits 2017-08-07 02:49:29 +00:00
SkFloatingPoint.h begin to wrap all float divides 2018-02-12 19:04:19 +00:00
SkImageInfoPriv.h Support GL_RGB textures and render targets. 2018-03-22 14:49:44 +00:00
SkLeanWindows.h SkLeanWindows.h: #include "Windows.h" fewer places 2016-06-07 17:21:10 -07:00
SkMalloc.h Add 2 fuzz targets for image decoding (oss-fuzz) 2018-02-12 15:25:59 +00:00
SkMessageBus.h Send TextBlobCache purge messages only to owning cache. 2017-12-14 18:52:49 +00:00
SkMutex.h Teach TSAN directly about semaphore_t. 2017-09-21 17:09:40 +00:00
SkOnce.h tweak SkOnce.h header to work around issues with std::atomic::compare_exchange_strong 2016-12-16 22:21:27 +00:00
SkPathRef.h Fixed warnings for casting large type to smaller one. 2018-03-27 13:28:24 +00:00
SkSafe32.h Fixed warnings for casting large type to smaller one. 2018-03-27 13:28:24 +00:00
SkSafe_math.h Guard against buggy ucrt\math.h. 2016-11-28 15:40:23 +00:00
SkSemaphore.h Fix SkSemaphore comments. 2017-02-22 20:11:54 +00:00
SkShadowFlags.h Remove deprecated drawShadow interfaces 2018-02-28 19:07:29 +00:00
SkSpinlock.h Cache GrColorSpaceXforms 2016-10-20 20:47:33 +00:00
SkTArray.h begin cleanup of malloc porting layer 2018-01-05 21:29:35 +00:00
SkTDArray.h implement SkTDArray with std::vector 2018-04-02 15:38:05 +00:00
SkTemplates.h begin cleanup of malloc porting layer 2018-01-05 21:29:35 +00:00
SkTFitsIn.h Make SkTFitsIn and SkTo constexpr. 2017-10-17 22:48:51 +00:00
SkTHash.h Add mock config to tools and run through gms and benchs without crashing. 2017-07-07 20:47:38 +00:00
SkThreadID.h Unify ThreadID. 2015-09-29 14:38:01 -07:00
SkTLogic.h Compute inverse gamma table at compile time. 2017-10-18 19:43:18 +00:00
SkTSearch.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkWeakRefCnt.h Mark overridden destructors with 'override' and remove 'virtual' 2017-03-22 16:06:18 +00:00