Reviewers: Erik Corry,

Message:
Review, please.

Description:
Test a few assertions that should hold.

Please review this at http://codereview.chromium.org/42499

Affected files:
   M src/objects.cc
   M src/regexp-macro-assembler-ia32.cc


Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index  
72fc5e5088bc5446b00517181a5cdbe8ddf26142..9f50d62483324d0b76780df0c6d534d279a87d5b
  
100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -618,6 +618,8 @@ Object* String::TryFlatten() {
        if (StringShape(String::cast(ok)).IsCons()) {
          ss->set_buffer(ConsString::cast(ok)->first());
        }
+      ASSERT(StringShape(this).IsAsciiRepresentation() ==
+          StringShape(ss->buffer()).IsAsciiRepresentation());
        return this;
      }
      case kConsStringTag: {
Index: src/regexp-macro-assembler-ia32.cc
diff --git a/src/regexp-macro-assembler-ia32.cc  
b/src/regexp-macro-assembler-ia32.cc
index  
fa529a572b92de4b87adb865b4a937dc3a6ff0a3..2a7bf3e76b41442fd863405eebcb0bee6e2fb9c9
  
100644
--- a/src/regexp-macro-assembler-ia32.cc
+++ b/src/regexp-macro-assembler-ia32.cc
@@ -972,6 +972,8 @@ RegExpMacroAssemblerIA32::Result  
RegExpMacroAssemblerIA32::Match(
    int start_offset = previous_index;
    int end_offset = subject_ptr->length();

+  bool is_ascii = StringShape(*subject).IsAsciiRepresentation();
+
    if (StringShape(subject_ptr).IsCons()) {
      subject_ptr = ConsString::cast(subject_ptr)->first();
    } else if (StringShape(subject_ptr).IsSliced()) {
@@ -980,9 +982,10 @@ RegExpMacroAssemblerIA32::Result  
RegExpMacroAssemblerIA32::Match(
      end_offset += slice->start();
      subject_ptr = slice->buffer();
    }
-
+  // Ensure that an underlying string has the same ascii-ness.
+  ASSERT(StringShape(subject_ptr).IsAsciiRepresentation() == is_ascii);
+  ASSERT(subject_ptr->IsExternalString() || subject_ptr->IsSeqString());
    // String is now either Sequential or External
-  bool is_ascii = StringShape(*subject).IsAsciiRepresentation();
    int char_size_shift = is_ascii ? 0 : 1;
    int char_length = end_offset - start_offset;




--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to