| 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 160 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 171   return TERMINAL_FAST_ELEMENTS_KIND; | 171   return TERMINAL_FAST_ELEMENTS_KIND; | 
| 172 } | 172 } | 
| 173 | 173 | 
| 174 | 174 | 
| 175 static bool IsTypedArrayElementsKind(ElementsKind elements_kind) { | 175 static bool IsTypedArrayElementsKind(ElementsKind elements_kind) { | 
| 176   return IsFixedTypedArrayElementsKind(elements_kind) || | 176   return IsFixedTypedArrayElementsKind(elements_kind) || | 
| 177       IsExternalArrayElementsKind(elements_kind); | 177       IsExternalArrayElementsKind(elements_kind); | 
| 178 } | 178 } | 
| 179 | 179 | 
| 180 | 180 | 
|  | 181 static inline bool IsFastTransitionTarget(ElementsKind elements_kind) { | 
|  | 182   return IsFastElementsKind(elements_kind) || | 
|  | 183       elements_kind == DICTIONARY_ELEMENTS; | 
|  | 184 } | 
|  | 185 | 
| 181 bool IsMoreGeneralElementsKindTransition(ElementsKind from_kind, | 186 bool IsMoreGeneralElementsKindTransition(ElementsKind from_kind, | 
| 182                                          ElementsKind to_kind) { | 187                                          ElementsKind to_kind) { | 
| 183   if (IsTypedArrayElementsKind(from_kind) || | 188   if (IsTypedArrayElementsKind(from_kind) || | 
| 184       IsTypedArrayElementsKind(to_kind)) { | 189       IsTypedArrayElementsKind(to_kind)) { | 
| 185     switch (from_kind) { | 190     switch (from_kind) { | 
| 186 #define FIXED_TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ | 191 #define FIXED_TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \ | 
| 187       case TYPE##_ELEMENTS:                                   \ | 192       case TYPE##_ELEMENTS:                                   \ | 
| 188         return to_kind == EXTERNAL_##TYPE##_ELEMENTS; | 193         return to_kind == EXTERNAL_##TYPE##_ELEMENTS; | 
| 189 | 194 | 
| 190       TYPED_ARRAYS(FIXED_TYPED_ARRAY_CASE); | 195       TYPED_ARRAYS(FIXED_TYPED_ARRAY_CASE); | 
| 191 #undef FIXED_TYPED_ARRAY_CASE | 196 #undef FIXED_TYPED_ARRAY_CASE | 
| 192       default: | 197       default: | 
| 193         return false; | 198         return false; | 
| 194     } | 199     } | 
| 195   } | 200   } | 
| 196   switch (from_kind) { | 201   if (IsFastElementsKind(from_kind) && IsFastTransitionTarget(to_kind)) { | 
| 197     case FAST_SMI_ELEMENTS: | 202     switch (from_kind) { | 
| 198       return to_kind != FAST_SMI_ELEMENTS; | 203       case FAST_SMI_ELEMENTS: | 
| 199     case FAST_HOLEY_SMI_ELEMENTS: | 204         return to_kind != FAST_SMI_ELEMENTS; | 
| 200       return to_kind != FAST_SMI_ELEMENTS && | 205       case FAST_HOLEY_SMI_ELEMENTS: | 
| 201           to_kind != FAST_HOLEY_SMI_ELEMENTS; | 206         return to_kind != FAST_SMI_ELEMENTS && | 
| 202     case FAST_DOUBLE_ELEMENTS: | 207             to_kind != FAST_HOLEY_SMI_ELEMENTS; | 
| 203       return to_kind != FAST_SMI_ELEMENTS && | 208       case FAST_DOUBLE_ELEMENTS: | 
| 204           to_kind != FAST_HOLEY_SMI_ELEMENTS && | 209         return to_kind != FAST_SMI_ELEMENTS && | 
| 205           to_kind != FAST_DOUBLE_ELEMENTS; | 210             to_kind != FAST_HOLEY_SMI_ELEMENTS && | 
| 206     case FAST_HOLEY_DOUBLE_ELEMENTS: | 211             to_kind != FAST_DOUBLE_ELEMENTS; | 
| 207       return to_kind == FAST_ELEMENTS || | 212       case FAST_HOLEY_DOUBLE_ELEMENTS: | 
| 208           to_kind == FAST_HOLEY_ELEMENTS; | 213         return to_kind == FAST_ELEMENTS || | 
| 209     case FAST_ELEMENTS: | 214             to_kind == FAST_HOLEY_ELEMENTS; | 
| 210       return to_kind == FAST_HOLEY_ELEMENTS; | 215       case FAST_ELEMENTS: | 
| 211     case FAST_HOLEY_ELEMENTS: | 216         return to_kind == FAST_HOLEY_ELEMENTS; | 
| 212       return false; | 217       case FAST_HOLEY_ELEMENTS: | 
| 213     default: | 218         return false; | 
| 214       return false; | 219       default: | 
|  | 220         return false; | 
|  | 221     } | 
| 215   } | 222   } | 
|  | 223   return false; | 
| 216 } | 224 } | 
| 217 | 225 | 
| 218 | 226 | 
| 219 } }  // namespace v8::internal | 227 } }  // namespace v8::internal | 
| OLD | NEW | 
|---|