| Index: src/jsregexp.cc
|
| ===================================================================
|
| --- src/jsregexp.cc (revision 1519)
|
| +++ src/jsregexp.cc (working copy)
|
| @@ -55,27 +55,6 @@
|
| namespace v8 { namespace internal {
|
|
|
|
|
| -String* RegExpImpl::last_ascii_string_ = NULL;
|
| -String* RegExpImpl::two_byte_cached_string_ = NULL;
|
| -
|
| -
|
| -void RegExpImpl::NewSpaceCollectionPrologue() {
|
| - // The two byte string is always in the old space. The Ascii string may be
|
| - // in either place. If it is in the old space we don't need to do anything.
|
| - if (Heap::InNewSpace(last_ascii_string_)) {
|
| - // Invalidate the cache.
|
| - last_ascii_string_ = NULL;
|
| - two_byte_cached_string_ = NULL;
|
| - }
|
| -}
|
| -
|
| -
|
| -void RegExpImpl::OldSpaceCollectionPrologue() {
|
| - last_ascii_string_ = NULL;
|
| - two_byte_cached_string_ = NULL;
|
| -}
|
| -
|
| -
|
| Handle<Object> RegExpImpl::CreateRegExpLiteral(Handle<JSFunction> constructor,
|
| Handle<String> pattern,
|
| Handle<String> flags,
|
| @@ -92,55 +71,10 @@
|
| }
|
|
|
|
|
| -// Converts a source string to a 16 bit flat string or a SlicedString containing
|
| -// a 16 bit flat string).
|
| -Handle<String> RegExpImpl::CachedStringToTwoByte(Handle<String> subject) {
|
| - if (*subject == last_ascii_string_) {
|
| - ASSERT(two_byte_cached_string_ != NULL);
|
| - return Handle<String>(String::cast(two_byte_cached_string_));
|
| - }
|
| - Handle<String> two_byte_string = StringToTwoByte(subject);
|
| - last_ascii_string_ = *subject;
|
| - two_byte_cached_string_ = *two_byte_string;
|
| - return two_byte_string;
|
| -}
|
| -
|
| -
|
| -// Converts a source string to a 16 bit flat string or a SlicedString containing
|
| -// a 16 bit flat string).
|
| -Handle<String> RegExpImpl::StringToTwoByte(Handle<String> pattern) {
|
| - StringShape shape(*pattern);
|
| - if (!pattern->IsFlat(shape)) {
|
| - FlattenString(pattern);
|
| - shape = StringShape(*pattern);
|
| - }
|
| - Handle<String> flat_string(shape.IsCons() ?
|
| - String::cast(ConsString::cast(*pattern)->first()) :
|
| - *pattern);
|
| - ASSERT(flat_string->IsString());
|
| - StringShape flat_shape(*flat_string);
|
| - ASSERT(!flat_shape.IsCons());
|
| - ASSERT(flat_shape.IsSequential() ||
|
| - flat_shape.IsSliced() ||
|
| - flat_shape.IsExternal());
|
| - if (!flat_shape.IsAsciiRepresentation()) {
|
| - return flat_string;
|
| - }
|
| -
|
| - int len = flat_string->length(flat_shape);
|
| - Handle<String> two_byte_string =
|
| - Factory::NewRawTwoByteString(len, TENURED);
|
| - uc16* dest = SeqTwoByteString::cast(*two_byte_string)->GetChars();
|
| - String::WriteToFlat(*flat_string, flat_shape, dest, 0, len);
|
| - return two_byte_string;
|
| -}
|
| -
|
| -
|
| static JSRegExp::Flags RegExpFlagsFromString(Handle<String> str) {
|
| int flags = JSRegExp::NONE;
|
| - StringShape shape(*str);
|
| - for (int i = 0; i < str->length(shape); i++) {
|
| - switch (str->Get(shape, i)) {
|
| + for (int i = 0; i < str->length(); i++) {
|
| + switch (str->Get(i)) {
|
| case 'i':
|
| flags |= JSRegExp::IGNORE_CASE;
|
| break;
|
| @@ -421,7 +355,7 @@
|
| JSRegExp::Flags flags = re->GetFlags();
|
|
|
| Handle<String> pattern(re->Pattern());
|
| - if (!pattern->IsFlat(StringShape(*pattern))) {
|
| + if (!pattern->IsFlat()) {
|
| FlattenString(pattern);
|
| }
|
|
|
| @@ -552,7 +486,7 @@
|
| }
|
| #endif
|
|
|
| - if (!subject->IsFlat(StringShape(*subject))) {
|
| + if (!subject->IsFlat()) {
|
| FlattenString(subject);
|
| }
|
|
|
| @@ -590,7 +524,7 @@
|
| int result_length = 0;
|
| Handle<Object> matches;
|
|
|
| - if (!subject->IsFlat(StringShape(*subject))) {
|
| + if (!subject->IsFlat()) {
|
| FlattenString(subject);
|
| }
|
|
|
| @@ -659,9 +593,8 @@
|
| int previous_index,
|
| int* offsets_vector,
|
| int offsets_vector_length) {
|
| - StringShape shape(*subject);
|
| - ASSERT(subject->IsFlat(shape));
|
| - bool is_ascii = shape.IsAsciiRepresentation();
|
| + ASSERT(subject->IsFlat());
|
| + bool is_ascii = StringShape(*subject).IsAsciiRepresentation();
|
| bool rc;
|
|
|
| Handle<String> original_subject = subject;
|
|
|