blob: d4187faaaddd512d3f6bf4eb51d16d2515e425cc [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// Copyright 2014 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "src/compiler/access-builder.h"
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00006
7#include "src/contexts.h"
8#include "src/frames.h"
Ben Murdoch097c5b22016-05-18 11:27:45 +01009#include "src/handles-inl.h"
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000010#include "src/heap/heap.h"
11#include "src/type-cache.h"
Ben Murdochb8a8cc12014-11-26 15:28:44 +000012
13namespace v8 {
14namespace internal {
15namespace compiler {
16
17// static
18FieldAccess AccessBuilder::ForMap() {
Ben Murdochc5610432016-08-08 18:44:38 +010019 FieldAccess access = {
20 kTaggedBase, HeapObject::kMapOffset, MaybeHandle<Name>(),
21 Type::Any(), MachineType::AnyTagged(), kMapWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000022 return access;
23}
24
25
26// static
27FieldAccess AccessBuilder::ForHeapNumberValue() {
Ben Murdochc5610432016-08-08 18:44:38 +010028 FieldAccess access = {kTaggedBase,
29 HeapNumber::kValueOffset,
30 MaybeHandle<Name>(),
31 TypeCache::Get().kFloat64,
32 MachineType::Float64(),
33 kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000034 return access;
Ben Murdochb8a8cc12014-11-26 15:28:44 +000035}
36
37
38// static
39FieldAccess AccessBuilder::ForJSObjectProperties() {
Ben Murdochc5610432016-08-08 18:44:38 +010040 FieldAccess access = {
41 kTaggedBase, JSObject::kPropertiesOffset, MaybeHandle<Name>(),
42 Type::Internal(), MachineType::AnyTagged(), kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000043 return access;
Ben Murdochb8a8cc12014-11-26 15:28:44 +000044}
45
46
47// static
48FieldAccess AccessBuilder::ForJSObjectElements() {
Ben Murdochc5610432016-08-08 18:44:38 +010049 FieldAccess access = {
50 kTaggedBase, JSObject::kElementsOffset, MaybeHandle<Name>(),
51 Type::Internal(), MachineType::AnyTagged(), kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000052 return access;
53}
54
55
56// static
57FieldAccess AccessBuilder::ForJSObjectInObjectProperty(Handle<Map> map,
58 int index) {
59 int const offset = map->GetInObjectPropertyOffset(index);
Ben Murdochc5610432016-08-08 18:44:38 +010060 FieldAccess access = {kTaggedBase,
61 offset,
62 MaybeHandle<Name>(),
63 Type::Tagged(),
64 MachineType::AnyTagged(),
65 kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000066 return access;
Ben Murdochb8a8cc12014-11-26 15:28:44 +000067}
68
69
70// static
Ben Murdochc5610432016-08-08 18:44:38 +010071FieldAccess AccessBuilder::ForJSFunctionPrototypeOrInitialMap() {
72 FieldAccess access = {kTaggedBase,
73 JSFunction::kPrototypeOrInitialMapOffset,
74 MaybeHandle<Name>(),
75 Type::Any(),
76 MachineType::AnyTagged(),
77 kFullWriteBarrier};
78 return access;
79}
80
81// static
Ben Murdochb8a8cc12014-11-26 15:28:44 +000082FieldAccess AccessBuilder::ForJSFunctionContext() {
Ben Murdochc5610432016-08-08 18:44:38 +010083 FieldAccess access = {
84 kTaggedBase, JSFunction::kContextOffset, MaybeHandle<Name>(),
85 Type::Internal(), MachineType::AnyTagged(), kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000086 return access;
87}
88
89
90// static
91FieldAccess AccessBuilder::ForJSFunctionSharedFunctionInfo() {
Ben Murdochc5610432016-08-08 18:44:38 +010092 FieldAccess access = {kTaggedBase,
93 JSFunction::kSharedFunctionInfoOffset,
94 Handle<Name>(),
95 Type::Any(),
96 MachineType::AnyTagged(),
97 kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +000098 return access;
99}
100
101
102// static
Ben Murdochc5610432016-08-08 18:44:38 +0100103FieldAccess AccessBuilder::ForJSFunctionLiterals() {
104 FieldAccess access = {
105 kTaggedBase, JSFunction::kLiteralsOffset, Handle<Name>(),
106 Type::Internal(), MachineType::AnyTagged(), kPointerWriteBarrier};
107 return access;
108}
109
110// static
111FieldAccess AccessBuilder::ForJSFunctionCodeEntry() {
112 FieldAccess access = {kTaggedBase,
113 JSFunction::kCodeEntryOffset,
114 Handle<Name>(),
115 Type::UntaggedPointer(),
116 MachineType::Pointer(),
117 kNoWriteBarrier};
118 return access;
119}
120
121// static
122FieldAccess AccessBuilder::ForJSFunctionNextFunctionLink() {
123 FieldAccess access = {kTaggedBase,
124 JSFunction::kNextFunctionLinkOffset,
125 Handle<Name>(),
126 Type::Any(),
127 MachineType::AnyTagged(),
128 kPointerWriteBarrier};
129 return access;
130}
131
132// static
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000133FieldAccess AccessBuilder::ForJSArrayLength(ElementsKind elements_kind) {
134 TypeCache const& type_cache = TypeCache::Get();
Ben Murdochc5610432016-08-08 18:44:38 +0100135 FieldAccess access = {kTaggedBase,
136 JSArray::kLengthOffset,
137 Handle<Name>(),
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000138 type_cache.kJSArrayLengthType,
Ben Murdochc5610432016-08-08 18:44:38 +0100139 MachineType::AnyTagged(),
140 kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000141 if (IsFastDoubleElementsKind(elements_kind)) {
142 access.type = type_cache.kFixedDoubleArrayLengthType;
Ben Murdochc5610432016-08-08 18:44:38 +0100143 access.write_barrier_kind = kNoWriteBarrier;
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000144 } else if (IsFastElementsKind(elements_kind)) {
145 access.type = type_cache.kFixedArrayLengthType;
Ben Murdochc5610432016-08-08 18:44:38 +0100146 access.write_barrier_kind = kNoWriteBarrier;
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000147 }
148 return access;
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000149}
150
151
152// static
153FieldAccess AccessBuilder::ForJSArrayBufferBackingStore() {
Ben Murdochc5610432016-08-08 18:44:38 +0100154 FieldAccess access = {kTaggedBase,
155 JSArrayBuffer::kBackingStoreOffset,
156 MaybeHandle<Name>(),
157 Type::UntaggedPointer(),
158 MachineType::Pointer(),
159 kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000160 return access;
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000161}
162
163
164// static
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000165FieldAccess AccessBuilder::ForJSArrayBufferBitField() {
Ben Murdochc5610432016-08-08 18:44:38 +0100166 FieldAccess access = {kTaggedBase, JSArrayBuffer::kBitFieldOffset,
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000167 MaybeHandle<Name>(), TypeCache::Get().kInt8,
Ben Murdochc5610432016-08-08 18:44:38 +0100168 MachineType::Int8(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000169 return access;
170}
171
172
173// static
174FieldAccess AccessBuilder::ForJSArrayBufferViewBuffer() {
Ben Murdochc5610432016-08-08 18:44:38 +0100175 FieldAccess access = {kTaggedBase,
176 JSArrayBufferView::kBufferOffset,
177 MaybeHandle<Name>(),
178 Type::TaggedPointer(),
179 MachineType::AnyTagged(),
180 kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000181 return access;
182}
183
184
185// static
186FieldAccess AccessBuilder::ForJSDateField(JSDate::FieldIndex index) {
Ben Murdochc5610432016-08-08 18:44:38 +0100187 FieldAccess access = {kTaggedBase,
188 JSDate::kValueOffset + index * kPointerSize,
189 MaybeHandle<Name>(),
190 Type::Number(),
191 MachineType::AnyTagged(),
192 kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000193 return access;
194}
195
196
197// static
198FieldAccess AccessBuilder::ForJSIteratorResultDone() {
Ben Murdochc5610432016-08-08 18:44:38 +0100199 FieldAccess access = {
200 kTaggedBase, JSIteratorResult::kDoneOffset, MaybeHandle<Name>(),
201 Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000202 return access;
203}
204
205
206// static
207FieldAccess AccessBuilder::ForJSIteratorResultValue() {
Ben Murdochc5610432016-08-08 18:44:38 +0100208 FieldAccess access = {
209 kTaggedBase, JSIteratorResult::kValueOffset, MaybeHandle<Name>(),
210 Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000211 return access;
212}
213
214
215// static
216FieldAccess AccessBuilder::ForJSRegExpFlags() {
Ben Murdochc5610432016-08-08 18:44:38 +0100217 FieldAccess access = {
218 kTaggedBase, JSRegExp::kFlagsOffset, MaybeHandle<Name>(),
219 Type::Tagged(), MachineType::AnyTagged(), kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000220 return access;
221}
222
223
224// static
225FieldAccess AccessBuilder::ForJSRegExpSource() {
Ben Murdochc5610432016-08-08 18:44:38 +0100226 FieldAccess access = {
227 kTaggedBase, JSRegExp::kSourceOffset, MaybeHandle<Name>(),
228 Type::Tagged(), MachineType::AnyTagged(), kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000229 return access;
230}
231
232
233// static
234FieldAccess AccessBuilder::ForFixedArrayLength() {
Ben Murdochc5610432016-08-08 18:44:38 +0100235 FieldAccess access = {kTaggedBase,
236 FixedArray::kLengthOffset,
237 MaybeHandle<Name>(),
238 TypeCache::Get().kFixedArrayLengthType,
239 MachineType::AnyTagged(),
240 kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000241 return access;
242}
243
244
245// static
246FieldAccess AccessBuilder::ForDescriptorArrayEnumCache() {
Ben Murdochc5610432016-08-08 18:44:38 +0100247 FieldAccess access = {kTaggedBase,
248 DescriptorArray::kEnumCacheOffset,
249 Handle<Name>(),
250 Type::TaggedPointer(),
251 MachineType::AnyTagged(),
252 kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000253 return access;
254}
255
256
257// static
258FieldAccess AccessBuilder::ForDescriptorArrayEnumCacheBridgeCache() {
Ben Murdochc5610432016-08-08 18:44:38 +0100259 FieldAccess access = {kTaggedBase,
260 DescriptorArray::kEnumCacheBridgeCacheOffset,
261 Handle<Name>(),
262 Type::TaggedPointer(),
263 MachineType::AnyTagged(),
264 kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000265 return access;
266}
267
268
269// static
270FieldAccess AccessBuilder::ForMapBitField() {
Ben Murdochc5610432016-08-08 18:44:38 +0100271 FieldAccess access = {kTaggedBase, Map::kBitFieldOffset,
272 Handle<Name>(), TypeCache::Get().kUint8,
273 MachineType::Uint8(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000274 return access;
275}
276
277
278// static
279FieldAccess AccessBuilder::ForMapBitField3() {
Ben Murdochc5610432016-08-08 18:44:38 +0100280 FieldAccess access = {kTaggedBase, Map::kBitField3Offset,
281 Handle<Name>(), TypeCache::Get().kInt32,
282 MachineType::Int32(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000283 return access;
284}
285
286
287// static
288FieldAccess AccessBuilder::ForMapDescriptors() {
Ben Murdochc5610432016-08-08 18:44:38 +0100289 FieldAccess access = {
290 kTaggedBase, Map::kDescriptorsOffset, Handle<Name>(),
291 Type::TaggedPointer(), MachineType::AnyTagged(), kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000292 return access;
Emily Bernierd0a1eb72015-03-24 16:35:39 -0400293}
294
295
296// static
297FieldAccess AccessBuilder::ForMapInstanceType() {
Ben Murdochc5610432016-08-08 18:44:38 +0100298 FieldAccess access = {kTaggedBase, Map::kInstanceTypeOffset,
299 Handle<Name>(), TypeCache::Get().kUint8,
300 MachineType::Uint8(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000301 return access;
302}
303
304
305// static
306FieldAccess AccessBuilder::ForMapPrototype() {
Ben Murdochc5610432016-08-08 18:44:38 +0100307 FieldAccess access = {
308 kTaggedBase, Map::kPrototypeOffset, Handle<Name>(),
309 Type::TaggedPointer(), MachineType::AnyTagged(), kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000310 return access;
Emily Bernierd0a1eb72015-03-24 16:35:39 -0400311}
312
313
314// static
315FieldAccess AccessBuilder::ForStringLength() {
Ben Murdochc5610432016-08-08 18:44:38 +0100316 FieldAccess access = {kTaggedBase,
317 String::kLengthOffset,
318 Handle<Name>(),
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000319 TypeCache::Get().kStringLengthType,
Ben Murdochc5610432016-08-08 18:44:38 +0100320 MachineType::AnyTagged(),
321 kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000322 return access;
323}
324
325
326// static
327FieldAccess AccessBuilder::ForJSGlobalObjectGlobalProxy() {
Ben Murdochc5610432016-08-08 18:44:38 +0100328 FieldAccess access = {kTaggedBase,
329 JSGlobalObject::kGlobalProxyOffset,
330 Handle<Name>(),
331 Type::Receiver(),
332 MachineType::AnyTagged(),
333 kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000334 return access;
335}
336
337
338// static
339FieldAccess AccessBuilder::ForJSGlobalObjectNativeContext() {
Ben Murdochc5610432016-08-08 18:44:38 +0100340 FieldAccess access = {kTaggedBase,
341 JSGlobalObject::kNativeContextOffset,
342 Handle<Name>(),
343 Type::Internal(),
344 MachineType::AnyTagged(),
345 kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000346 return access;
Emily Bernierd0a1eb72015-03-24 16:35:39 -0400347}
348
349
350// static
351FieldAccess AccessBuilder::ForValue() {
Ben Murdochc5610432016-08-08 18:44:38 +0100352 FieldAccess access = {
353 kTaggedBase, JSValue::kValueOffset, Handle<Name>(),
354 Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000355 return access;
356}
357
358
359// static
360FieldAccess AccessBuilder::ForArgumentsLength() {
Ben Murdochc5610432016-08-08 18:44:38 +0100361 FieldAccess access = {
362 kTaggedBase, JSArgumentsObject::kLengthOffset, Handle<Name>(),
363 Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000364 return access;
365}
366
367
368// static
369FieldAccess AccessBuilder::ForArgumentsCallee() {
Ben Murdochc5610432016-08-08 18:44:38 +0100370 FieldAccess access = {kTaggedBase,
371 JSSloppyArgumentsObject::kCalleeOffset,
372 Handle<Name>(),
373 Type::Any(),
374 MachineType::AnyTagged(),
375 kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000376 return access;
377}
378
379
380// static
381FieldAccess AccessBuilder::ForFixedArraySlot(size_t index) {
382 int offset = FixedArray::OffsetOfElementAt(static_cast<int>(index));
Ben Murdochc5610432016-08-08 18:44:38 +0100383 FieldAccess access = {kTaggedBase,
384 offset,
385 Handle<Name>(),
386 Type::Any(),
387 MachineType::AnyTagged(),
388 kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000389 return access;
Emily Bernierd0a1eb72015-03-24 16:35:39 -0400390}
391
392
393// static
394FieldAccess AccessBuilder::ForContextSlot(size_t index) {
395 int offset = Context::kHeaderSize + static_cast<int>(index) * kPointerSize;
396 DCHECK_EQ(offset,
397 Context::SlotOffset(static_cast<int>(index)) + kHeapObjectTag);
Ben Murdochc5610432016-08-08 18:44:38 +0100398 FieldAccess access = {kTaggedBase,
399 offset,
400 Handle<Name>(),
401 Type::Any(),
402 MachineType::AnyTagged(),
403 kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000404 return access;
405}
406
407
408// static
409FieldAccess AccessBuilder::ForPropertyCellValue() {
410 return ForPropertyCellValue(Type::Tagged());
411}
412
413
414// static
415FieldAccess AccessBuilder::ForPropertyCellValue(Type* type) {
Ben Murdochc5610432016-08-08 18:44:38 +0100416 FieldAccess access = {
417 kTaggedBase, PropertyCell::kValueOffset, Handle<Name>(),
418 type, MachineType::AnyTagged(), kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000419 return access;
420}
421
422
423// static
424FieldAccess AccessBuilder::ForSharedFunctionInfoTypeFeedbackVector() {
Ben Murdochc5610432016-08-08 18:44:38 +0100425 FieldAccess access = {kTaggedBase,
426 SharedFunctionInfo::kFeedbackVectorOffset,
427 Handle<Name>(),
428 Type::Any(),
429 MachineType::AnyTagged(),
430 kPointerWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000431 return access;
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000432}
433
434
435// static
436ElementAccess AccessBuilder::ForFixedArrayElement() {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000437 ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Tagged(),
Ben Murdochc5610432016-08-08 18:44:38 +0100438 MachineType::AnyTagged(), kFullWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000439 return access;
440}
441
442
443// static
444ElementAccess AccessBuilder::ForFixedDoubleArrayElement() {
445 ElementAccess access = {kTaggedBase, FixedDoubleArray::kHeaderSize,
Ben Murdochc5610432016-08-08 18:44:38 +0100446 TypeCache::Get().kFloat64, MachineType::Float64(),
447 kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000448 return access;
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000449}
450
451
452// static
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000453ElementAccess AccessBuilder::ForTypedArrayElement(ExternalArrayType type,
454 bool is_external) {
455 BaseTaggedness taggedness = is_external ? kUntaggedBase : kTaggedBase;
456 int header_size = is_external ? 0 : FixedTypedArrayBase::kDataOffset;
457 switch (type) {
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000458 case kExternalInt8Array: {
459 ElementAccess access = {taggedness, header_size, Type::Signed32(),
Ben Murdochc5610432016-08-08 18:44:38 +0100460 MachineType::Int8(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000461 return access;
462 }
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000463 case kExternalUint8Array:
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000464 case kExternalUint8ClampedArray: {
465 ElementAccess access = {taggedness, header_size, Type::Unsigned32(),
Ben Murdochc5610432016-08-08 18:44:38 +0100466 MachineType::Uint8(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000467 return access;
468 }
469 case kExternalInt16Array: {
470 ElementAccess access = {taggedness, header_size, Type::Signed32(),
Ben Murdochc5610432016-08-08 18:44:38 +0100471 MachineType::Int16(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000472 return access;
473 }
474 case kExternalUint16Array: {
475 ElementAccess access = {taggedness, header_size, Type::Unsigned32(),
Ben Murdochc5610432016-08-08 18:44:38 +0100476 MachineType::Uint16(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000477 return access;
478 }
479 case kExternalInt32Array: {
480 ElementAccess access = {taggedness, header_size, Type::Signed32(),
Ben Murdochc5610432016-08-08 18:44:38 +0100481 MachineType::Int32(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000482 return access;
483 }
484 case kExternalUint32Array: {
485 ElementAccess access = {taggedness, header_size, Type::Unsigned32(),
Ben Murdochc5610432016-08-08 18:44:38 +0100486 MachineType::Uint32(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000487 return access;
488 }
489 case kExternalFloat32Array: {
490 ElementAccess access = {taggedness, header_size, Type::Number(),
Ben Murdochc5610432016-08-08 18:44:38 +0100491 MachineType::Float32(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000492 return access;
493 }
494 case kExternalFloat64Array: {
495 ElementAccess access = {taggedness, header_size, Type::Number(),
Ben Murdochc5610432016-08-08 18:44:38 +0100496 MachineType::Float64(), kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000497 return access;
498 }
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000499 }
500 UNREACHABLE();
Ben Murdochc5610432016-08-08 18:44:38 +0100501 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(),
502 kNoWriteBarrier};
Ben Murdoch4a90d5f2016-03-22 12:00:34 +0000503 return access;
Ben Murdochb8a8cc12014-11-26 15:28:44 +0000504}
505
506} // namespace compiler
507} // namespace internal
508} // namespace v8