Index: src/array.js |
diff --git a/src/array.js b/src/array.js |
index ea4f3b41cb8949e666d9ede4cea1ed629f60a7af..a233c63972d7a7bca667e481735a7e6d378e299f 100644 |
--- a/src/array.js |
+++ b/src/array.js |
@@ -468,7 +468,13 @@ function ArrayPush() { |
return ObservedArrayPush.apply(this, arguments); |
for (var i = 0; i < m; i++) { |
- this[i+n] = %_Arguments(i); |
+ // Use SetProperty rather than a direct keyed store to ensure that the store |
+ // site doesn't become poisened with an elements transition KeyedStoreIC. |
+ // |
+ // TODO(danno): Using %SetProperty is a temporary workaround. The spec says |
+ // that ToObject needs to be called for primitive values (and |
+ // Runtime_SetProperty seem to ignore them). |
+ %SetProperty(this, i+n, %_Arguments(i), 0, kStrictMode); |
} |
var new_length = n + m; |