| Index: src/handles.cc | 
| =================================================================== | 
| --- src/handles.cc	(revision 654) | 
| +++ src/handles.cc	(working copy) | 
| @@ -117,9 +117,10 @@ | 
|  | 
|  | 
| void FlattenString(Handle<String> string) { | 
| -  if (string->IsFlat()) return; | 
| -  CALL_HEAP_FUNCTION_VOID(string->Flatten()); | 
| -  ASSERT(string->IsFlat()); | 
| +  StringShape shape(*string); | 
| +  if (string->IsFlat(shape)) return; | 
| +  CALL_HEAP_FUNCTION_VOID(string->Flatten(shape)); | 
| +  ASSERT(string->IsFlat(StringShape(*string))); | 
| } | 
|  | 
|  | 
| @@ -216,7 +217,8 @@ | 
|  | 
|  | 
| Handle<String> SubString(Handle<String> str, int start, int end) { | 
| -  CALL_HEAP_FUNCTION(str->Slice(start, end), String); | 
| +  StringShape shape(*str); | 
| +  CALL_HEAP_FUNCTION(str->Slice(shape, start, end), String); | 
| } | 
|  | 
|  | 
|  |