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 -~----------~----~----~----~------~----~------~--~---
