The issue is that by handling strings with map/handler pairs instead of a special
authormvstanton@chromium.org <mvstanton@chromium.org>
Tue, 21 Oct 2014 13:04:51 +0000 (13:04 +0000)
committermvstanton@chromium.org <mvstanton@chromium.org>
Tue, 21 Oct 2014 13:04:51 +0000 (13:04 +0000)
commit8330178b4c0a9af8416d1c00254e3a7818fdad3e
treec41e694863bd61e6571dfafadf2199baa3ce7790
parent5e1cd18d945edca5bdd823db3a831a5762d2f255
The issue is that by handling strings with map/handler pairs instead of a special
version of the keyed load stub (https://code.google.com/p/v8/source/detail?r=24661),
I allowed polymorphism between string and non-string types in the IC. Before, the
IC would go generic.

Then, at crankshaft time, we special case when we only saw strings. The error
here is that crankshaft can't emit code that handles polymorphism between string
and non-string types. The choice is either to get that to happen (I don't deem
this necessary from a performance point of view, an IC with such type feedback
before would have gone generic), or simply check for the case of "polymorphic
with some string maps" and require crankshaft to go generic. I'll do the latter.

BUG=425519
LOG=N
R=jarin@chromium.org

Review URL: https://codereview.chromium.org/667923004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24775 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/hydrogen.cc
test/mjsunit/regress/regress-crbug-425519.js [new file with mode: 0644]