Reviewers: dcarney,
Message:
Fix keyed-load regression by broadening scope for named loads.
[email protected]
Description:
Fix regression caused by supporting inlining accesses to non-JSObjects
BUG=
Please review this at https://codereview.chromium.org/150983002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+7, -6 lines):
M src/hydrogen.cc
A + test/mjsunit/regress/regress-keyed-access-string-length.js
Index: src/hydrogen.cc
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index
0b189d5e3fe890fafc4129c7ae1b4137e1eea7ad..986f4ee16e90ecd2e1156834fe7225878a539e2b
100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -6714,7 +6714,7 @@ HValue*
HOptimizedGraphBuilder::HandleKeyedElementAccess(
if (monomorphic) {
Handle<Map> map = types->first();
- if (map->has_slow_elements_kind()) {
+ if (map->has_slow_elements_kind() || !map->IsJSObjectMap()) {
instr = is_store ? BuildStoreKeyedGeneric(obj, key, val)
: BuildLoadKeyedGeneric(obj, key);
AddInstruction(instr);
Index: test/mjsunit/regress/regress-keyed-access-string-length.js
diff --git a/test/mjsunit/regress/regress-crbug-173974.js
b/test/mjsunit/regress/regress-keyed-access-string-length.js
similarity index 95%
copy from test/mjsunit/regress/regress-crbug-173974.js
copy to test/mjsunit/regress/regress-keyed-access-string-length.js
index
905bd6058a0ad0fe2ebe10e4c7dafbe9945cbe3b..f2ead686c6b9b9ee43aa9b6353c3745061907282
100644
--- a/test/mjsunit/regress/regress-crbug-173974.js
+++ b/test/mjsunit/regress/regress-keyed-access-string-length.js
@@ -27,10 +27,11 @@
// Flags: --allow-natives-syntax
-function f() {
- var count = "";
- count[0] --;
+function f(i) {
+ return "abc"[i];
}
-f();
+
+f("length");
+f("length");
%OptimizeFunctionOnNextCall(f);
-f();
+f("length");
--
--
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/groups/opt_out.