| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index 362944a71af701125f84525efc237e1bca2f682e..371c4854f6108949035c9af8df91575cba9a08fa 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -3189,6 +3189,8 @@ class HashTableBase : public FixedArray {
|
| 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) {
|
| @@ -3475,6 +3477,9 @@ class Dictionary: public HashTable<Derived, Shape, Key> {
|
| 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).
|
| @@ -8567,6 +8572,10 @@ class Name: public HeapObject {
|
| // 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.
|
| @@ -8574,7 +8583,8 @@ class Name: public HeapObject {
|
| static const int kArrayIndexLengthBits =
|
| kBitsPerInt - kArrayIndexValueBits - kNofHashBitFields;
|
|
|
| - STATIC_ASSERT((kArrayIndexLengthBits > 0));
|
| + STATIC_ASSERT(kArrayIndexLengthBits > 0);
|
| + STATIC_ASSERT(kMaxArrayIndexSize < (1 << kArrayIndexLengthBits));
|
|
|
| class ArrayIndexValueBits : public BitField<unsigned int, kNofHashBitFields,
|
| kArrayIndexValueBits> {}; // NOLINT
|
| @@ -8664,34 +8674,6 @@ 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:
|
| explicit inline SubStringRange(String* string, int first = 0,
|
| @@ -8903,11 +8885,6 @@ class String: public Name {
|
| 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;
|
| static const uint32_t kMaxOneByteCharCodeU = unibrow::Latin1::kMaxChar;
|
|
|