| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/elements-kind.h" | 5 #include "src/elements-kind.h" | 
| 6 | 6 | 
| 7 #include "src/api.h" | 7 #include "src/api.h" | 
| 8 #include "src/base/lazy-instance.h" | 8 #include "src/base/lazy-instance.h" | 
| 9 #include "src/elements.h" | 9 #include "src/elements.h" | 
| 10 #include "src/objects.h" | 10 #include "src/objects.h" | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 46     case DICTIONARY_ELEMENTS: | 46     case DICTIONARY_ELEMENTS: | 
| 47     case FAST_SLOPPY_ARGUMENTS_ELEMENTS: | 47     case FAST_SLOPPY_ARGUMENTS_ELEMENTS: | 
| 48     case SLOW_SLOPPY_ARGUMENTS_ELEMENTS: | 48     case SLOW_SLOPPY_ARGUMENTS_ELEMENTS: | 
| 49       return kPointerSizeLog2; | 49       return kPointerSizeLog2; | 
| 50   } | 50   } | 
| 51   UNREACHABLE(); | 51   UNREACHABLE(); | 
| 52   return 0; | 52   return 0; | 
| 53 } | 53 } | 
| 54 | 54 | 
| 55 | 55 | 
|  | 56 static bool IsTypedArrayElementsKind(ElementsKind elements_kind) { | 
|  | 57   return IsFixedTypedArrayElementsKind(elements_kind) || | 
|  | 58          IsExternalArrayElementsKind(elements_kind); | 
|  | 59 } | 
|  | 60 | 
|  | 61 | 
| 56 int GetDefaultHeaderSizeForElementsKind(ElementsKind elements_kind) { | 62 int GetDefaultHeaderSizeForElementsKind(ElementsKind elements_kind) { | 
| 57   STATIC_ASSERT(FixedArray::kHeaderSize == FixedDoubleArray::kHeaderSize); | 63   STATIC_ASSERT(FixedArray::kHeaderSize == FixedDoubleArray::kHeaderSize); | 
| 58 | 64 | 
| 59   if (IsExternalArrayElementsKind(elements_kind)) { | 65   if (IsTypedArrayElementsKind(elements_kind)) { | 
| 60     return 0; | 66     return 0; | 
| 61   } else if (IsFixedTypedArrayElementsKind(elements_kind)) { |  | 
| 62     return FixedTypedArrayBase::kDataOffset - kHeapObjectTag; |  | 
| 63   } else { | 67   } else { | 
| 64     return FixedArray::kHeaderSize - kHeapObjectTag; | 68     return FixedArray::kHeaderSize - kHeapObjectTag; | 
| 65   } | 69   } | 
| 66 } | 70 } | 
| 67 | 71 | 
| 68 | 72 | 
| 69 const char* ElementsKindToString(ElementsKind kind) { | 73 const char* ElementsKindToString(ElementsKind kind) { | 
| 70   ElementsAccessor* accessor = ElementsAccessor::ForKind(kind); | 74   ElementsAccessor* accessor = ElementsAccessor::ForKind(kind); | 
| 71   return accessor->name(); | 75   return accessor->name(); | 
| 72 } | 76 } | 
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 128     TYPED_ARRAYS(FIXED_TYPED_ARRAY_CASE) | 132     TYPED_ARRAYS(FIXED_TYPED_ARRAY_CASE) | 
| 129 #undef FIXED_TYPED_ARRAY_CASE | 133 #undef FIXED_TYPED_ARRAY_CASE | 
| 130     default: { | 134     default: { | 
| 131       int index = GetSequenceIndexFromFastElementsKind(kind); | 135       int index = GetSequenceIndexFromFastElementsKind(kind); | 
| 132       return GetFastElementsKindFromSequenceIndex(index + 1); | 136       return GetFastElementsKindFromSequenceIndex(index + 1); | 
| 133     } | 137     } | 
| 134   } | 138   } | 
| 135 } | 139 } | 
| 136 | 140 | 
| 137 | 141 | 
| 138 static bool IsTypedArrayElementsKind(ElementsKind elements_kind) { |  | 
| 139   return IsFixedTypedArrayElementsKind(elements_kind) || |  | 
| 140       IsExternalArrayElementsKind(elements_kind); |  | 
| 141 } |  | 
| 142 |  | 
| 143 |  | 
| 144 static inline bool IsFastTransitionTarget(ElementsKind elements_kind) { | 142 static inline bool IsFastTransitionTarget(ElementsKind elements_kind) { | 
| 145   return IsFastElementsKind(elements_kind) || | 143   return IsFastElementsKind(elements_kind) || | 
| 146       elements_kind == DICTIONARY_ELEMENTS; | 144       elements_kind == DICTIONARY_ELEMENTS; | 
| 147 } | 145 } | 
| 148 | 146 | 
| 149 bool IsMoreGeneralElementsKindTransition(ElementsKind from_kind, | 147 bool IsMoreGeneralElementsKindTransition(ElementsKind from_kind, | 
| 150                                          ElementsKind to_kind) { | 148                                          ElementsKind to_kind) { | 
| 151   if (IsTypedArrayElementsKind(from_kind) || | 149   if (IsTypedArrayElementsKind(from_kind) || | 
| 152       IsTypedArrayElementsKind(to_kind)) { | 150       IsTypedArrayElementsKind(to_kind)) { | 
| 153     switch (from_kind) { | 151     switch (from_kind) { | 
| (...skipping 28 matching lines...) Expand all  Loading... | 
| 182       default: | 180       default: | 
| 183         return false; | 181         return false; | 
| 184     } | 182     } | 
| 185   } | 183   } | 
| 186   return false; | 184   return false; | 
| 187 } | 185 } | 
| 188 | 186 | 
| 189 | 187 | 
| 190 }  // namespace internal | 188 }  // namespace internal | 
| 191 }  // namespace v8 | 189 }  // namespace v8 | 
| OLD | NEW | 
|---|