| Index: test/mjsunit/regexp-not-sticky-yet.js | 
| diff --git a/test/mjsunit/regress/regress-392114.js b/test/mjsunit/regexp-not-sticky-yet.js | 
| similarity index 54% | 
| copy from test/mjsunit/regress/regress-392114.js | 
| copy to test/mjsunit/regexp-not-sticky-yet.js | 
| index e5cf1cde372f13c72262855b35f4a00390d3b057..4186a63fefbe5fd95f7a9cb3e5157939c2a04d3e 100644 | 
| --- a/test/mjsunit/regress/regress-392114.js | 
| +++ b/test/mjsunit/regexp-not-sticky-yet.js | 
| @@ -25,42 +25,41 @@ | 
| // (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: --expose-debug-as debug --allow-natives-syntax | 
| +// Test that sticky regexp support is not affecting V8 when the | 
| +// --harmony-regexps flag is not on. | 
|  | 
| -Debug = debug.Debug; | 
| +assertThrows(function() { eval("/foo.bar/y"); }, SyntaxError); | 
| +assertThrows(function() { eval("/foobar/y"); }, SyntaxError); | 
| +assertThrows(function() { eval("/foo.bar/gy"); }, SyntaxError); | 
| +assertThrows(function() { eval("/foobar/gy"); }, SyntaxError); | 
| +assertThrows(function() { new RegExp("foo.bar", "y"); }, SyntaxError); | 
| +assertThrows(function() { new RegExp("foobar", "y"); }, SyntaxError); | 
| +assertThrows(function() { new RegExp("foo.bar", "gy"); }, SyntaxError); | 
| +assertThrows(function() { new RegExp("foobar", "gy"); }, SyntaxError); | 
|  | 
| -function dummy(x) { | 
| -  return x + 100; | 
| -} | 
| +var re = /foo.bar/; | 
| +assertEquals("/foo.bar/", "" + re); | 
| +var plain = /foobar/; | 
| +assertEquals("/foobar/", "" + plain); | 
|  | 
| -function create_closure() { | 
| -  var f = function(arg) { | 
| -    if (arg) { %DeoptimizeFunction(f); } | 
| -    var a = Array(10); | 
| -    for (var i = 0; i < a.length; i++) { | 
| -      a[i] = i; | 
| -    } | 
| -  } | 
| -  return f; | 
| -} | 
| +re.compile("foo.bar"); | 
| +assertEquals(void 0, re.sticky); | 
|  | 
| -var c = create_closure(); | 
| -c(); | 
| +var global = /foo.bar/g; | 
| +assertEquals("/foo.bar/g", "" + global); | 
| +var plainglobal = /foobar/g; | 
| +assertEquals("/foobar/g", "" + plainglobal); | 
|  | 
| -// c CallIC state now has custom Array handler installed. | 
| +assertEquals(void 0, re.sticky); | 
| +re.sticky = true; // Has no effect on the regexp, just sets a property. | 
| +assertTrue(re.sticky); | 
|  | 
| -// Turn on the debugger. | 
| -Debug.setListener(function () {}); | 
| +assertTrue(re.test("..foo.bar")); | 
|  | 
| -var d = create_closure(); | 
| -%OptimizeFunctionOnNextCall(d); | 
| -// Thanks to the debugger, we recreate the full code too. We deopt and run | 
| -// it, stomping on the unexpected AllocationSite in the type vector slot. | 
| -d(true); | 
| +re.lastIndex = -1; // Ignored for non-global, non-sticky. | 
| +assertTrue(re.test("..foo.bar")); | 
| +assertEquals(-1, re.lastIndex); | 
|  | 
| -// CallIC in c misinterprets type vector slot contents as an AllocationSite, | 
| -// corrupting the heap. | 
| -c(); | 
| - | 
| -// CallIC MISS - crash due to corruption. | 
| -dummy(); | 
| +re.lastIndex = -1; // Ignored for non-global, non-sticky. | 
| +assertTrue(!!re.exec("..foo.bar")); | 
| +assertEquals(-1, re.lastIndex); | 
|  |