Index: test/mjsunit/string-slices.js |
diff --git a/test/mjsunit/string-slices.js b/test/mjsunit/string-slices.js |
index 7c40229c75def951ac4379af31bf2754ae0bd5c3..0d205cc182d1ea396f530f2662cc7924c8198600 100755 |
--- a/test/mjsunit/string-slices.js |
+++ b/test/mjsunit/string-slices.js |
@@ -25,7 +25,7 @@ |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// Flags: --string-slices --expose-externalize-string |
+// Flags: --string-slices --expose-externalize-string --allow-natives-syntax |
Lasse Reichstein
2011/11/09 12:48:11
If string-slices is on by default now, we should r
|
var s = 'abcdefghijklmn'; |
assertEquals(s, s.substr()); |
@@ -100,14 +100,7 @@ for (var i = 5; i < 25; i++) { |
// Keep creating strings to to force allocation failure on substring creation. |
var x = "0123456789ABCDEF"; |
-x += x; // 2^5 |
-x += x; |
-x += x; |
-x += x; |
-x += x; |
-x += x; // 2^10 |
-x += x; |
-x += x; |
+for (var i = 0; i < 8; i++) x += x; |
var xl = x.length; |
var cache = []; |
for (var i = 0; i < 1000; i++) { |
@@ -119,14 +112,7 @@ for (var i = 0; i < 1000; i++) { |
// Same with two-byte strings |
var x = "\u2028123456789ABCDEF"; |
-x += x; // 2^5 |
-x += x; |
-x += x; |
-x += x; |
-x += x; |
-x += x; // 2^10 |
-x += x; |
-x += x; |
+for (var i = 0; i < 8; i++) x += x; |
var xl = x.length; |
var cache = []; |
for (var i = 0; i < 1000; i++) { |
@@ -202,3 +188,21 @@ assertEquals(a.slice(1,-1), b); |
assertTrue(/3456789qwe/.test(a)); |
assertEquals(5, a.indexOf("678")); |
assertEquals("12345", a.split("6")[0]); |
+ |
+// Create a slice with an external string as parent string. |
+var c = a.slice(1,-1); |
+ |
+function test_crankshaft() { |
+ for (var i = 0; i < 20; i++) { |
+ assertEquals(b.charAt(i), a.charAt(i + 1)); |
+ assertEquals(b.charAt(i), c.charAt(i)); |
+ assertEquals(b.charAt(4), c.charAt(4)); |
+ assertTrue(/3456789qwe/.test(c)); |
+ assertEquals(4, c.indexOf("678")); |
+ assertEquals("2345", c.split("6")[0]); |
+ } |
+} |
+ |
+test_crankshaft(); |
+%OptimizeFunctionOnNextCall(test_crankshaft); |
+test_crankshaft(); |