Reviewers: Mads Ager, Christian Plesner Hansen, erik.cory_gmail.com,  
iposva, Vitaly,

Description:
Do not flatten the string, but just write it out.

In DOM bindings in many cases the string would be externalized  
immediately.  For
other cases
I am going to add explicit flattening.  Overall, it looks like if user  
wants to
flat string
before writing, it should be an explicit method invocation (going to add
TryFlattenIfNotFlat
into public V8 API).


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

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
   M     src/api.cc


Index: src/api.cc
===================================================================
--- src/api.cc  (revision 2982)
+++ src/api.cc  (working copy)
@@ -2446,20 +2446,14 @@
    ENTER_V8;
    ASSERT(start >= 0 && length >= -1);
    i::Handle<i::String> str = Utils::OpenHandle(this);
-  // Flatten the string for efficiency.  This applies whether we are
-  // using StringInputBuffer or Get(i) to access the characters.
-  str->TryFlattenIfNotFlat();
    int end = length;
    if ( (length == -1) || (length > str->length() - start) )
      end = str->length() - start;
    if (end < 0) return 0;
-  write_input_buffer.Reset(start, *str);
-  int i;
-  for (i = 0; i < end; i++)
-    buffer[i] = write_input_buffer.GetNext();
-  if (length == -1 || i < length)
-    buffer[i] = '\0';
-  return i;
+  i::String::WriteToFlat(*str, buffer, start, end);
+  if (end < length)
+    buffer[end] = '\0';
+  return end;
  }





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

Reply via email to