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 <cdu...@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 > <http://trac.webkit.org/changeset/176275> > [2] http://trac.webkit.org/changeset/176293 > <http://trac.webkit.org/changeset/176293> > [3] http://trac.webkit.org/changeset/148891 > <http://trac.webkit.org/changeset/148891> > _______________________________________________ > webkit-dev mailing list > webkit-dev@lists.webkit.org > https://lists.webkit.org/mailman/listinfo/webkit-dev
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev