Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(239)

Side by Side Diff: src/elements-kind.cc

Issue 1221713003: Distinguish slow from fast sloppy arguments (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/elements-kind.h ('k') | src/hydrogen.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 26 matching lines...) Expand all
37 case EXTERNAL_FLOAT64_ELEMENTS: 37 case EXTERNAL_FLOAT64_ELEMENTS:
38 case FAST_DOUBLE_ELEMENTS: 38 case FAST_DOUBLE_ELEMENTS:
39 case FAST_HOLEY_DOUBLE_ELEMENTS: 39 case FAST_HOLEY_DOUBLE_ELEMENTS:
40 case FLOAT64_ELEMENTS: 40 case FLOAT64_ELEMENTS:
41 return 3; 41 return 3;
42 case FAST_SMI_ELEMENTS: 42 case FAST_SMI_ELEMENTS:
43 case FAST_ELEMENTS: 43 case FAST_ELEMENTS:
44 case FAST_HOLEY_SMI_ELEMENTS: 44 case FAST_HOLEY_SMI_ELEMENTS:
45 case FAST_HOLEY_ELEMENTS: 45 case FAST_HOLEY_ELEMENTS:
46 case DICTIONARY_ELEMENTS: 46 case DICTIONARY_ELEMENTS:
47 case SLOPPY_ARGUMENTS_ELEMENTS: 47 case FAST_SLOPPY_ARGUMENTS_ELEMENTS:
48 case SLOW_SLOPPY_ARGUMENTS_ELEMENTS:
48 return kPointerSizeLog2; 49 return kPointerSizeLog2;
49 } 50 }
50 UNREACHABLE(); 51 UNREACHABLE();
51 return 0; 52 return 0;
52 } 53 }
53 54
54 55
55 int GetDefaultHeaderSizeForElementsKind(ElementsKind elements_kind) { 56 int GetDefaultHeaderSizeForElementsKind(ElementsKind elements_kind) {
56 STATIC_ASSERT(FixedArray::kHeaderSize == FixedDoubleArray::kHeaderSize); 57 STATIC_ASSERT(FixedArray::kHeaderSize == FixedDoubleArray::kHeaderSize);
57 58
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 TYPED_ARRAYS(FIXED_TYPED_ARRAY_CASE) 128 TYPED_ARRAYS(FIXED_TYPED_ARRAY_CASE)
128 #undef FIXED_TYPED_ARRAY_CASE 129 #undef FIXED_TYPED_ARRAY_CASE
129 default: { 130 default: {
130 int index = GetSequenceIndexFromFastElementsKind(kind); 131 int index = GetSequenceIndexFromFastElementsKind(kind);
131 return GetFastElementsKindFromSequenceIndex(index + 1); 132 return GetFastElementsKindFromSequenceIndex(index + 1);
132 } 133 }
133 } 134 }
134 } 135 }
135 136
136 137
137 ElementsKind GetNextMoreGeneralFastElementsKind(ElementsKind elements_kind,
138 bool allow_only_packed) {
139 DCHECK(IsFastElementsKind(elements_kind));
140 DCHECK(elements_kind != TERMINAL_FAST_ELEMENTS_KIND);
141 while (true) {
142 elements_kind = GetNextTransitionElementsKind(elements_kind);
143 if (!IsFastHoleyElementsKind(elements_kind) || !allow_only_packed) {
144 return elements_kind;
145 }
146 }
147 UNREACHABLE();
148 return TERMINAL_FAST_ELEMENTS_KIND;
149 }
150
151
152 static bool IsTypedArrayElementsKind(ElementsKind elements_kind) { 138 static bool IsTypedArrayElementsKind(ElementsKind elements_kind) {
153 return IsFixedTypedArrayElementsKind(elements_kind) || 139 return IsFixedTypedArrayElementsKind(elements_kind) ||
154 IsExternalArrayElementsKind(elements_kind); 140 IsExternalArrayElementsKind(elements_kind);
155 } 141 }
156 142
157 143
158 static inline bool IsFastTransitionTarget(ElementsKind elements_kind) { 144 static inline bool IsFastTransitionTarget(ElementsKind elements_kind) {
159 return IsFastElementsKind(elements_kind) || 145 return IsFastElementsKind(elements_kind) ||
160 elements_kind == DICTIONARY_ELEMENTS; 146 elements_kind == DICTIONARY_ELEMENTS;
161 } 147 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 default: 182 default:
197 return false; 183 return false;
198 } 184 }
199 } 185 }
200 return false; 186 return false;
201 } 187 }
202 188
203 189
204 } // namespace internal 190 } // namespace internal
205 } // namespace v8 191 } // namespace v8
OLDNEW
« no previous file with comments | « src/elements-kind.h ('k') | src/hydrogen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698