1// Copyright 2015 the V8 project authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Flags: --allow-natives-syntax --use-osr --turbo-osr 6 7function id(f) { return f; } 8 9function foo(a) { 10 var r = /\0/; 11 for (var i = 0; i < 10; i++) { 12 if (a) %OptimizeOsr(); 13 } 14 return r; 15} 16 17function bar(a) { 18 for (var i = 0; i < 10; i++) { 19 if (a) %OptimizeOsr(); 20 var r = /\0/; 21 } 22 return r; 23} 24 25function baz(a) { 26 for (var i = 0; i < 10; i++) { 27 if (a) %OptimizeOsr(); 28 } 29 return /\0/; 30} 31 32function qux(a) { 33 for (var i = 0; i < 10; i++) { 34 if (i > 5 && a) { 35 %OptimizeOsr(); 36 } else { 37 var r = /\0/; 38 } 39 } 40 return r; 41} 42 43function test(f) { 44 // Test the reference equality of regex's created in OSR'd function. 45 var x = f(false); 46 assertEquals(x, f(true)); 47 assertEquals(x, f(true)); 48 assertEquals(x, f(true)); 49} 50 51test(foo); 52test(bar); 53test(baz); 54test(qux); 55