Reviewers: jarin,
Message:
PTAL
Description:
Don't inline Array.shift() if receiver map is not extensible.
TEST=mjsunit/regress/regress-crbug-405517
BUG=405517
LOG=y
Please review this at https://codereview.chromium.org/491863002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+5, -3 lines):
M src/hydrogen.cc
A + test/mjsunit/regress/regress-crbug-405517.js
Index: src/hydrogen.cc
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index
6096c248970e2e0b0f1950cd8ae238f1b62b7d99..99760361140f6c6d242b0cba2c220719ba98500e
100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -8334,7 +8334,7 @@ bool
HOptimizedGraphBuilder::TryInlineBuiltinMethodCall(
ElementsKind kind = receiver_map->elements_kind();
if (!IsFastElementsKind(kind)) return false;
if (receiver_map->is_observed()) return false;
- DCHECK(receiver_map->is_extensible());
+ if (!receiver_map->is_extensible()) return false;
// If there may be elements accessors in the prototype chain, the
fast
// inlined version can't be used.
Index: test/mjsunit/regress/regress-crbug-405517.js
diff --git a/test/mjsunit/regress/regress-crbug-387636.js
b/test/mjsunit/regress/regress-crbug-405517.js
similarity index 64%
copy from test/mjsunit/regress/regress-crbug-387636.js
copy to test/mjsunit/regress/regress-crbug-405517.js
index
1e50ace45a293c8561042f1a09c8fcd505b43dc2..36c3f4f7f7053d8ecaad77046d1c61f9594e302b
100644
--- a/test/mjsunit/regress/regress-crbug-387636.js
+++ b/test/mjsunit/regress/regress-crbug-405517.js
@@ -2,10 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --allow-natives-syntax
+// Flags: --allow-natives-syntax --gc-interval=203
function f() {
- [].indexOf(0x40000000);
+ var e = [0];
+ %PreventExtensions(e);
+ for (var i = 0; i < 4; i++) e.shift();
}
f();
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.