| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index 8ff688e507182da9a376467103b2145fce2d8846..631615a50d72333387e15b60f2cd6ed013c52d17 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -3189,8 +3189,6 @@
|
| template <typename Derived, typename Shape, typename Key>
|
| class HashTable : public HashTableBase {
|
| public:
|
| - typedef Shape ShapeT;
|
| -
|
| // Wrapper methods
|
| inline uint32_t Hash(Key key) {
|
| if (Shape::UsesSeed) {
|
| @@ -3477,9 +3475,6 @@
|
| static Handle<Derived> EnsureCapacity(Handle<Derived> obj, int n, Key key);
|
|
|
| #ifdef OBJECT_PRINT
|
| - // For our gdb macros, we should perhaps change these in the future.
|
| - void Print();
|
| -
|
| void Print(std::ostream& os); // NOLINT
|
| #endif
|
| // Returns the key (slow).
|
| @@ -8575,10 +8570,6 @@
|
| // Array index strings this short can keep their index in the hash field.
|
| static const int kMaxCachedArrayIndexLength = 7;
|
|
|
| - // Maximum number of characters to consider when trying to convert a string
|
| - // value into an array index.
|
| - static const int kMaxArrayIndexSize = 10;
|
| -
|
| // For strings which are array indexes the hash value has the string length
|
| // mixed into the hash, mainly to avoid a hash value of zero which would be
|
| // the case for the string '0'. 24 bits are used for the array index value.
|
| @@ -8586,8 +8577,7 @@
|
| static const int kArrayIndexLengthBits =
|
| kBitsPerInt - kArrayIndexValueBits - kNofHashBitFields;
|
|
|
| - STATIC_ASSERT(kArrayIndexLengthBits > 0);
|
| - STATIC_ASSERT(kMaxArrayIndexSize < (1 << kArrayIndexLengthBits));
|
| + STATIC_ASSERT((kArrayIndexLengthBits > 0));
|
|
|
| class ArrayIndexValueBits : public BitField<unsigned int, kNofHashBitFields,
|
| kArrayIndexValueBits> {}; // NOLINT
|
| @@ -8676,6 +8666,34 @@
|
| class String: public Name {
|
| public:
|
| enum Encoding { ONE_BYTE_ENCODING, TWO_BYTE_ENCODING };
|
| +
|
| + // Array index strings this short can keep their index in the hash field.
|
| + static const int kMaxCachedArrayIndexLength = 7;
|
| +
|
| + // For strings which are array indexes the hash value has the string length
|
| + // mixed into the hash, mainly to avoid a hash value of zero which would be
|
| + // the case for the string '0'. 24 bits are used for the array index value.
|
| + static const int kArrayIndexValueBits = 24;
|
| + static const int kArrayIndexLengthBits =
|
| + kBitsPerInt - kArrayIndexValueBits - kNofHashBitFields;
|
| +
|
| + STATIC_ASSERT((kArrayIndexLengthBits > 0));
|
| +
|
| + class ArrayIndexValueBits : public BitField<unsigned int, kNofHashBitFields,
|
| + kArrayIndexValueBits> {}; // NOLINT
|
| + class ArrayIndexLengthBits : public BitField<unsigned int,
|
| + kNofHashBitFields + kArrayIndexValueBits,
|
| + kArrayIndexLengthBits> {}; // NOLINT
|
| +
|
| + // Check that kMaxCachedArrayIndexLength + 1 is a power of two so we
|
| + // could use a mask to test if the length of string is less than or equal to
|
| + // kMaxCachedArrayIndexLength.
|
| + STATIC_ASSERT(IS_POWER_OF_TWO(kMaxCachedArrayIndexLength + 1));
|
| +
|
| + static const unsigned int kContainsCachedArrayIndexMask =
|
| + (~static_cast<unsigned>(kMaxCachedArrayIndexLength)
|
| + << ArrayIndexLengthBits::kShift) |
|
| + kIsNotArrayIndexMask;
|
|
|
| class SubStringRange {
|
| public:
|
| @@ -8887,6 +8905,11 @@
|
| // Layout description.
|
| static const int kLengthOffset = Name::kSize;
|
| static const int kSize = kLengthOffset + kPointerSize;
|
| +
|
| + // Maximum number of characters to consider when trying to convert a string
|
| + // value into an array index.
|
| + static const int kMaxArrayIndexSize = 10;
|
| + STATIC_ASSERT(kMaxArrayIndexSize < (1 << kArrayIndexLengthBits));
|
|
|
| // Max char codes.
|
| static const int32_t kMaxOneByteCharCode = unibrow::Latin1::kMaxChar;
|
|
|