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

Side by Side Diff: src/compiler/access-builder.cc

Issue 2320473003: [turbofan] Typer changes to avoid Type representation dimension (Closed)
Patch Set: quick fix. Created 4 years, 3 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 | « no previous file | src/compiler/memory-optimizer.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 2014 the V8 project authors. All rights reserved. 1 // 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 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/compiler/access-builder.h" 5 #include "src/compiler/access-builder.h"
6 6
7 #include "src/compiler/type-cache.h" 7 #include "src/compiler/type-cache.h"
8 #include "src/contexts.h" 8 #include "src/contexts.h"
9 #include "src/frames.h" 9 #include "src/frames.h"
10 #include "src/handles-inl.h" 10 #include "src/handles-inl.h"
11 #include "src/heap/heap.h" 11 #include "src/heap/heap.h"
12 12
13 namespace v8 { 13 namespace v8 {
14 namespace internal { 14 namespace internal {
15 namespace compiler { 15 namespace compiler {
16 16
17 // static 17 // static
18 FieldAccess AccessBuilder::ForExternalDoubleValue() { 18 FieldAccess AccessBuilder::ForExternalDoubleValue() {
19 FieldAccess access = {kUntaggedBase, 0, 19 FieldAccess access = {kUntaggedBase, 0,
20 MaybeHandle<Name>(), Type::Number(), 20 MaybeHandle<Name>(), Type::Number(),
21 MachineType::Float64(), kNoWriteBarrier}; 21 MachineType::Float64(), kNoWriteBarrier};
22 return access; 22 return access;
23 } 23 }
24 24
25 // static 25 // static
26 FieldAccess AccessBuilder::ForMap() { 26 FieldAccess AccessBuilder::ForMap() {
27 FieldAccess access = { 27 FieldAccess access = {
28 kTaggedBase, HeapObject::kMapOffset, MaybeHandle<Name>(), 28 kTaggedBase, HeapObject::kMapOffset, MaybeHandle<Name>(),
29 Type::OtherInternal(), MachineType::AnyTagged(), kMapWriteBarrier}; 29 Type::OtherInternal(), MachineType::TaggedPointer(), kMapWriteBarrier};
30 return access; 30 return access;
31 } 31 }
32 32
33 33
34 // static 34 // static
35 FieldAccess AccessBuilder::ForHeapNumberValue() { 35 FieldAccess AccessBuilder::ForHeapNumberValue() {
36 FieldAccess access = {kTaggedBase, 36 FieldAccess access = {kTaggedBase,
37 HeapNumber::kValueOffset, 37 HeapNumber::kValueOffset,
38 MaybeHandle<Name>(), 38 MaybeHandle<Name>(),
39 TypeCache::Get().kFloat64, 39 TypeCache::Get().kFloat64,
40 MachineType::Float64(), 40 MachineType::Float64(),
41 kNoWriteBarrier}; 41 kNoWriteBarrier};
42 return access; 42 return access;
43 } 43 }
44 44
45 45
46 // static 46 // static
47 FieldAccess AccessBuilder::ForJSObjectProperties() { 47 FieldAccess AccessBuilder::ForJSObjectProperties() {
48 FieldAccess access = { 48 FieldAccess access = {
49 kTaggedBase, JSObject::kPropertiesOffset, MaybeHandle<Name>(), 49 kTaggedBase, JSObject::kPropertiesOffset, MaybeHandle<Name>(),
50 Type::Internal(), MachineType::AnyTagged(), kPointerWriteBarrier}; 50 Type::Internal(), MachineType::TaggedPointer(), kPointerWriteBarrier};
51 return access; 51 return access;
52 } 52 }
53 53
54 54
55 // static 55 // static
56 FieldAccess AccessBuilder::ForJSObjectElements() { 56 FieldAccess AccessBuilder::ForJSObjectElements() {
57 FieldAccess access = { 57 FieldAccess access = {
58 kTaggedBase, JSObject::kElementsOffset, MaybeHandle<Name>(), 58 kTaggedBase, JSObject::kElementsOffset, MaybeHandle<Name>(),
59 Type::Internal(), MachineType::AnyTagged(), kPointerWriteBarrier}; 59 Type::Internal(), MachineType::TaggedPointer(), kPointerWriteBarrier};
60 return access; 60 return access;
61 } 61 }
62 62
63 63
64 // static 64 // static
65 FieldAccess AccessBuilder::ForJSObjectInObjectProperty(Handle<Map> map, 65 FieldAccess AccessBuilder::ForJSObjectInObjectProperty(Handle<Map> map,
66 int index) { 66 int index) {
67 int const offset = map->GetInObjectPropertyOffset(index); 67 int const offset = map->GetInObjectPropertyOffset(index);
68 FieldAccess access = {kTaggedBase, 68 FieldAccess access = {kTaggedBase,
69 offset, 69 offset,
(...skipping 24 matching lines...) Expand all
94 return access; 94 return access;
95 } 95 }
96 96
97 97
98 // static 98 // static
99 FieldAccess AccessBuilder::ForJSFunctionSharedFunctionInfo() { 99 FieldAccess AccessBuilder::ForJSFunctionSharedFunctionInfo() {
100 FieldAccess access = {kTaggedBase, 100 FieldAccess access = {kTaggedBase,
101 JSFunction::kSharedFunctionInfoOffset, 101 JSFunction::kSharedFunctionInfoOffset,
102 Handle<Name>(), 102 Handle<Name>(),
103 Type::OtherInternal(), 103 Type::OtherInternal(),
104 MachineType::AnyTagged(), 104 MachineType::TaggedPointer(),
105 kPointerWriteBarrier}; 105 kPointerWriteBarrier};
106 return access; 106 return access;
107 } 107 }
108 108
109 // static 109 // static
110 FieldAccess AccessBuilder::ForJSFunctionLiterals() { 110 FieldAccess AccessBuilder::ForJSFunctionLiterals() {
111 FieldAccess access = { 111 FieldAccess access = {
112 kTaggedBase, JSFunction::kLiteralsOffset, Handle<Name>(), 112 kTaggedBase, JSFunction::kLiteralsOffset, Handle<Name>(),
113 Type::Internal(), MachineType::AnyTagged(), kPointerWriteBarrier}; 113 Type::Internal(), MachineType::TaggedPointer(), kPointerWriteBarrier};
114 return access; 114 return access;
115 } 115 }
116 116
117 // static 117 // static
118 FieldAccess AccessBuilder::ForJSFunctionCodeEntry() { 118 FieldAccess AccessBuilder::ForJSFunctionCodeEntry() {
119 FieldAccess access = { 119 FieldAccess access = {
120 kTaggedBase, JSFunction::kCodeEntryOffset, Handle<Name>(), 120 kTaggedBase, JSFunction::kCodeEntryOffset, Handle<Name>(),
121 Type::OtherInternal(), MachineType::Pointer(), kNoWriteBarrier}; 121 Type::OtherInternal(), MachineType::Pointer(), kNoWriteBarrier};
122 return access; 122 return access;
123 } 123 }
124 124
125 // static 125 // static
126 FieldAccess AccessBuilder::ForJSFunctionNextFunctionLink() { 126 FieldAccess AccessBuilder::ForJSFunctionNextFunctionLink() {
127 FieldAccess access = {kTaggedBase, 127 FieldAccess access = {kTaggedBase,
128 JSFunction::kNextFunctionLinkOffset, 128 JSFunction::kNextFunctionLinkOffset,
129 Handle<Name>(), 129 Handle<Name>(),
130 Type::Any(), 130 Type::Any(),
131 MachineType::AnyTagged(), 131 MachineType::AnyTagged(),
132 kPointerWriteBarrier}; 132 kPointerWriteBarrier};
133 return access; 133 return access;
134 } 134 }
135 135
136 // static 136 // static
137 FieldAccess AccessBuilder::ForJSGeneratorObjectContext() { 137 FieldAccess AccessBuilder::ForJSGeneratorObjectContext() {
138 FieldAccess access = {kTaggedBase, 138 FieldAccess access = {kTaggedBase,
139 JSGeneratorObject::kContextOffset, 139 JSGeneratorObject::kContextOffset,
140 Handle<Name>(), 140 Handle<Name>(),
141 Type::Internal(), 141 Type::Internal(),
142 MachineType::AnyTagged(), 142 MachineType::TaggedPointer(),
143 kPointerWriteBarrier}; 143 kPointerWriteBarrier};
144 return access; 144 return access;
145 } 145 }
146 146
147 // static 147 // static
148 FieldAccess AccessBuilder::ForJSGeneratorObjectContinuation() { 148 FieldAccess AccessBuilder::ForJSGeneratorObjectContinuation() {
149 TypeCache const& type_cache = TypeCache::Get(); 149 TypeCache const& type_cache = TypeCache::Get();
150 FieldAccess access = {kTaggedBase, 150 FieldAccess access = {kTaggedBase,
151 JSGeneratorObject::kContinuationOffset, 151 JSGeneratorObject::kContinuationOffset,
152 Handle<Name>(), 152 Handle<Name>(),
153 type_cache.kSmi, 153 type_cache.kSmi,
154 MachineType::AnyTagged(), 154 MachineType::TaggedSigned(),
155 kNoWriteBarrier}; 155 kNoWriteBarrier};
156 return access; 156 return access;
157 } 157 }
158 158
159 // static 159 // static
160 FieldAccess AccessBuilder::ForJSGeneratorObjectInputOrDebugPos() { 160 FieldAccess AccessBuilder::ForJSGeneratorObjectInputOrDebugPos() {
161 FieldAccess access = {kTaggedBase, 161 FieldAccess access = {kTaggedBase,
162 JSGeneratorObject::kInputOrDebugPosOffset, 162 JSGeneratorObject::kInputOrDebugPosOffset,
163 Handle<Name>(), 163 Handle<Name>(),
164 Type::NonInternal(), 164 Type::NonInternal(),
165 MachineType::AnyTagged(), 165 MachineType::AnyTagged(),
166 kFullWriteBarrier}; 166 kFullWriteBarrier};
167 return access; 167 return access;
168 } 168 }
169 169
170 // static 170 // static
171 FieldAccess AccessBuilder::ForJSGeneratorObjectOperandStack() { 171 FieldAccess AccessBuilder::ForJSGeneratorObjectOperandStack() {
172 FieldAccess access = {kTaggedBase, 172 FieldAccess access = {kTaggedBase,
173 JSGeneratorObject::kOperandStackOffset, 173 JSGeneratorObject::kOperandStackOffset,
174 Handle<Name>(), 174 Handle<Name>(),
175 Type::Internal(), 175 Type::Internal(),
176 MachineType::AnyTagged(), 176 MachineType::AnyTagged(),
177 kPointerWriteBarrier}; 177 kPointerWriteBarrier};
178 return access; 178 return access;
179 } 179 }
180 180
181 // static 181 // static
182 FieldAccess AccessBuilder::ForJSGeneratorObjectResumeMode() { 182 FieldAccess AccessBuilder::ForJSGeneratorObjectResumeMode() {
183 TypeCache const& type_cache = TypeCache::Get(); 183 TypeCache const& type_cache = TypeCache::Get();
184 FieldAccess access = {kTaggedBase, 184 FieldAccess access = {
185 JSGeneratorObject::kResumeModeOffset, 185 kTaggedBase, JSGeneratorObject::kResumeModeOffset, Handle<Name>(),
186 Handle<Name>(), 186 type_cache.kSmi, MachineType::TaggedSigned(), kNoWriteBarrier};
187 type_cache.kSmi,
188 MachineType::AnyTagged(),
189 kNoWriteBarrier};
190 return access; 187 return access;
191 } 188 }
192 189
193 // static 190 // static
194 FieldAccess AccessBuilder::ForJSArrayLength(ElementsKind elements_kind) { 191 FieldAccess AccessBuilder::ForJSArrayLength(ElementsKind elements_kind) {
195 TypeCache const& type_cache = TypeCache::Get(); 192 TypeCache const& type_cache = TypeCache::Get();
196 FieldAccess access = {kTaggedBase, 193 FieldAccess access = {kTaggedBase,
197 JSArray::kLengthOffset, 194 JSArray::kLengthOffset,
198 Handle<Name>(), 195 Handle<Name>(),
199 type_cache.kJSArrayLengthType, 196 type_cache.kJSArrayLengthType,
200 MachineType::AnyTagged(), 197 MachineType::TaggedSigned(),
201 kFullWriteBarrier}; 198 kFullWriteBarrier};
202 if (IsFastDoubleElementsKind(elements_kind)) { 199 if (IsFastDoubleElementsKind(elements_kind)) {
203 access.type = type_cache.kFixedDoubleArrayLengthType; 200 access.type = type_cache.kFixedDoubleArrayLengthType;
204 access.write_barrier_kind = kNoWriteBarrier; 201 access.write_barrier_kind = kNoWriteBarrier;
205 } else if (IsFastElementsKind(elements_kind)) { 202 } else if (IsFastElementsKind(elements_kind)) {
206 access.type = type_cache.kFixedArrayLengthType; 203 access.type = type_cache.kFixedArrayLengthType;
207 access.write_barrier_kind = kNoWriteBarrier; 204 access.write_barrier_kind = kNoWriteBarrier;
208 } 205 }
209 return access; 206 return access;
210 } 207 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 kFullWriteBarrier}; 258 kFullWriteBarrier};
262 return access; 259 return access;
263 } 260 }
264 261
265 // static 262 // static
266 FieldAccess AccessBuilder::ForJSTypedArrayLength() { 263 FieldAccess AccessBuilder::ForJSTypedArrayLength() {
267 FieldAccess access = {kTaggedBase, 264 FieldAccess access = {kTaggedBase,
268 JSTypedArray::kLengthOffset, 265 JSTypedArray::kLengthOffset,
269 MaybeHandle<Name>(), 266 MaybeHandle<Name>(),
270 TypeCache::Get().kJSTypedArrayLengthType, 267 TypeCache::Get().kJSTypedArrayLengthType,
271 MachineType::AnyTagged(), 268 MachineType::TaggedSigned(),
272 kNoWriteBarrier}; 269 kNoWriteBarrier};
273 return access; 270 return access;
274 } 271 }
275 272
276 // static 273 // static
277 FieldAccess AccessBuilder::ForJSDateValue() { 274 FieldAccess AccessBuilder::ForJSDateValue() {
278 FieldAccess access = {kTaggedBase, 275 FieldAccess access = {kTaggedBase,
279 JSDate::kValueOffset, 276 JSDate::kValueOffset,
280 MaybeHandle<Name>(), 277 MaybeHandle<Name>(),
281 TypeCache::Get().kJSDateValueType, 278 TypeCache::Get().kJSDateValueType,
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 Handle<Name>(), 449 Handle<Name>(),
453 TypeCache::Get().kStringLengthType, 450 TypeCache::Get().kStringLengthType,
454 MachineType::TaggedSigned(), 451 MachineType::TaggedSigned(),
455 kNoWriteBarrier}; 452 kNoWriteBarrier};
456 return access; 453 return access;
457 } 454 }
458 455
459 // static 456 // static
460 FieldAccess AccessBuilder::ForConsStringFirst() { 457 FieldAccess AccessBuilder::ForConsStringFirst() {
461 FieldAccess access = { 458 FieldAccess access = {
462 kTaggedBase, ConsString::kFirstOffset, Handle<Name>(), 459 kTaggedBase, ConsString::kFirstOffset, Handle<Name>(),
463 Type::String(), MachineType::AnyTagged(), kPointerWriteBarrier}; 460 Type::String(), MachineType::TaggedPointer(), kPointerWriteBarrier};
464 return access; 461 return access;
465 } 462 }
466 463
467 // static 464 // static
468 FieldAccess AccessBuilder::ForConsStringSecond() { 465 FieldAccess AccessBuilder::ForConsStringSecond() {
469 FieldAccess access = { 466 FieldAccess access = {
470 kTaggedBase, ConsString::kSecondOffset, Handle<Name>(), 467 kTaggedBase, ConsString::kSecondOffset, Handle<Name>(),
471 Type::String(), MachineType::AnyTagged(), kPointerWriteBarrier}; 468 Type::String(), MachineType::TaggedPointer(), kPointerWriteBarrier};
472 return access; 469 return access;
473 } 470 }
474 471
475 // static 472 // static
476 FieldAccess AccessBuilder::ForSlicedStringOffset() { 473 FieldAccess AccessBuilder::ForSlicedStringOffset() {
477 FieldAccess access = { 474 FieldAccess access = {
478 kTaggedBase, SlicedString::kOffsetOffset, Handle<Name>(), 475 kTaggedBase, SlicedString::kOffsetOffset, Handle<Name>(),
479 Type::SignedSmall(), MachineType::AnyTagged(), kNoWriteBarrier}; 476 Type::SignedSmall(), MachineType::TaggedSigned(), kNoWriteBarrier};
480 return access; 477 return access;
481 } 478 }
482 479
483 // static 480 // static
484 FieldAccess AccessBuilder::ForSlicedStringParent() { 481 FieldAccess AccessBuilder::ForSlicedStringParent() {
485 FieldAccess access = { 482 FieldAccess access = {
486 kTaggedBase, SlicedString::kParentOffset, Handle<Name>(), 483 kTaggedBase, SlicedString::kParentOffset, Handle<Name>(),
487 Type::String(), MachineType::AnyTagged(), kPointerWriteBarrier}; 484 Type::String(), MachineType::TaggedPointer(), kPointerWriteBarrier};
488 return access; 485 return access;
489 } 486 }
490 487
491 // static 488 // static
492 FieldAccess AccessBuilder::ForExternalStringResourceData() { 489 FieldAccess AccessBuilder::ForExternalStringResourceData() {
493 FieldAccess access = {kTaggedBase, 490 FieldAccess access = {kTaggedBase,
494 ExternalString::kResourceDataOffset, 491 ExternalString::kResourceDataOffset,
495 Handle<Name>(), 492 Handle<Name>(),
496 Type::OtherInternal(), 493 Type::OtherInternal(),
497 MachineType::Pointer(), 494 MachineType::Pointer(),
(...skipping 30 matching lines...) Expand all
528 kNoWriteBarrier}; 525 kNoWriteBarrier};
529 return access; 526 return access;
530 } 527 }
531 528
532 // static 529 // static
533 FieldAccess AccessBuilder::ForJSGlobalObjectGlobalProxy() { 530 FieldAccess AccessBuilder::ForJSGlobalObjectGlobalProxy() {
534 FieldAccess access = {kTaggedBase, 531 FieldAccess access = {kTaggedBase,
535 JSGlobalObject::kGlobalProxyOffset, 532 JSGlobalObject::kGlobalProxyOffset,
536 Handle<Name>(), 533 Handle<Name>(),
537 Type::Receiver(), 534 Type::Receiver(),
538 MachineType::AnyTagged(), 535 MachineType::TaggedPointer(),
539 kPointerWriteBarrier}; 536 kPointerWriteBarrier};
540 return access; 537 return access;
541 } 538 }
542 539
543 // static 540 // static
544 FieldAccess AccessBuilder::ForJSGlobalObjectNativeContext() { 541 FieldAccess AccessBuilder::ForJSGlobalObjectNativeContext() {
545 FieldAccess access = {kTaggedBase, 542 FieldAccess access = {kTaggedBase,
546 JSGlobalObject::kNativeContextOffset, 543 JSGlobalObject::kNativeContextOffset,
547 Handle<Name>(), 544 Handle<Name>(),
548 Type::Internal(), 545 Type::Internal(),
549 MachineType::AnyTagged(), 546 MachineType::TaggedPointer(),
550 kPointerWriteBarrier}; 547 kPointerWriteBarrier};
551 return access; 548 return access;
552 } 549 }
553 550
554 551
555 // static 552 // static
556 FieldAccess AccessBuilder::ForValue() { 553 FieldAccess AccessBuilder::ForValue() {
557 FieldAccess access = { 554 FieldAccess access = {
558 kTaggedBase, JSValue::kValueOffset, Handle<Name>(), 555 kTaggedBase, JSValue::kValueOffset, Handle<Name>(),
559 Type::NonInternal(), MachineType::AnyTagged(), kFullWriteBarrier}; 556 Type::NonInternal(), MachineType::AnyTagged(), kFullWriteBarrier};
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 } 726 }
730 UNREACHABLE(); 727 UNREACHABLE();
731 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(), 728 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(),
732 kNoWriteBarrier}; 729 kNoWriteBarrier};
733 return access; 730 return access;
734 } 731 }
735 732
736 } // namespace compiler 733 } // namespace compiler
737 } // namespace internal 734 } // namespace internal
738 } // namespace v8 735 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/compiler/memory-optimizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698