| OLD | NEW |
| 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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 FieldAccess AccessBuilder::ForJSObjectInObjectProperty(Handle<Map> map, | 77 FieldAccess AccessBuilder::ForJSObjectInObjectProperty(Handle<Map> map, |
| 78 int index) { | 78 int index) { |
| 79 int const offset = map->GetInObjectPropertyOffset(index); | 79 int const offset = map->GetInObjectPropertyOffset(index); |
| 80 FieldAccess access = {kTaggedBase, offset, | 80 FieldAccess access = {kTaggedBase, offset, |
| 81 MaybeHandle<Name>(), MaybeHandle<Map>(), | 81 MaybeHandle<Name>(), MaybeHandle<Map>(), |
| 82 Type::NonInternal(), MachineType::AnyTagged(), | 82 Type::NonInternal(), MachineType::AnyTagged(), |
| 83 kFullWriteBarrier}; | 83 kFullWriteBarrier}; |
| 84 return access; | 84 return access; |
| 85 } | 85 } |
| 86 | 86 |
| 87 // static |
| 88 FieldAccess AccessBuilder::ForJSObjectOffset( |
| 89 int offset, WriteBarrierKind write_barrier_kind) { |
| 90 FieldAccess access = {kTaggedBase, offset, |
| 91 MaybeHandle<Name>(), MaybeHandle<Map>(), |
| 92 Type::NonInternal(), MachineType::AnyTagged(), |
| 93 write_barrier_kind}; |
| 94 return access; |
| 95 } |
| 87 | 96 |
| 88 // static | 97 // static |
| 89 FieldAccess AccessBuilder::ForJSFunctionPrototypeOrInitialMap() { | 98 FieldAccess AccessBuilder::ForJSFunctionPrototypeOrInitialMap() { |
| 90 FieldAccess access = { | 99 FieldAccess access = { |
| 91 kTaggedBase, JSFunction::kPrototypeOrInitialMapOffset, | 100 kTaggedBase, JSFunction::kPrototypeOrInitialMapOffset, |
| 92 MaybeHandle<Name>(), MaybeHandle<Map>(), | 101 MaybeHandle<Name>(), MaybeHandle<Map>(), |
| 93 Type::Any(), MachineType::AnyTagged(), | 102 Type::Any(), MachineType::AnyTagged(), |
| 94 kFullWriteBarrier}; | 103 kFullWriteBarrier}; |
| 95 return access; | 104 return access; |
| 96 } | 105 } |
| (...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 681 FieldAccess access = { | 690 FieldAccess access = { |
| 682 kTaggedBase, JSSloppyArgumentsObject::kCalleeOffset, | 691 kTaggedBase, JSSloppyArgumentsObject::kCalleeOffset, |
| 683 Handle<Name>(), MaybeHandle<Map>(), | 692 Handle<Name>(), MaybeHandle<Map>(), |
| 684 Type::NonInternal(), MachineType::AnyTagged(), | 693 Type::NonInternal(), MachineType::AnyTagged(), |
| 685 kPointerWriteBarrier}; | 694 kPointerWriteBarrier}; |
| 686 return access; | 695 return access; |
| 687 } | 696 } |
| 688 | 697 |
| 689 | 698 |
| 690 // static | 699 // static |
| 691 FieldAccess AccessBuilder::ForFixedArraySlot(size_t index) { | 700 FieldAccess AccessBuilder::ForFixedArraySlot( |
| 701 size_t index, WriteBarrierKind write_barrier_kind) { |
| 692 int offset = FixedArray::OffsetOfElementAt(static_cast<int>(index)); | 702 int offset = FixedArray::OffsetOfElementAt(static_cast<int>(index)); |
| 693 FieldAccess access = {kTaggedBase, offset, | 703 FieldAccess access = {kTaggedBase, offset, |
| 694 Handle<Name>(), MaybeHandle<Map>(), | 704 Handle<Name>(), MaybeHandle<Map>(), |
| 695 Type::NonInternal(), MachineType::AnyTagged(), | 705 Type::NonInternal(), MachineType::AnyTagged(), |
| 696 kFullWriteBarrier}; | 706 write_barrier_kind}; |
| 697 return access; | 707 return access; |
| 698 } | 708 } |
| 699 | 709 |
| 700 | 710 |
| 701 // static | 711 // static |
| 702 FieldAccess AccessBuilder::ForCellValue() { | 712 FieldAccess AccessBuilder::ForCellValue() { |
| 703 FieldAccess access = {kTaggedBase, Cell::kValueOffset, | 713 FieldAccess access = {kTaggedBase, Cell::kValueOffset, |
| 704 Handle<Name>(), MaybeHandle<Map>(), | 714 Handle<Name>(), MaybeHandle<Map>(), |
| 705 Type::Any(), MachineType::AnyTagged(), | 715 Type::Any(), MachineType::AnyTagged(), |
| 706 kFullWriteBarrier}; | 716 kFullWriteBarrier}; |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 836 MachineType::Float64(), kNoWriteBarrier}; | 846 MachineType::Float64(), kNoWriteBarrier}; |
| 837 return access; | 847 return access; |
| 838 } | 848 } |
| 839 } | 849 } |
| 840 UNREACHABLE(); | 850 UNREACHABLE(); |
| 841 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(), | 851 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(), |
| 842 kNoWriteBarrier}; | 852 kNoWriteBarrier}; |
| 843 return access; | 853 return access; |
| 844 } | 854 } |
| 845 | 855 |
| 856 // static |
| 857 FieldAccess AccessBuilder::ForHashTableBaseNumberOfElements() { |
| 858 FieldAccess access = { |
| 859 kTaggedBase, |
| 860 FixedArray::OffsetOfElementAt(HashTableBase::kNumberOfElementsIndex), |
| 861 MaybeHandle<Name>(), |
| 862 MaybeHandle<Map>(), |
| 863 Type::SignedSmall(), |
| 864 MachineType::TaggedSigned(), |
| 865 kNoWriteBarrier}; |
| 866 return access; |
| 867 } |
| 868 |
| 869 // static |
| 870 FieldAccess AccessBuilder::ForHashTableBaseNumberOfDeletedElement() { |
| 871 FieldAccess access = { |
| 872 kTaggedBase, FixedArray::OffsetOfElementAt( |
| 873 HashTableBase::kNumberOfDeletedElementsIndex), |
| 874 MaybeHandle<Name>(), MaybeHandle<Map>(), Type::SignedSmall(), |
| 875 MachineType::TaggedSigned(), kNoWriteBarrier}; |
| 876 return access; |
| 877 } |
| 878 |
| 879 // static |
| 880 FieldAccess AccessBuilder::ForHashTableBaseCapacity() { |
| 881 FieldAccess access = { |
| 882 kTaggedBase, |
| 883 FixedArray::OffsetOfElementAt(HashTableBase::kCapacityIndex), |
| 884 MaybeHandle<Name>(), |
| 885 MaybeHandle<Map>(), |
| 886 Type::SignedSmall(), |
| 887 MachineType::TaggedSigned(), |
| 888 kNoWriteBarrier}; |
| 889 return access; |
| 890 } |
| 891 |
| 892 // static |
| 893 FieldAccess AccessBuilder::ForDictionaryMaxNumberKey() { |
| 894 FieldAccess access = { |
| 895 kTaggedBase, |
| 896 FixedArray::OffsetOfElementAt(NameDictionary::kMaxNumberKeyIndex), |
| 897 MaybeHandle<Name>(), |
| 898 MaybeHandle<Map>(), |
| 899 Type::Any(), |
| 900 MachineType::AnyTagged(), |
| 901 kNoWriteBarrier}; |
| 902 return access; |
| 903 } |
| 904 |
| 905 // static |
| 906 FieldAccess AccessBuilder::ForDictionaryNextEnumerationIndex() { |
| 907 FieldAccess access = { |
| 908 kTaggedBase, |
| 909 FixedArray::OffsetOfElementAt(NameDictionary::kNextEnumerationIndexIndex), |
| 910 MaybeHandle<Name>(), |
| 911 MaybeHandle<Map>(), |
| 912 Type::SignedSmall(), |
| 913 MachineType::TaggedSigned(), |
| 914 kNoWriteBarrier}; |
| 915 return access; |
| 916 } |
| 917 |
| 846 } // namespace compiler | 918 } // namespace compiler |
| 847 } // namespace internal | 919 } // namespace internal |
| 848 } // namespace v8 | 920 } // namespace v8 |
| OLD | NEW |