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

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

Issue 2237433003: [turbofan] Utilize type information for alias analysis. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix ASAN redness. Created 4 years, 4 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/access-info.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/contexts.h" 7 #include "src/contexts.h"
8 #include "src/frames.h" 8 #include "src/frames.h"
9 #include "src/handles-inl.h" 9 #include "src/handles-inl.h"
10 #include "src/heap/heap.h" 10 #include "src/heap/heap.h"
11 #include "src/type-cache.h" 11 #include "src/type-cache.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::ForMap() { 18 FieldAccess AccessBuilder::ForMap() {
19 FieldAccess access = { 19 FieldAccess access = {
20 kTaggedBase, HeapObject::kMapOffset, MaybeHandle<Name>(), 20 kTaggedBase, HeapObject::kMapOffset, MaybeHandle<Name>(),
21 Type::Any(), MachineType::AnyTagged(), kMapWriteBarrier}; 21 Type::OtherInternal(), MachineType::AnyTagged(), kMapWriteBarrier};
22 return access; 22 return access;
23 } 23 }
24 24
25 25
26 // static 26 // static
27 FieldAccess AccessBuilder::ForHeapNumberValue() { 27 FieldAccess AccessBuilder::ForHeapNumberValue() {
28 FieldAccess access = {kTaggedBase, 28 FieldAccess access = {kTaggedBase,
29 HeapNumber::kValueOffset, 29 HeapNumber::kValueOffset,
30 MaybeHandle<Name>(), 30 MaybeHandle<Name>(),
31 TypeCache::Get().kFloat64, 31 TypeCache::Get().kFloat64,
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 Type::Internal(), MachineType::AnyTagged(), kPointerWriteBarrier}; 85 Type::Internal(), MachineType::AnyTagged(), kPointerWriteBarrier};
86 return access; 86 return access;
87 } 87 }
88 88
89 89
90 // static 90 // static
91 FieldAccess AccessBuilder::ForJSFunctionSharedFunctionInfo() { 91 FieldAccess AccessBuilder::ForJSFunctionSharedFunctionInfo() {
92 FieldAccess access = {kTaggedBase, 92 FieldAccess access = {kTaggedBase,
93 JSFunction::kSharedFunctionInfoOffset, 93 JSFunction::kSharedFunctionInfoOffset,
94 Handle<Name>(), 94 Handle<Name>(),
95 Type::Any(), 95 Type::OtherInternal(),
96 MachineType::AnyTagged(), 96 MachineType::AnyTagged(),
97 kPointerWriteBarrier}; 97 kPointerWriteBarrier};
98 return access; 98 return access;
99 } 99 }
100 100
101 // static 101 // static
102 FieldAccess AccessBuilder::ForJSFunctionLiterals() { 102 FieldAccess AccessBuilder::ForJSFunctionLiterals() {
103 FieldAccess access = { 103 FieldAccess access = {
104 kTaggedBase, JSFunction::kLiteralsOffset, Handle<Name>(), 104 kTaggedBase, JSFunction::kLiteralsOffset, Handle<Name>(),
105 Type::Internal(), MachineType::AnyTagged(), kPointerWriteBarrier}; 105 Type::Internal(), MachineType::AnyTagged(), kPointerWriteBarrier};
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 MachineType::AnyTagged(), 149 MachineType::AnyTagged(),
150 kNoWriteBarrier}; 150 kNoWriteBarrier};
151 return access; 151 return access;
152 } 152 }
153 153
154 // static 154 // static
155 FieldAccess AccessBuilder::ForJSGeneratorObjectInputOrDebugPos() { 155 FieldAccess AccessBuilder::ForJSGeneratorObjectInputOrDebugPos() {
156 FieldAccess access = {kTaggedBase, 156 FieldAccess access = {kTaggedBase,
157 JSGeneratorObject::kInputOrDebugPosOffset, 157 JSGeneratorObject::kInputOrDebugPosOffset,
158 Handle<Name>(), 158 Handle<Name>(),
159 Type::Any(), 159 Type::NonInternal(),
160 MachineType::AnyTagged(), 160 MachineType::AnyTagged(),
161 kFullWriteBarrier}; 161 kFullWriteBarrier};
162 return access; 162 return access;
163 } 163 }
164 164
165 // static 165 // static
166 FieldAccess AccessBuilder::ForJSGeneratorObjectOperandStack() { 166 FieldAccess AccessBuilder::ForJSGeneratorObjectOperandStack() {
167 FieldAccess access = {kTaggedBase, 167 FieldAccess access = {kTaggedBase,
168 JSGeneratorObject::kOperandStackOffset, 168 JSGeneratorObject::kOperandStackOffset,
169 Handle<Name>(), 169 Handle<Name>(),
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 Type::Number(), 276 Type::Number(),
277 MachineType::AnyTagged(), 277 MachineType::AnyTagged(),
278 kFullWriteBarrier}; 278 kFullWriteBarrier};
279 return access; 279 return access;
280 } 280 }
281 281
282 282
283 // static 283 // static
284 FieldAccess AccessBuilder::ForJSIteratorResultDone() { 284 FieldAccess AccessBuilder::ForJSIteratorResultDone() {
285 FieldAccess access = { 285 FieldAccess access = {
286 kTaggedBase, JSIteratorResult::kDoneOffset, MaybeHandle<Name>(), 286 kTaggedBase, JSIteratorResult::kDoneOffset, MaybeHandle<Name>(),
287 Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier}; 287 Type::NonInternal(), MachineType::AnyTagged(), kFullWriteBarrier};
288 return access; 288 return access;
289 } 289 }
290 290
291 291
292 // static 292 // static
293 FieldAccess AccessBuilder::ForJSIteratorResultValue() { 293 FieldAccess AccessBuilder::ForJSIteratorResultValue() {
294 FieldAccess access = { 294 FieldAccess access = {
295 kTaggedBase, JSIteratorResult::kValueOffset, MaybeHandle<Name>(), 295 kTaggedBase, JSIteratorResult::kValueOffset, MaybeHandle<Name>(),
296 Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier}; 296 Type::NonInternal(), MachineType::AnyTagged(), kFullWriteBarrier};
297 return access; 297 return access;
298 } 298 }
299 299
300 300
301 // static 301 // static
302 FieldAccess AccessBuilder::ForJSRegExpFlags() { 302 FieldAccess AccessBuilder::ForJSRegExpFlags() {
303 FieldAccess access = { 303 FieldAccess access = {
304 kTaggedBase, JSRegExp::kFlagsOffset, MaybeHandle<Name>(), 304 kTaggedBase, JSRegExp::kFlagsOffset, MaybeHandle<Name>(),
305 Type::Tagged(), MachineType::AnyTagged(), kFullWriteBarrier}; 305 Type::Tagged(), MachineType::AnyTagged(), kFullWriteBarrier};
306 return access; 306 return access;
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 Type::Internal(), 529 Type::Internal(),
530 MachineType::AnyTagged(), 530 MachineType::AnyTagged(),
531 kPointerWriteBarrier}; 531 kPointerWriteBarrier};
532 return access; 532 return access;
533 } 533 }
534 534
535 535
536 // static 536 // static
537 FieldAccess AccessBuilder::ForValue() { 537 FieldAccess AccessBuilder::ForValue() {
538 FieldAccess access = { 538 FieldAccess access = {
539 kTaggedBase, JSValue::kValueOffset, Handle<Name>(), 539 kTaggedBase, JSValue::kValueOffset, Handle<Name>(),
540 Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier}; 540 Type::NonInternal(), MachineType::AnyTagged(), kFullWriteBarrier};
541 return access; 541 return access;
542 } 542 }
543 543
544 544
545 // static 545 // static
546 FieldAccess AccessBuilder::ForArgumentsLength() { 546 FieldAccess AccessBuilder::ForArgumentsLength() {
547 FieldAccess access = { 547 FieldAccess access = {
548 kTaggedBase, JSArgumentsObject::kLengthOffset, Handle<Name>(), 548 kTaggedBase, JSArgumentsObject::kLengthOffset, Handle<Name>(),
549 Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier}; 549 Type::NonInternal(), MachineType::AnyTagged(), kFullWriteBarrier};
550 return access; 550 return access;
551 } 551 }
552 552
553 553
554 // static 554 // static
555 FieldAccess AccessBuilder::ForArgumentsCallee() { 555 FieldAccess AccessBuilder::ForArgumentsCallee() {
556 FieldAccess access = {kTaggedBase, 556 FieldAccess access = {kTaggedBase,
557 JSSloppyArgumentsObject::kCalleeOffset, 557 JSSloppyArgumentsObject::kCalleeOffset,
558 Handle<Name>(), 558 Handle<Name>(),
559 Type::Any(), 559 Type::NonInternal(),
560 MachineType::AnyTagged(), 560 MachineType::AnyTagged(),
561 kPointerWriteBarrier}; 561 kPointerWriteBarrier};
562 return access; 562 return access;
563 } 563 }
564 564
565 565
566 // static 566 // static
567 FieldAccess AccessBuilder::ForFixedArraySlot(size_t index) { 567 FieldAccess AccessBuilder::ForFixedArraySlot(size_t index) {
568 int offset = FixedArray::OffsetOfElementAt(static_cast<int>(index)); 568 int offset = FixedArray::OffsetOfElementAt(static_cast<int>(index));
569 FieldAccess access = {kTaggedBase, 569 FieldAccess access = {kTaggedBase,
570 offset, 570 offset,
571 Handle<Name>(), 571 Handle<Name>(),
572 Type::Any(), 572 Type::NonInternal(),
573 MachineType::AnyTagged(), 573 MachineType::AnyTagged(),
574 kFullWriteBarrier}; 574 kFullWriteBarrier};
575 return access; 575 return access;
576 } 576 }
577 577
578 578
579 // static 579 // static
580 FieldAccess AccessBuilder::ForContextSlot(size_t index) { 580 FieldAccess AccessBuilder::ForContextSlot(size_t index) {
581 int offset = Context::kHeaderSize + static_cast<int>(index) * kPointerSize; 581 int offset = Context::kHeaderSize + static_cast<int>(index) * kPointerSize;
582 DCHECK_EQ(offset, 582 DCHECK_EQ(offset,
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 } 672 }
673 UNREACHABLE(); 673 UNREACHABLE();
674 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(), 674 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(),
675 kNoWriteBarrier}; 675 kNoWriteBarrier};
676 return access; 676 return access;
677 } 677 }
678 678
679 } // namespace compiler 679 } // namespace compiler
680 } // namespace internal 680 } // namespace internal
681 } // namespace v8 681 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/compiler/access-info.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698