Index: src/objects.h |
=================================================================== |
--- src/objects.h (revision 3257) |
+++ src/objects.h (working copy) |
@@ -78,7 +78,6 @@ |
// - SeqAsciiString |
// - SeqTwoByteString |
// - ConsString |
-// - SlicedString |
// - ExternalString |
// - ExternalAsciiString |
// - ExternalTwoByteString |
@@ -210,7 +209,7 @@ |
// considered TWO_BYTE. It is not mentioned in the name. ASCII encoding is |
// mentioned explicitly in the name. Likewise, the default representation is |
// considered sequential. It is not mentioned in the name. The other |
-// representations (eg, CONS, SLICED, EXTERNAL) are explicitly mentioned. |
+// representations (eg, CONS, EXTERNAL) are explicitly mentioned. |
// Finally, the string is either a SYMBOL_TYPE (if it is a symbol) or a |
// STRING_TYPE (if it is not a symbol). |
// |
@@ -235,12 +234,6 @@ |
V(SHORT_CONS_ASCII_SYMBOL_TYPE) \ |
V(MEDIUM_CONS_ASCII_SYMBOL_TYPE) \ |
V(LONG_CONS_ASCII_SYMBOL_TYPE) \ |
- V(SHORT_SLICED_SYMBOL_TYPE) \ |
- V(MEDIUM_SLICED_SYMBOL_TYPE) \ |
- V(LONG_SLICED_SYMBOL_TYPE) \ |
- V(SHORT_SLICED_ASCII_SYMBOL_TYPE) \ |
- V(MEDIUM_SLICED_ASCII_SYMBOL_TYPE) \ |
- V(LONG_SLICED_ASCII_SYMBOL_TYPE) \ |
V(SHORT_EXTERNAL_SYMBOL_TYPE) \ |
V(MEDIUM_EXTERNAL_SYMBOL_TYPE) \ |
V(LONG_EXTERNAL_SYMBOL_TYPE) \ |
@@ -259,12 +252,6 @@ |
V(SHORT_CONS_ASCII_STRING_TYPE) \ |
V(MEDIUM_CONS_ASCII_STRING_TYPE) \ |
V(LONG_CONS_ASCII_STRING_TYPE) \ |
- V(SHORT_SLICED_STRING_TYPE) \ |
- V(MEDIUM_SLICED_STRING_TYPE) \ |
- V(LONG_SLICED_STRING_TYPE) \ |
- V(SHORT_SLICED_ASCII_STRING_TYPE) \ |
- V(MEDIUM_SLICED_ASCII_STRING_TYPE) \ |
- V(LONG_SLICED_ASCII_STRING_TYPE) \ |
V(SHORT_EXTERNAL_STRING_TYPE) \ |
V(MEDIUM_EXTERNAL_STRING_TYPE) \ |
V(LONG_EXTERNAL_STRING_TYPE) \ |
@@ -380,30 +367,6 @@ |
ConsString::kSize, \ |
long_cons_ascii_symbol, \ |
LongConsAsciiSymbol) \ |
- V(SHORT_SLICED_SYMBOL_TYPE, \ |
- SlicedString::kSize, \ |
- short_sliced_symbol, \ |
- ShortSlicedSymbol) \ |
- V(MEDIUM_SLICED_SYMBOL_TYPE, \ |
- SlicedString::kSize, \ |
- medium_sliced_symbol, \ |
- MediumSlicedSymbol) \ |
- V(LONG_SLICED_SYMBOL_TYPE, \ |
- SlicedString::kSize, \ |
- long_sliced_symbol, \ |
- LongSlicedSymbol) \ |
- V(SHORT_SLICED_ASCII_SYMBOL_TYPE, \ |
- SlicedString::kSize, \ |
- short_sliced_ascii_symbol, \ |
- ShortSlicedAsciiSymbol) \ |
- V(MEDIUM_SLICED_ASCII_SYMBOL_TYPE, \ |
- SlicedString::kSize, \ |
- medium_sliced_ascii_symbol, \ |
- MediumSlicedAsciiSymbol) \ |
- V(LONG_SLICED_ASCII_SYMBOL_TYPE, \ |
- SlicedString::kSize, \ |
- long_sliced_ascii_symbol, \ |
- LongSlicedAsciiSymbol) \ |
V(SHORT_EXTERNAL_SYMBOL_TYPE, \ |
ExternalTwoByteString::kSize, \ |
short_external_symbol, \ |
@@ -476,30 +439,6 @@ |
ConsString::kSize, \ |
long_cons_ascii_string, \ |
LongConsAsciiString) \ |
- V(SHORT_SLICED_STRING_TYPE, \ |
- SlicedString::kSize, \ |
- short_sliced_string, \ |
- ShortSlicedString) \ |
- V(MEDIUM_SLICED_STRING_TYPE, \ |
- SlicedString::kSize, \ |
- medium_sliced_string, \ |
- MediumSlicedString) \ |
- V(LONG_SLICED_STRING_TYPE, \ |
- SlicedString::kSize, \ |
- long_sliced_string, \ |
- LongSlicedString) \ |
- V(SHORT_SLICED_ASCII_STRING_TYPE, \ |
- SlicedString::kSize, \ |
- short_sliced_ascii_string, \ |
- ShortSlicedAsciiString) \ |
- V(MEDIUM_SLICED_ASCII_STRING_TYPE, \ |
- SlicedString::kSize, \ |
- medium_sliced_ascii_string, \ |
- MediumSlicedAsciiString) \ |
- V(LONG_SLICED_ASCII_STRING_TYPE, \ |
- SlicedString::kSize, \ |
- long_sliced_ascii_string, \ |
- LongSlicedAsciiString) \ |
V(SHORT_EXTERNAL_STRING_TYPE, \ |
ExternalTwoByteString::kSize, \ |
short_external_string, \ |
@@ -591,7 +530,6 @@ |
enum StringRepresentationTag { |
kSeqStringTag = 0x0, |
kConsStringTag = 0x1, |
- kSlicedStringTag = 0x2, |
kExternalStringTag = 0x3 |
}; |
@@ -627,15 +565,6 @@ |
kMediumStringTag | kAsciiStringTag | kSymbolTag | kConsStringTag, |
LONG_CONS_ASCII_SYMBOL_TYPE = |
kLongStringTag | kAsciiStringTag | kSymbolTag | kConsStringTag, |
- SHORT_SLICED_SYMBOL_TYPE = kShortStringTag | kSymbolTag | kSlicedStringTag, |
- MEDIUM_SLICED_SYMBOL_TYPE = kMediumStringTag | kSymbolTag | kSlicedStringTag, |
- LONG_SLICED_SYMBOL_TYPE = kLongStringTag | kSymbolTag | kSlicedStringTag, |
- SHORT_SLICED_ASCII_SYMBOL_TYPE = |
- kShortStringTag | kAsciiStringTag | kSymbolTag | kSlicedStringTag, |
- MEDIUM_SLICED_ASCII_SYMBOL_TYPE = |
- kMediumStringTag | kAsciiStringTag | kSymbolTag | kSlicedStringTag, |
- LONG_SLICED_ASCII_SYMBOL_TYPE = |
- kLongStringTag | kAsciiStringTag | kSymbolTag | kSlicedStringTag, |
SHORT_EXTERNAL_SYMBOL_TYPE = |
kShortStringTag | kSymbolTag | kExternalStringTag, |
MEDIUM_EXTERNAL_SYMBOL_TYPE = |
@@ -662,15 +591,6 @@ |
kMediumStringTag | kAsciiStringTag | kConsStringTag, |
LONG_CONS_ASCII_STRING_TYPE = |
kLongStringTag | kAsciiStringTag | kConsStringTag, |
- SHORT_SLICED_STRING_TYPE = kShortStringTag | kSlicedStringTag, |
- MEDIUM_SLICED_STRING_TYPE = kMediumStringTag | kSlicedStringTag, |
- LONG_SLICED_STRING_TYPE = kLongStringTag | kSlicedStringTag, |
- SHORT_SLICED_ASCII_STRING_TYPE = |
- kShortStringTag | kAsciiStringTag | kSlicedStringTag, |
- MEDIUM_SLICED_ASCII_STRING_TYPE = |
- kMediumStringTag | kAsciiStringTag | kSlicedStringTag, |
- LONG_SLICED_ASCII_STRING_TYPE = |
- kLongStringTag | kAsciiStringTag | kSlicedStringTag, |
SHORT_EXTERNAL_STRING_TYPE = kShortStringTag | kExternalStringTag, |
MEDIUM_EXTERNAL_STRING_TYPE = kMediumStringTag | kExternalStringTag, |
LONG_EXTERNAL_STRING_TYPE = kLongStringTag | kExternalStringTag, |
@@ -792,7 +712,6 @@ |
inline bool IsSymbol(); |
// See objects-inl.h for more details |
inline bool IsSeqString(); |
- inline bool IsSlicedString(); |
inline bool IsExternalString(); |
inline bool IsExternalTwoByteString(); |
inline bool IsExternalAsciiString(); |
@@ -3920,7 +3839,6 @@ |
inline bool IsSequential(); |
inline bool IsExternal(); |
inline bool IsCons(); |
- inline bool IsSliced(); |
inline bool IsExternalAscii(); |
inline bool IsExternalTwoByte(); |
inline bool IsSequentialAscii(); |
@@ -3978,9 +3896,8 @@ |
inline uint16_t Get(int index); |
// Try to flatten the top level ConsString that is hiding behind this |
- // string. This is a no-op unless the string is a ConsString or a |
- // SlicedString. Flatten mutates the ConsString and might return a |
- // failure. |
+ // string. This is a no-op unless the string is a ConsString. Flatten |
+ // mutates the ConsString and might return a failure. |
Object* TryFlatten(); |
// Try to flatten the string. Checks first inline to see if it is necessary. |
@@ -3996,8 +3913,8 @@ |
// ascii and two byte string types. |
bool MarkAsUndetectable(); |
- // Slice the string and return a substring. |
- Object* Slice(int from, int to); |
+ // Return a substring. |
+ Object* SubString(int from, int to); |
// String equality operations. |
inline bool Equals(String* other); |
@@ -4082,7 +3999,7 @@ |
static const unsigned kMaxAsciiCharCodeU = unibrow::Utf8::kMaxOneByteChar; |
static const int kMaxUC16CharCode = 0xffff; |
- // Minimum length for a cons or sliced string. |
+ // Minimum length for a cons string. |
static const int kMinNonFlatLength = 13; |
// Mask constant for checking if a string has a computed hash code |
@@ -4155,12 +4072,6 @@ |
unsigned remaining; |
}; |
- // NOTE: If you call StringInputBuffer routines on strings that are |
- // too deeply nested trees of cons and slice strings, then this |
- // routine will overflow the stack. Strings that are merely deeply |
- // nested trees of cons strings do not have a problem apart from |
- // performance. |
- |
static inline const unibrow::byte* ReadBlock(String* input, |
ReadBlockBuffer* buffer, |
unsigned* offset, |
@@ -4345,56 +4256,6 @@ |
}; |
-// The SlicedString class describes string values that are slices of |
-// some other string. SlicedStrings consist of a reference to an |
-// underlying heap-allocated string value, a start index, and the |
-// length field common to all strings. |
-class SlicedString: public String { |
- public: |
- // The underlying string buffer. |
- inline String* buffer(); |
- inline void set_buffer(String* buffer); |
- |
- // The start index of the slice. |
- inline int start(); |
- inline void set_start(int start); |
- |
- // Dispatched behavior. |
- uint16_t SlicedStringGet(int index); |
- |
- // Casting. |
- static inline SlicedString* cast(Object* obj); |
- |
- // Garbage collection support. |
- void SlicedStringIterateBody(ObjectVisitor* v); |
- |
- // Layout description |
-#if V8_HOST_ARCH_64_BIT |
- // Optimizations expect buffer to be located at same offset as a ConsString's |
- // first substring. In 64 bit mode we have room for the start offset before |
- // the buffer. |
- static const int kStartOffset = String::kSize; |
- static const int kBufferOffset = kStartOffset + kIntSize; |
- static const int kSize = kBufferOffset + kPointerSize; |
-#else |
- static const int kBufferOffset = String::kSize; |
- static const int kStartOffset = kBufferOffset + kPointerSize; |
- static const int kSize = kStartOffset + kIntSize; |
-#endif |
- |
- // Support for StringInputBuffer. |
- inline const unibrow::byte* SlicedStringReadBlock(ReadBlockBuffer* buffer, |
- unsigned* offset_ptr, |
- unsigned chars); |
- inline void SlicedStringReadBlockIntoBuffer(ReadBlockBuffer* buffer, |
- unsigned* offset_ptr, |
- unsigned chars); |
- |
- private: |
- DISALLOW_IMPLICIT_CONSTRUCTORS(SlicedString); |
-}; |
- |
- |
// The ExternalString class describes string values that are backed by |
// a string resource that lies outside the V8 heap. ExternalStrings |
// consist of the length field common to all strings, a pointer to the |