Chromium Code Reviews| Index: src/objects.h |
| =================================================================== |
| --- src/objects.h (revision 595) |
| +++ src/objects.h (working copy) |
| @@ -395,29 +395,28 @@ |
| const uint32_t kStringTag = 0x0; |
| const uint32_t kNotStringTag = 0x80; |
| -// If bit 7 is clear, bits 5 and 6 are the string's size (short, medium, or |
| -// long). |
| -const uint32_t kStringSizeMask = 0x60; |
| -const uint32_t kShortStringTag = 0x0; |
| -const uint32_t kMediumStringTag = 0x20; |
| -const uint32_t kLongStringTag = 0x40; |
| +// If bit 7 is clear, bits 5 and 6 are the string's size (short, medium or long). |
|
Mads Ager (chromium)
2008/10/27 09:37:00
This is now bits 4 and 5?
Also, you should add a
|
| +const uint32_t kStringSizeMask = 0x18; |
| +const uint32_t kShortStringTag = 0x18; |
| +const uint32_t kMediumStringTag = 0x10; |
| +const uint32_t kLongStringTag = 0x00; |
| // If bit 7 is clear, bit 4 indicates that the string is a symbol (if set) or |
|
Mads Ager (chromium)
2008/10/27 09:37:00
And this is now bit 5?
|
| // not (if cleared). |
| -const uint32_t kIsSymbolMask = 0x10; |
| +const uint32_t kIsSymbolMask = 0x20; |
| const uint32_t kNotSymbolTag = 0x0; |
| -const uint32_t kSymbolTag = 0x10; |
| +const uint32_t kSymbolTag = 0x20; |
| // If bit 7 is clear, and the string representation is a sequential string, |
| // then bit 3 indicates whether the string consists of two-byte characters or |
| // one-byte characters. |
| -const uint32_t kStringEncodingMask = 0x8; |
| +const uint32_t kStringEncodingMask = 0x4; |
| const uint32_t kTwoByteStringTag = 0x0; |
| -const uint32_t kAsciiStringTag = 0x8; |
| +const uint32_t kAsciiStringTag = 0x4; |
| // If bit 7 is clear, the low-order 3 bits indicate the representation |
|
Mads Ager (chromium)
2008/10/27 09:37:00
3 -> 2 bits.
|
| // of the string. |
| -const uint32_t kStringRepresentationMask = 0x07; |
| +const uint32_t kStringRepresentationMask = 0x03; |
| enum StringRepresentationTag { |
| kSeqStringTag = 0x0, |
| kConsStringTag = 0x1, |
| @@ -3154,8 +3153,8 @@ |
| static const int kSize = kLengthOffset + kIntSize; |
| // Limits on sizes of different types of strings. |
| - static const int kMaxShortStringSize = 255; |
| - static const int kMaxMediumStringSize = 65535; |
| + static const int kMaxShortStringSize = 63; |
| + static const int kMaxMediumStringSize = 16383; |
|
Mads Ager (chromium)
2008/10/27 09:37:00
These reductions in the limits is the only thing t
|
| static const int kMaxArrayIndexSize = 10; |
| @@ -3176,13 +3175,13 @@ |
| // Array index strings this short can keep their index in the hash |
| // field. |
| - static const int kMaxCachedArrayIndexLength = 6; |
| + static const int kMaxCachedArrayIndexLength = 7; |
| // Shift constants for retriving length and hash code from |
| // length/hash field. |
| static const int kHashShift = kNofLengthBitFields; |
| - static const int kShortLengthShift = 3 * kBitsPerByte; |
| - static const int kMediumLengthShift = 2 * kBitsPerByte; |
| + static const int kShortLengthShift = 26; |
|
Mads Ager (chromium)
2008/10/27 09:37:00
Could we write these as kShortStringTag + kReprese
|
| + static const int kMediumLengthShift = 18; |
| static const int kLongLengthShift = kHashShift; |
| // Limit for truncation in short printing. |