[webkit-dev] size_t vs unsigned in WTF::Vector API ?

Antti Koivisto koivisto at iki.fi
Wed Nov 19 13:28:42 PST 2014


I agree with Phil, we should just use unsigned consistently. For very large
memory allocations Vector is probably not the right type to use.


  antti

On Wed, Nov 19, 2014 at 10:32 PM, Filip Pizlo <fpizlo at apple.com> wrote:

> Whatever we do, the clients of Vector should be consistent about what type
> they use.  I'm actually fine with Vector internally using unsigned even if
> the API uses size_t, but right now we have lots of code that uses a mix of
> size_t and unsigned when indexing into Vectors.  That's confusing.
>
> If I picked one type to use for all Vector indices, it would be unsigned
> rather than size_t.  Vector being limited to unsigned doesn't imply 4GB
> unless you do Vector<char>.  Usually we have Vectors of pointer-width
> things, which means 32GB on 64-bit systems (UINT_MAX * sizeof(void*)).
> Even in a world where we had more than 32GB of memory to use within a
> single web process, I would hope that we wouldn't use it all on a single
> Vector and that if we did, we would treat that one specially for a bunch of
> other sensible reasons (among them being that allocating a contiguous slab
> of virtual memory of that size is rather taxing).  So, size_t would buy us
> almost nothing since if we had a vector grow large enough to need it, we
> would be having a bad time already.
>
> I wonder: are there cases that anyone remembers where we have tried to use
> Vector to store more than UINT_MAX things?  Another interesting question
> is: What's the largest number of things that we store into any Vector?  We
> could use such a metric to project how big Vectors might get in the future.
>
> -Filip
>
>
> On Nov 19, 2014, at 12:20 PM, Chris Dumez <cdumez at apple.com> wrote:
>
> Hi all,
>
> I recently started updating the WTF::Vector API to use unsigned types
> instead of size_t [1][2], because:
> - WTF::Vector is already using unsigned type for size/capacity internally
> to save memory on 64-bit, causing a mismatch between the API and the
> internal representation [3]
> - Some reviewers have asked me to use unsigned for loop counters iterating
> over vectors (which looks unsafe as the Vector API, e.g. size(), returns a
> size_t).
> - I heard from Joseph that this type mismatch is forcing us (and other
> projects using WTF) to disable some build time warnings
> - The few people I talked to before making that change said we should do it
>
> However, Alexey recently raised concerns about this change. it doesn't
> "strike him as the right direction. 4Gb is not much, and we should have
> more of WebKit work with the right data types, not less.”.
> I did not initially realize that this change was controversial, but now
> that it seems it is, I thought I would raise the question on webkit-dev to
> see what people think about this.
>
> Kr,
> --
> Chris Dumez - Apple Inc.
> Cupertino, CA
>
>
> [1] http://trac.webkit.org/changeset/176275
> [2] http://trac.webkit.org/changeset/176293
> [3] http://trac.webkit.org/changeset/148891
>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev
>
>
>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-dev/attachments/20141119/cd97fb64/attachment.html>


More information about the webkit-dev mailing list