summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/regress/regress-996161.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/regress/regress-996161.js')
-rw-r--r--deps/v8/test/mjsunit/regress/regress-996161.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/regress/regress-996161.js b/deps/v8/test/mjsunit/regress/regress-996161.js
new file mode 100644
index 0000000000..dada3f47bd
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-996161.js
@@ -0,0 +1,43 @@
+// Copyright 2019 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 checkOwnProperties(v, count) {
+ var properties = Object.getOwnPropertyNames(v);
+ assertEquals(properties.length, count);
+}
+
+
+function testStoreNoFeedback() {
+ arr = new Int32Array(10);
+ function f(a) { a["-1"] = 15; }
+
+ for (var i = 0; i < 3; i++) {
+ arr.__defineGetter__("x", function() { });
+ checkOwnProperties(arr, 11);
+ f(arr);
+ }
+}
+testStoreNoFeedback();
+
+function testStoreGeneric() {
+ arr = new Int32Array(10);
+ var index = "-1";
+ function f1(a) { a[index] = 15; }
+ %EnsureFeedbackVectorForFunction(f1);
+
+ // Make a[index] in f1 megamorphic
+ f1({a: 1});
+ f1({b: 1});
+ f1({c: 1});
+ f1({d: 1});
+
+ for (var i = 0; i < 3; i++) {
+ arr.__defineGetter__("x", function() { });
+ checkOwnProperties(arr, 11);
+ f1(arr);
+ }
+}
+testStoreGeneric();