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

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

Issue 2258073002: [Turbofan]: Use new MachineTypes in access-builder. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: A bit of refactoring. 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/arm/instruction-selector-arm.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"
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 MachineType::Uint32(), kNoWriteBarrier}; 223 MachineType::Uint32(), kNoWriteBarrier};
224 return access; 224 return access;
225 } 225 }
226 226
227 // static 227 // static
228 FieldAccess AccessBuilder::ForJSArrayBufferViewBuffer() { 228 FieldAccess AccessBuilder::ForJSArrayBufferViewBuffer() {
229 FieldAccess access = {kTaggedBase, 229 FieldAccess access = {kTaggedBase,
230 JSArrayBufferView::kBufferOffset, 230 JSArrayBufferView::kBufferOffset,
231 MaybeHandle<Name>(), 231 MaybeHandle<Name>(),
232 Type::TaggedPointer(), 232 Type::TaggedPointer(),
233 MachineType::AnyTagged(), 233 MachineType::TaggedPointer(),
234 kPointerWriteBarrier}; 234 kPointerWriteBarrier};
235 return access; 235 return access;
236 } 236 }
237 237
238 // static 238 // static
239 FieldAccess AccessBuilder::ForJSArrayBufferViewByteLength() { 239 FieldAccess AccessBuilder::ForJSArrayBufferViewByteLength() {
240 FieldAccess access = {kTaggedBase, 240 FieldAccess access = {kTaggedBase,
241 JSArrayBufferView::kByteLengthOffset, 241 JSArrayBufferView::kByteLengthOffset,
242 MaybeHandle<Name>(), 242 MaybeHandle<Name>(),
243 TypeCache::Get().kPositiveInteger, 243 TypeCache::Get().kPositiveInteger,
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 kNoWriteBarrier}; 359 kNoWriteBarrier};
360 return access; 360 return access;
361 } 361 }
362 362
363 // static 363 // static
364 FieldAccess AccessBuilder::ForDescriptorArrayEnumCache() { 364 FieldAccess AccessBuilder::ForDescriptorArrayEnumCache() {
365 FieldAccess access = {kTaggedBase, 365 FieldAccess access = {kTaggedBase,
366 DescriptorArray::kEnumCacheOffset, 366 DescriptorArray::kEnumCacheOffset,
367 Handle<Name>(), 367 Handle<Name>(),
368 Type::TaggedPointer(), 368 Type::TaggedPointer(),
369 MachineType::AnyTagged(), 369 MachineType::TaggedPointer(),
370 kPointerWriteBarrier}; 370 kPointerWriteBarrier};
371 return access; 371 return access;
372 } 372 }
373 373
374 374
375 // static 375 // static
376 FieldAccess AccessBuilder::ForDescriptorArrayEnumCacheBridgeCache() { 376 FieldAccess AccessBuilder::ForDescriptorArrayEnumCacheBridgeCache() {
377 FieldAccess access = {kTaggedBase, 377 FieldAccess access = {kTaggedBase,
378 DescriptorArray::kEnumCacheBridgeCacheOffset, 378 DescriptorArray::kEnumCacheBridgeCacheOffset,
379 Handle<Name>(), 379 Handle<Name>(),
380 Type::TaggedPointer(), 380 Type::TaggedPointer(),
381 MachineType::AnyTagged(), 381 MachineType::TaggedPointer(),
382 kPointerWriteBarrier}; 382 kPointerWriteBarrier};
383 return access; 383 return access;
384 } 384 }
385 385
386 386
387 // static 387 // static
388 FieldAccess AccessBuilder::ForMapBitField() { 388 FieldAccess AccessBuilder::ForMapBitField() {
389 FieldAccess access = {kTaggedBase, Map::kBitFieldOffset, 389 FieldAccess access = {kTaggedBase, Map::kBitFieldOffset,
390 Handle<Name>(), TypeCache::Get().kUint8, 390 Handle<Name>(), TypeCache::Get().kUint8,
391 MachineType::Uint8(), kNoWriteBarrier}; 391 MachineType::Uint8(), kNoWriteBarrier};
392 return access; 392 return access;
393 } 393 }
394 394
395 395
396 // static 396 // static
397 FieldAccess AccessBuilder::ForMapBitField3() { 397 FieldAccess AccessBuilder::ForMapBitField3() {
398 FieldAccess access = {kTaggedBase, Map::kBitField3Offset, 398 FieldAccess access = {kTaggedBase, Map::kBitField3Offset,
399 Handle<Name>(), TypeCache::Get().kInt32, 399 Handle<Name>(), TypeCache::Get().kInt32,
400 MachineType::Int32(), kNoWriteBarrier}; 400 MachineType::Int32(), kNoWriteBarrier};
401 return access; 401 return access;
402 } 402 }
403 403
404 404
405 // static 405 // static
406 FieldAccess AccessBuilder::ForMapDescriptors() { 406 FieldAccess AccessBuilder::ForMapDescriptors() {
407 FieldAccess access = { 407 FieldAccess access = {kTaggedBase,
408 kTaggedBase, Map::kDescriptorsOffset, Handle<Name>(), 408 Map::kDescriptorsOffset,
409 Type::TaggedPointer(), MachineType::AnyTagged(), kPointerWriteBarrier}; 409 Handle<Name>(),
410 Type::TaggedPointer(),
411 MachineType::TaggedPointer(),
412 kPointerWriteBarrier};
410 return access; 413 return access;
411 } 414 }
412 415
413 416
414 // static 417 // static
415 FieldAccess AccessBuilder::ForMapInstanceType() { 418 FieldAccess AccessBuilder::ForMapInstanceType() {
416 FieldAccess access = {kTaggedBase, Map::kInstanceTypeOffset, 419 FieldAccess access = {kTaggedBase, Map::kInstanceTypeOffset,
417 Handle<Name>(), TypeCache::Get().kUint8, 420 Handle<Name>(), TypeCache::Get().kUint8,
418 MachineType::Uint8(), kNoWriteBarrier}; 421 MachineType::Uint8(), kNoWriteBarrier};
419 return access; 422 return access;
420 } 423 }
421 424
422 425
423 // static 426 // static
424 FieldAccess AccessBuilder::ForMapPrototype() { 427 FieldAccess AccessBuilder::ForMapPrototype() {
425 FieldAccess access = { 428 FieldAccess access = {kTaggedBase,
426 kTaggedBase, Map::kPrototypeOffset, Handle<Name>(), 429 Map::kPrototypeOffset,
427 Type::TaggedPointer(), MachineType::AnyTagged(), kPointerWriteBarrier}; 430 Handle<Name>(),
431 Type::TaggedPointer(),
432 MachineType::TaggedPointer(),
433 kPointerWriteBarrier};
428 return access; 434 return access;
429 } 435 }
430 436
431 437
432 // static 438 // static
433 FieldAccess AccessBuilder::ForNameHashField() { 439 FieldAccess AccessBuilder::ForNameHashField() {
434 FieldAccess access = {kTaggedBase, Name::kHashFieldOffset, 440 FieldAccess access = {kTaggedBase, Name::kHashFieldOffset,
435 Handle<Name>(), Type::Internal(), 441 Handle<Name>(), Type::Internal(),
436 MachineType::Uint32(), kNoWriteBarrier}; 442 MachineType::Uint32(), kNoWriteBarrier};
437 return access; 443 return access;
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 609
604 610
605 // static 611 // static
606 FieldAccess AccessBuilder::ForPropertyCellValue() { 612 FieldAccess AccessBuilder::ForPropertyCellValue() {
607 return ForPropertyCellValue(Type::Tagged()); 613 return ForPropertyCellValue(Type::Tagged());
608 } 614 }
609 615
610 616
611 // static 617 // static
612 FieldAccess AccessBuilder::ForPropertyCellValue(Type* type) { 618 FieldAccess AccessBuilder::ForPropertyCellValue(Type* type) {
619 // Extract representation dimension of {type} into MachineType {r}.
620 MachineType r = MachineType::AnyTagged();
621 WriteBarrierKind w = kFullWriteBarrier;
622 if (type->Is(Type::TaggedSigned())) {
623 r = MachineType::TaggedSigned();
624 w = kNoWriteBarrier;
625 } else if (type->Is(Type::TaggedPointer())) {
626 r = MachineType::TaggedPointer();
627 }
613 FieldAccess access = { 628 FieldAccess access = {
614 kTaggedBase, PropertyCell::kValueOffset, Handle<Name>(), 629 kTaggedBase, PropertyCell::kValueOffset, Handle<Name>(), type, r, w};
615 type, MachineType::AnyTagged(), kFullWriteBarrier};
616 return access; 630 return access;
617 } 631 }
618 632
619 // static 633 // static
620 ElementAccess AccessBuilder::ForFixedArrayElement() { 634 ElementAccess AccessBuilder::ForFixedArrayElement() {
621 ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Tagged(), 635 ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Tagged(),
622 MachineType::AnyTagged(), kFullWriteBarrier}; 636 MachineType::AnyTagged(), kFullWriteBarrier};
623 return access; 637 return access;
624 } 638 }
625 639
626 // static 640 // static
627 ElementAccess AccessBuilder::ForFixedArrayElement(ElementsKind kind) { 641 ElementAccess AccessBuilder::ForFixedArrayElement(ElementsKind kind) {
628 ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Any(), 642 ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Any(),
629 MachineType::AnyTagged(), kFullWriteBarrier}; 643 MachineType::AnyTagged(), kFullWriteBarrier};
630 switch (kind) { 644 switch (kind) {
631 case FAST_SMI_ELEMENTS: 645 case FAST_SMI_ELEMENTS:
632 access.type = TypeCache::Get().kSmi; 646 access.type = TypeCache::Get().kSmi;
647 access.machine_type = MachineType::TaggedSigned();
633 access.write_barrier_kind = kNoWriteBarrier; 648 access.write_barrier_kind = kNoWriteBarrier;
634 break; 649 break;
635 case FAST_HOLEY_SMI_ELEMENTS: 650 case FAST_HOLEY_SMI_ELEMENTS:
636 access.type = TypeCache::Get().kHoleySmi; 651 access.type = TypeCache::Get().kHoleySmi;
637 break; 652 break;
638 case FAST_ELEMENTS: 653 case FAST_ELEMENTS:
639 access.type = Type::NonInternal(); 654 access.type = Type::NonInternal();
640 break; 655 break;
641 case FAST_HOLEY_ELEMENTS: 656 case FAST_HOLEY_ELEMENTS:
642 break; 657 break;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 } 731 }
717 UNREACHABLE(); 732 UNREACHABLE();
718 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(), 733 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(),
719 kNoWriteBarrier}; 734 kNoWriteBarrier};
720 return access; 735 return access;
721 } 736 }
722 737
723 } // namespace compiler 738 } // namespace compiler
724 } // namespace internal 739 } // namespace internal
725 } // namespace v8 740 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/compiler/arm/instruction-selector-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698