Index: test/mjsunit/compiler/global-delete.js |
diff --git a/test/mjsunit/compiler/global-delete.js b/test/mjsunit/compiler/global-delete.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c32fda6dfaaa4ceb3efbde99b61fab6f038d6cad |
--- /dev/null |
+++ b/test/mjsunit/compiler/global-delete.js |
@@ -0,0 +1,73 @@ |
+// Copyright 2015 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Flags: --allow-natives-syntax |
+ |
+function test(expected, f) { |
+ assertEquals(expected, f()); |
+ assertEquals(expected, f()); |
+ %OptimizeFunctionOnNextCall(f); |
+ assertEquals(expected, f()); |
+ assertEquals(expected, f()); |
+} |
+ |
+function testThrows(f) { |
+ assertThrows(f); |
+ assertThrows(f); |
+ %OptimizeFunctionOnNextCall(f); |
+ assertThrows(f); |
+ assertThrows(f); |
+} |
+ |
+// --- Constant case. |
+a = 11; |
+ |
+function f1() { return a; } |
+test(11, f1); |
+ |
+delete a; |
+ |
+testThrows(f1); |
+ |
+ |
+// --- SMI case. |
+ |
+b = 11; |
+b = 12; |
+b = 13; |
+ |
+function f2() { return b; } |
+test(13, f2); |
+ |
+delete b; |
+ |
+testThrows(f2); |
+ |
+ |
+// --- double case. |
+ |
+c = 11; |
+c = 12.25; |
+c = 13.25; |
+ |
+function f3() { return c; } |
+test(13.25, f3); |
+ |
+delete c; |
+ |
+testThrows(f3); |
+ |
+ |
+// --- tagged case. |
+ |
+d = 11; |
+d = 12.25; |
+d = "hello"; |
+ |
+function f4() { return d; } |
+test("hello", f4); |
+ |
+delete d; |
+ |
+testThrows(f4); |