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 #include "src/types-inl.h" | 6 #include "src/types-inl.h" |
7 | 7 |
8 namespace v8 { | 8 namespace v8 { |
9 namespace internal { | 9 namespace internal { |
10 namespace compiler { | 10 namespace compiler { |
(...skipping 20 matching lines...) Expand all Loading... |
31 | 31 |
32 | 32 |
33 // static | 33 // static |
34 FieldAccess AccessBuilder::ForJSFunctionContext() { | 34 FieldAccess AccessBuilder::ForJSFunctionContext() { |
35 return {kTaggedBase, JSFunction::kContextOffset, MaybeHandle<Name>(), | 35 return {kTaggedBase, JSFunction::kContextOffset, MaybeHandle<Name>(), |
36 Type::Internal(), kMachAnyTagged}; | 36 Type::Internal(), kMachAnyTagged}; |
37 } | 37 } |
38 | 38 |
39 | 39 |
40 // static | 40 // static |
| 41 FieldAccess AccessBuilder::ForJSFunctionSharedFunctionInfo() { |
| 42 return {kTaggedBase, JSFunction::kSharedFunctionInfoOffset, Handle<Name>(), |
| 43 Type::Any(), kMachAnyTagged}; |
| 44 } |
| 45 |
| 46 |
| 47 // static |
41 FieldAccess AccessBuilder::ForJSArrayBufferBackingStore() { | 48 FieldAccess AccessBuilder::ForJSArrayBufferBackingStore() { |
42 return {kTaggedBase, JSArrayBuffer::kBackingStoreOffset, MaybeHandle<Name>(), | 49 return {kTaggedBase, JSArrayBuffer::kBackingStoreOffset, MaybeHandle<Name>(), |
43 Type::UntaggedPointer(), kMachPtr}; | 50 Type::UntaggedPointer(), kMachPtr}; |
44 } | 51 } |
45 | 52 |
46 | 53 |
47 // static | 54 // static |
48 FieldAccess AccessBuilder::ForJSDateField(JSDate::FieldIndex index) { | 55 FieldAccess AccessBuilder::ForJSDateField(JSDate::FieldIndex index) { |
49 return {kTaggedBase, JSDate::kValueOffset + index * kPointerSize, | 56 return {kTaggedBase, JSDate::kValueOffset + index * kPointerSize, |
50 MaybeHandle<Name>(), Type::Number(), kMachAnyTagged}; | 57 MaybeHandle<Name>(), Type::Number(), kMachAnyTagged}; |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 // static | 129 // static |
123 FieldAccess AccessBuilder::ForContextSlot(size_t index) { | 130 FieldAccess AccessBuilder::ForContextSlot(size_t index) { |
124 int offset = Context::kHeaderSize + static_cast<int>(index) * kPointerSize; | 131 int offset = Context::kHeaderSize + static_cast<int>(index) * kPointerSize; |
125 DCHECK_EQ(offset, | 132 DCHECK_EQ(offset, |
126 Context::SlotOffset(static_cast<int>(index)) + kHeapObjectTag); | 133 Context::SlotOffset(static_cast<int>(index)) + kHeapObjectTag); |
127 return {kTaggedBase, offset, Handle<Name>(), Type::Any(), kMachAnyTagged}; | 134 return {kTaggedBase, offset, Handle<Name>(), Type::Any(), kMachAnyTagged}; |
128 } | 135 } |
129 | 136 |
130 | 137 |
131 // static | 138 // static |
132 FieldAccess AccessBuilder::ForStatsCounter() { | |
133 return {kUntaggedBase, 0, MaybeHandle<Name>(), Type::Signed32(), kMachInt32}; | |
134 } | |
135 | |
136 | |
137 // static | |
138 FieldAccess AccessBuilder::ForPropertyCellValue() { | 139 FieldAccess AccessBuilder::ForPropertyCellValue() { |
139 return {kTaggedBase, PropertyCell::kValueOffset, Handle<Name>(), Type::Any(), | 140 return {kTaggedBase, PropertyCell::kValueOffset, Handle<Name>(), Type::Any(), |
140 kMachAnyTagged}; | 141 kMachAnyTagged}; |
141 } | 142 } |
142 | 143 |
143 | 144 |
| 145 // static |
| 146 FieldAccess AccessBuilder::ForSharedFunctionInfoTypeFeedbackVector() { |
| 147 return {kTaggedBase, SharedFunctionInfo::kFeedbackVectorOffset, |
| 148 Handle<Name>(), Type::Any(), kMachAnyTagged}; |
| 149 } |
| 150 |
| 151 |
144 // static | 152 // static |
145 ElementAccess AccessBuilder::ForFixedArrayElement() { | 153 ElementAccess AccessBuilder::ForFixedArrayElement() { |
146 return {kTaggedBase, FixedArray::kHeaderSize, Type::Any(), kMachAnyTagged}; | 154 return {kTaggedBase, FixedArray::kHeaderSize, Type::Any(), kMachAnyTagged}; |
147 } | 155 } |
148 | 156 |
149 | 157 |
150 // static | 158 // static |
151 ElementAccess AccessBuilder::ForTypedArrayElement(ExternalArrayType type, | 159 ElementAccess AccessBuilder::ForTypedArrayElement(ExternalArrayType type, |
152 bool is_external) { | 160 bool is_external) { |
153 BaseTaggedness taggedness = is_external ? kUntaggedBase : kTaggedBase; | 161 BaseTaggedness taggedness = is_external ? kUntaggedBase : kTaggedBase; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 case String::TWO_BYTE_ENCODING: | 193 case String::TWO_BYTE_ENCODING: |
186 return {kTaggedBase, SeqString::kHeaderSize, Type::Unsigned32(), | 194 return {kTaggedBase, SeqString::kHeaderSize, Type::Unsigned32(), |
187 kMachUint16}; | 195 kMachUint16}; |
188 } | 196 } |
189 UNREACHABLE(); | 197 UNREACHABLE(); |
190 return {kUntaggedBase, 0, Type::None(), kMachNone}; | 198 return {kUntaggedBase, 0, Type::None(), kMachNone}; |
191 } | 199 } |
192 | 200 |
193 | 201 |
194 // static | 202 // static |
195 FieldAccess AccessBuilder::ForJSFunctionSharedFunctionInfo() { | 203 FieldAccess AccessBuilder::ForStatsCounter() { |
196 return {kTaggedBase, JSFunction::kSharedFunctionInfoOffset, Handle<Name>(), | 204 return {kUntaggedBase, 0, MaybeHandle<Name>(), Type::Signed32(), kMachInt32}; |
197 Type::Any(), kMachAnyTagged}; | |
198 } | 205 } |
199 | 206 |
200 | 207 |
201 // static | |
202 FieldAccess AccessBuilder::ForSharedFunctionInfoTypeFeedbackVector() { | |
203 return {kTaggedBase, SharedFunctionInfo::kFeedbackVectorOffset, | |
204 Handle<Name>(), Type::Any(), kMachAnyTagged}; | |
205 } | |
206 | |
207 | |
208 // static | 208 // static |
209 FieldAccess AccessBuilder::ForFrameCallerFramePtr() { | 209 FieldAccess AccessBuilder::ForFrameCallerFramePtr() { |
210 return {kUntaggedBase, StandardFrameConstants::kCallerFPOffset, | 210 return {kUntaggedBase, StandardFrameConstants::kCallerFPOffset, |
211 MaybeHandle<Name>(), Type::Internal(), kMachPtr}; | 211 MaybeHandle<Name>(), Type::Internal(), kMachPtr}; |
212 } | 212 } |
213 | 213 |
214 | 214 |
215 // static | 215 // static |
216 FieldAccess AccessBuilder::ForFrameMarker() { | 216 FieldAccess AccessBuilder::ForFrameMarker() { |
217 return {kUntaggedBase, StandardFrameConstants::kMarkerOffset, | 217 return {kUntaggedBase, StandardFrameConstants::kMarkerOffset, |
218 MaybeHandle<Name>(), Type::Tagged(), kMachAnyTagged}; | 218 MaybeHandle<Name>(), Type::Tagged(), kMachAnyTagged}; |
219 } | 219 } |
220 | 220 |
221 } // namespace compiler | 221 } // namespace compiler |
222 } // namespace internal | 222 } // namespace internal |
223 } // namespace v8 | 223 } // namespace v8 |
OLD | NEW |