[webkit-dev] Compile error in WebGL2RenderingContext.cpp

Darin Adler darin at apple.com
Thu Jan 17 09:12:54 PST 2019


Vector’s inline capacity feature was originally created as an alternative to variable length arrays for most of the purposes people would want to put them.

Imagine, for example, that you need a variable length buffer of characters that is almost always going to be less then 32 bytes. You write this:

     Vector<char, 32> buffer;

You can then grow the buffer to whatever size you need. If it’s less than 32 bytes then it uses space on the stack, and if more than 32 bytes it uses space on the heap.

The reason this is better than variable length arrays is that stack size often has a inflexible total limit, so it’s not OK in general to use an arbitrary amount of stack. The vector inline capacity allows us to easily use up to a fixed amount of stack, but then still correctly handle unusually large requests by spilling go the heap.

For that WebGL2 code the idiom would be something like this:

    Vector<GC3Dint, 8> parameters;
    parameters.grow(numValues);

Not sure we have good Vector inline capacity documentation, but that’s a basic primer.

— Darin


More information about the webkit-dev mailing list