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.

Reply via email to