[webkit-dev] Proposal about integer types used in WebKit
Maciej Stachowiak
mjs at apple.com
Fri Jul 24 23:58:04 PDT 2009
On Jul 24, 2009, at 4:18 PM, Geoffrey Garen wrote:
>> In JavaScriptCore, some structures have integer members that must be
>> 32bits in size, regardless of processor type. In those places,
>> int32_t
>> and uint32_t are useful.
>>
>> Less clear to me is whether clients of such structures should also
>> use
>> int32_t / uint32_t. For example:
>>
>> struct {
>> int32_t i;
>> } s;
>>
>> int32_t i32 = s.i; // option 1
>> int i = s.i; // option 2
>>
>> Technically, option 2, which converts from int32_t to int, requires a
>> "32bit move with sign extension to 64bit" instead of just a "32bit
>> move", but Intel's documentation says that 32bit to 64bit sign
>> extension is the very fastest instruction on the processor, so maybe
>> it doesn't matter.
>
> As Darin pointed out privately, this observation was wrong. Since
> "int" still means "32bit" on LP64 platforms, you could just use int.
>
> So, I guess the question is, if you have a quantity that must be 32
> bits, is it useful or harmful to specify by using int32_t instead of
> int?
Even though they are really the same type, I find it helpful to
clarify when it's really important to have exactly 32 bits. Similarly,
I like int16_t over short, and particularly uint8_t over unsigned char
for the byte unit of binary data. If anything, I'd prefer to see us
use C standard explicitly sized types throughout, over plain C types.
A related point: for integer types that should change with the
architecture, I prefer using clear typedefs like size_t or ptrdiff_t
instead of "long" or "unsigned long".
Regards,
Maciej
More information about the webkit-dev
mailing list