| Index: src/objects.h
|
| ===================================================================
|
| --- src/objects.h (revision 1519)
|
| +++ src/objects.h (working copy)
|
| @@ -3139,13 +3139,9 @@
|
| // to be passed by value and is immutable, but be aware that flattening a
|
| // string can potentially alter its shape. Also be aware that a GC caused by
|
| // something else can alter the shape of a string due to ConsString
|
| -// shortcutting.
|
| -//
|
| -// Most of the methods designed to interrogate a string as to its exact nature
|
| -// have been made into methods on StringShape in order to encourage the use of
|
| -// StringShape. The String class has both a length() and a length(StringShape)
|
| -// operation. The former is simpler to type, but the latter is faster if you
|
| -// need the StringShape for some other operation immediately before or after.
|
| +// shortcutting. Keeping these restrictions in mind has proven to be error-
|
| +// prone and so we no longer put StringShapes in variables unless there is a
|
| +// concrete performance benefit at that particular point in the code.
|
| class StringShape BASE_EMBEDDED {
|
| public:
|
| inline explicit StringShape(String* s);
|
| @@ -3194,9 +3190,6 @@
|
| class String: public HeapObject {
|
| public:
|
| // Get and set the length of the string.
|
| - // Fast version.
|
| - inline int length(StringShape shape);
|
| - // Easy version.
|
| inline int length();
|
| inline void set_length(int value);
|
|
|
| @@ -3208,22 +3201,22 @@
|
| inline void set_length_field(uint32_t value);
|
|
|
| // Get and set individual two byte chars in the string.
|
| - inline void Set(StringShape shape, int index, uint16_t value);
|
| + inline void Set(int index, uint16_t value);
|
| // Get individual two byte char in the string. Repeated calls
|
| // to this method are not efficient unless the string is flat.
|
| - inline uint16_t Get(StringShape shape, int index);
|
| + 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.
|
| - Object* TryFlatten(StringShape shape);
|
| + Object* TryFlatten();
|
|
|
| // Try to flatten the string. Checks first inline to see if it is necessary.
|
| // Do not handle allocation failures. After calling TryFlattenIfNotFlat, the
|
| // string could still be a ConsString, in which case a failure is returned.
|
| // Use FlattenString from Handles.cc to be sure to flatten.
|
| - inline Object* TryFlattenIfNotFlat(StringShape shape);
|
| + inline Object* TryFlattenIfNotFlat();
|
|
|
| Vector<const char> ToAsciiVector();
|
| Vector<const uc16> ToUC16Vector();
|
| @@ -3302,7 +3295,7 @@
|
| void StringPrint();
|
| void StringVerify();
|
| #endif
|
| - inline bool IsFlat(StringShape shape);
|
| + inline bool IsFlat();
|
|
|
| // Layout description.
|
| static const int kLengthOffset = HeapObject::kHeaderSize;
|
| @@ -3364,7 +3357,6 @@
|
| // Helper function for flattening strings.
|
| template <typename sinkchar>
|
| static void WriteToFlat(String* source,
|
| - StringShape shape,
|
| sinkchar* sink,
|
| int from,
|
| int to);
|
| @@ -3405,9 +3397,7 @@
|
| private:
|
| // Slow case of String::Equals. This implementation works on any strings
|
| // but it is most efficient on strings that are almost flat.
|
| - bool SlowEquals(StringShape this_shape,
|
| - String* other,
|
| - StringShape other_shape);
|
| + bool SlowEquals(String* other);
|
|
|
| // Slow case of AsArrayIndex.
|
| bool SlowAsArrayIndex(uint32_t* index);
|
| @@ -3454,7 +3444,7 @@
|
| // Garbage collection support. This method is called by the
|
| // garbage collector to compute the actual size of an AsciiString
|
| // instance.
|
| - inline int SeqAsciiStringSize(StringShape shape);
|
| + inline int SeqAsciiStringSize(InstanceType instance_type);
|
|
|
| // Computes the size for an AsciiString instance of a given length.
|
| static int SizeFor(int length) {
|
| @@ -3499,7 +3489,7 @@
|
| // Garbage collection support. This method is called by the
|
| // garbage collector to compute the actual size of a TwoByteString
|
| // instance.
|
| - inline int SeqTwoByteStringSize(StringShape shape);
|
| + inline int SeqTwoByteStringSize(InstanceType instance_type);
|
|
|
| // Computes the size for a TwoByteString instance of a given length.
|
| static int SizeFor(int length) {
|
|
|