> On Nov 20, 2014, at 4:51 PM, Maciej Stachowiak <m...@apple.com> wrote:
> 
>> 
>> On Nov 20, 2014, at 9:26 AM, Alexey Proskuryakov <a...@webkit.org 
>> <mailto:a...@webkit.org>> wrote:
>> 
>> 
>> 19 нояб. 2014 г., в 14:58, Alexey Proskuryakov <a...@webkit.org 
>> <mailto:a...@webkit.org>> написал(а):
>> 
>>> These and related uses are all over the place - see also Vectors in 
>>> FormDataBuilder, data returned from FrameLoader::loadResourceSynchronously, 
>>> plug-in code that loads from network, SharedBuffer etc.
>> 
>> Another way to say this is: we need to deal with large data arrays 
>> throughout loading code. We do not really need full size vectors in most 
>> other code - it's sort of OK for HTML parser or for image decoder to fail 
>> catastrophically when there is too much data fed to it.
>> 
>> This is somewhat questionable design, but if we are going to stick to it, 
>> then magnitude checks should be centralized, not sprinkled throughout the 
>> code. We should not make this check explicitly when feeding a network 
>> resource to the parser, for example.
>> 
>> A 64-bit API for Vector solves this nearly flawlessly. We do not perform the 
>> checks manually every time we use a Vector, Vector does them for us.
>> 
>> Other options are:
>> 
>> - uint64_t everywhere. This way, we'll solve practical problems with large 
>> resources once and for all. Also, this may prove to be necessary to solve 
>> even YouTube/Google Drive uploads, I do not know that yet.
>> 
>> - size_t everywhere. Same effect on 64-bit platforms, while 32-bit ones will 
>> still be limited. I like this option, because it won't make us pay the 
>> memory and performance cost on old crippled 32-bit machines, which are 
>> unlikely to be used for manipulating huge volumes of data anyway.
> 
> We probably want YouTube upload of large files to work on 32-bit machines. 
> Though presumably if you want to upload a file larger than the virtual 
> address space, you need to represent it in some way other than a Vector.

Thinking about this more - I think file sizes should probably be an off_t, not 
a size_t, so on 32-bit platforms some care must still be taken in the 
conversion between file sizes and vector sizes.

In general, I like the idea of Vector having a size_t API and a choice of 
smaller or larger internal size. We might also want to change other containers 
with size-related interfaces to match.

Regards,
Maciej


_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to