OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 6170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6181 // map to check has FAST_HOLEY_ELEMENTS, since there can be no further | 6181 // map to check has FAST_HOLEY_ELEMENTS, since there can be no further |
6182 // ElementsKind transitions. Finally, the dependency can be removed for stores | 6182 // ElementsKind transitions. Finally, the dependency can be removed for stores |
6183 // for FAST_ELEMENTS, since a transition to HOLEY elements won't change the | 6183 // for FAST_ELEMENTS, since a transition to HOLEY elements won't change the |
6184 // generated store code. | 6184 // generated store code. |
6185 if ((map->elements_kind() == FAST_HOLEY_ELEMENTS) || | 6185 if ((map->elements_kind() == FAST_HOLEY_ELEMENTS) || |
6186 (map->elements_kind() == FAST_ELEMENTS && is_store)) { | 6186 (map->elements_kind() == FAST_ELEMENTS && is_store)) { |
6187 mapcheck->ClearGVNFlag(kDependsOnElementsKind); | 6187 mapcheck->ClearGVNFlag(kDependsOnElementsKind); |
6188 } | 6188 } |
6189 bool fast_smi_only_elements = map->has_fast_smi_elements(); | 6189 bool fast_smi_only_elements = map->has_fast_smi_elements(); |
6190 bool fast_elements = map->has_fast_object_elements(); | 6190 bool fast_elements = map->has_fast_object_elements(); |
6191 HInstruction* elements = | 6191 HInstruction* elements = |
6192 AddInstruction(new(zone()) HLoadElements(object, mapcheck)); | 6192 AddInstruction(new(zone()) HLoadElements(object, mapcheck)); |
6193 if (is_store && (fast_elements || fast_smi_only_elements)) { | 6193 if (is_store && (fast_elements || fast_smi_only_elements)) { |
6194 HCheckMaps* check_cow_map = new(zone()) HCheckMaps( | 6194 HCheckMaps* check_cow_map = new(zone()) HCheckMaps( |
6195 elements, isolate()->factory()->fixed_array_map(), zone()); | 6195 elements, isolate()->factory()->fixed_array_map(), zone()); |
6196 check_cow_map->ClearGVNFlag(kDependsOnElementsKind); | 6196 check_cow_map->ClearGVNFlag(kDependsOnElementsKind); |
6197 AddInstruction(check_cow_map); | 6197 AddInstruction(check_cow_map); |
6198 } | 6198 } |
6199 HInstruction* length = NULL; | 6199 HInstruction* length = NULL; |
6200 HInstruction* checked_key = NULL; | 6200 HInstruction* checked_key = NULL; |
6201 if (map->has_external_array_elements()) { | 6201 if (map->has_external_array_elements()) { |
(...skipping 3770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9972 } | 9972 } |
9973 } | 9973 } |
9974 | 9974 |
9975 #ifdef DEBUG | 9975 #ifdef DEBUG |
9976 if (graph_ != NULL) graph_->Verify(false); // No full verify. | 9976 if (graph_ != NULL) graph_->Verify(false); // No full verify. |
9977 if (allocator_ != NULL) allocator_->Verify(); | 9977 if (allocator_ != NULL) allocator_->Verify(); |
9978 #endif | 9978 #endif |
9979 } | 9979 } |
9980 | 9980 |
9981 } } // namespace v8::internal | 9981 } } // namespace v8::internal |
OLD | NEW |