| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 8a35ed61b6295f60df7214b75a3d9490a6507ea1..0b843bd45b32eb6d57c1efa86ee784c59290c817 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -4096,33 +4096,30 @@ HValue* HGraphBuilder::HandlePolymorphicElementAccess(HValue* object,
|
|
|
| // Elements_kind transition support.
|
| MapList transition_target(maps->length());
|
| - if (is_store) {
|
| - // Collect possible transition targets.
|
| - MapList possible_transitioned_maps(maps->length());
|
| - for (int i = 0; i < maps->length(); ++i) {
|
| - Handle<Map> map = maps->at(i);
|
| - ElementsKind elements_kind = map->elements_kind();
|
| - if (elements_kind == FAST_DOUBLE_ELEMENTS ||
|
| - elements_kind == FAST_ELEMENTS) {
|
| - possible_transitioned_maps.Add(*map);
|
| - }
|
| - }
|
| - // Get transition target for each map (NULL == no transition).
|
| - for (int i = 0; i < maps->length(); ++i) {
|
| - Handle<Map> map = maps->at(i);
|
| - Map* transitioned_map =
|
| - map->FindTransitionedMap(&possible_transitioned_maps);
|
| - transition_target.Add(transitioned_map);
|
| + // Collect possible transition targets.
|
| + MapList possible_transitioned_maps(maps->length());
|
| + for (int i = 0; i < maps->length(); ++i) {
|
| + Handle<Map> map = maps->at(i);
|
| + ElementsKind elements_kind = map->elements_kind();
|
| + if (elements_kind == FAST_DOUBLE_ELEMENTS ||
|
| + elements_kind == FAST_ELEMENTS) {
|
| + possible_transitioned_maps.Add(*map);
|
| }
|
| }
|
| + // Get transition target for each map (NULL == no transition).
|
| + for (int i = 0; i < maps->length(); ++i) {
|
| + Handle<Map> map = maps->at(i);
|
| + Map* transitioned_map =
|
| + map->FindTransitionedMap(&possible_transitioned_maps);
|
| + transition_target.Add(transitioned_map);
|
| + }
|
|
|
| int num_untransitionable_maps = 0;
|
| Handle<Map> untransitionable_map;
|
| for (int i = 0; i < maps->length(); ++i) {
|
| Handle<Map> map = maps->at(i);
|
| ASSERT(map->IsMap());
|
| - ASSERT(!is_store || (transition_target.length() == maps->length()));
|
| - if (is_store && transition_target.at(i) != NULL) {
|
| + if (transition_target.at(i) != NULL) {
|
| object = AddInstruction(new(zone()) HTransitionElementsKind(
|
| object, map, Handle<Map>(transition_target.at(i))));
|
| } else {
|
|
|