| Index: test/codegen/corelib/regexp/results-cache_test.dart
 | 
| diff --git a/test/codegen/corelib/regexp/results-cache_test.dart b/test/codegen/corelib/regexp/results-cache_test.dart
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..45226e174cdcc6bba4361a9e3d48fbdb295f0620
 | 
| --- /dev/null
 | 
| +++ b/test/codegen/corelib/regexp/results-cache_test.dart
 | 
| @@ -0,0 +1,83 @@
 | 
| +// Copyright (c) 2014, the Dart project authors. All rights reserved.
 | 
| +// Copyright 2012 the V8 project authors. All rights reserved.
 | 
| +// Redistribution and use in source and binary forms, with or without
 | 
| +// modification, are permitted provided that the following conditions are
 | 
| +// met:
 | 
| +//
 | 
| +//     * Redistributions of source code must retain the above copyright
 | 
| +//       notice, this list of conditions and the following disclaimer.
 | 
| +//     * Redistributions in binary form must reproduce the above
 | 
| +//       copyright notice, this list of conditions and the following
 | 
| +//       disclaimer in the documentation and/or other materials provided
 | 
| +//       with the distribution.
 | 
| +//     * Neither the name of Google Inc. nor the names of its
 | 
| +//       contributors may be used to endorse or promote products derived
 | 
| +//       from this software without specific prior written permission.
 | 
| +//
 | 
| +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | 
| +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | 
| +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | 
| +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | 
| +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | 
| +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 | 
| +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | 
| +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | 
| +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
| +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
| +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
| +
 | 
| +import 'v8_regexp_utils.dart';
 | 
| +import 'package:expect/expect.dart';
 | 
| +
 | 
| +void main() {
 | 
| +  // Long string to trigger caching.
 | 
| +  var string =
 | 
| +  """Friends, Romans, countrymen, lend me your ears!  
 | 
| +  I come to bury Caesar, not to praise him.        
 | 
| +  The evil that men do lives after them,           
 | 
| +  The good is oft interred with their bones;       
 | 
| +  So let it be with Caesar. The noble Brutus       
 | 
| +  Hath told you Caesar was ambitious;              
 | 
| +  If it were so, it was a grievous fault,          
 | 
| +  And grievously hath Caesar answer'd it.          
 | 
| +  Here, under leave of Brutus and the rest-        
 | 
| +  For Brutus is an honorable man;                  
 | 
| +  So are they all, all honorable men-              
 | 
| +  Come I to speak in Caesar's funeral.             
 | 
| +  He was my friend, faithful and just to me;       
 | 
| +  But Brutus says he was ambitious,                
 | 
| +  And Brutus is an honorable man.                  
 | 
| +  He hath brought many captives home to Rome,      
 | 
| +  Whose ransoms did the general coffers fill.      
 | 
| +  Did this in Caesar seem ambitious?               
 | 
| +  When that the poor have cried, Caesar hath wept; 
 | 
| +  Ambition should be made of sterner stuff:        
 | 
| +  Yet Brutus says he was ambitious,                
 | 
| +  And Brutus is an honorable man.                  
 | 
| +  You all did see that on the Lupercal             
 | 
| +  I thrice presented him a kingly crown,           
 | 
| +  Which he did thrice refuse. Was this ambition?   
 | 
| +  Yet Brutus says he was ambitious,                
 | 
| +  And sure he is an honorable man.                 
 | 
| +  I speak not to disprove what Brutus spoke,       
 | 
| +  But here I am to speak what I do know.           
 | 
| +  You all did love him once, not without cause;    
 | 
| +  What cause withholds you then to mourn for him?  
 | 
| +  O judgement, thou art fled to brutish beasts,    
 | 
| +  And men have lost their reason. Bear with me;    
 | 
| +  My heart is in the coffin there with Caesar,     
 | 
| +  And I must pause till it come back to me.""";
 | 
| +
 | 
| +  var replaced = string.replaceAll(new RegExp(r"\b\w+\b"), "foo");
 | 
| +  for (var i = 0; i < 3; i++) {
 | 
| +    assertEquals(replaced,
 | 
| +                string.replaceAll(new RegExp(r"\b\w+\b"), "foo"));
 | 
| +  }
 | 
| +
 | 
| +  // Check that the result is in a COW array.
 | 
| +  var words = string.split(" ");
 | 
| +  assertEquals("Friends,", words[0]);
 | 
| +  words[0] = "Enemies,";
 | 
| +  words = string.split(" ");
 | 
| +  assertEquals("Friends,", words[0]);
 | 
| +}
 | 
| 
 |