OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 6377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6388 MapHandleList transition_target(maps->length()); | 6388 MapHandleList transition_target(maps->length()); |
6389 // Collect possible transition targets. | 6389 // Collect possible transition targets. |
6390 MapHandleList possible_transitioned_maps(maps->length()); | 6390 MapHandleList possible_transitioned_maps(maps->length()); |
6391 for (int i = 0; i < maps->length(); ++i) { | 6391 for (int i = 0; i < maps->length(); ++i) { |
6392 Handle<Map> map = maps->at(i); | 6392 Handle<Map> map = maps->at(i); |
6393 ElementsKind elements_kind = map->elements_kind(); | 6393 ElementsKind elements_kind = map->elements_kind(); |
6394 if (IsFastElementsKind(elements_kind) && | 6394 if (IsFastElementsKind(elements_kind) && |
6395 elements_kind != GetInitialFastElementsKind()) { | 6395 elements_kind != GetInitialFastElementsKind()) { |
6396 possible_transitioned_maps.Add(map); | 6396 possible_transitioned_maps.Add(map); |
6397 } | 6397 } |
| 6398 if (elements_kind == SLOPPY_ARGUMENTS_ELEMENTS) { |
| 6399 HInstruction* result = BuildKeyedGeneric(access_type, object, key, val); |
| 6400 *has_side_effects = result->HasObservableSideEffects(); |
| 6401 return AddInstruction(result); |
| 6402 } |
6398 } | 6403 } |
6399 // Get transition target for each map (NULL == no transition). | 6404 // Get transition target for each map (NULL == no transition). |
6400 for (int i = 0; i < maps->length(); ++i) { | 6405 for (int i = 0; i < maps->length(); ++i) { |
6401 Handle<Map> map = maps->at(i); | 6406 Handle<Map> map = maps->at(i); |
6402 Handle<Map> transitioned_map = | 6407 Handle<Map> transitioned_map = |
6403 map->FindTransitionedMap(&possible_transitioned_maps); | 6408 map->FindTransitionedMap(&possible_transitioned_maps); |
6404 transition_target.Add(transitioned_map); | 6409 transition_target.Add(transitioned_map); |
6405 } | 6410 } |
6406 | 6411 |
6407 MapHandleList untransitionable_maps(maps->length()); | 6412 MapHandleList untransitionable_maps(maps->length()); |
(...skipping 4893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11301 if (ShouldProduceTraceOutput()) { | 11306 if (ShouldProduceTraceOutput()) { |
11302 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 11307 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
11303 } | 11308 } |
11304 | 11309 |
11305 #ifdef DEBUG | 11310 #ifdef DEBUG |
11306 graph_->Verify(false); // No full verify. | 11311 graph_->Verify(false); // No full verify. |
11307 #endif | 11312 #endif |
11308 } | 11313 } |
11309 | 11314 |
11310 } } // namespace v8::internal | 11315 } } // namespace v8::internal |
OLD | NEW |