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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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, |
70 MaybeHandle<Name>(), | 70 MaybeHandle<Name>(), |
71 Type::Tagged(), | 71 Type::Any(), |
Benedikt Meurer
2016/09/02 07:31:30
Change this to Type::NonInternal()
mvstanton
2016/09/02 08:03:56
Done.
| |
72 MachineType::AnyTagged(), | 72 MachineType::AnyTagged(), |
73 kFullWriteBarrier}; | 73 kFullWriteBarrier}; |
74 return access; | 74 return access; |
75 } | 75 } |
76 | 76 |
77 | 77 |
78 // static | 78 // static |
79 FieldAccess AccessBuilder::ForJSFunctionPrototypeOrInitialMap() { | 79 FieldAccess AccessBuilder::ForJSFunctionPrototypeOrInitialMap() { |
80 FieldAccess access = {kTaggedBase, | 80 FieldAccess access = {kTaggedBase, |
81 JSFunction::kPrototypeOrInitialMapOffset, | 81 JSFunction::kPrototypeOrInitialMapOffset, |
(...skipping 27 matching lines...) Expand all Loading... | |
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::AnyTagged(), 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 = {kTaggedBase, | 119 FieldAccess access = { |
120 JSFunction::kCodeEntryOffset, | 120 kTaggedBase, JSFunction::kCodeEntryOffset, Handle<Name>(), |
121 Handle<Name>(), | 121 Type::Any(), MachineType::Pointer(), kNoWriteBarrier}; |
Benedikt Meurer
2016/09/02 07:31:29
Type::OtherInternal()
mvstanton
2016/09/02 08:03:56
Done.
| |
122 Type::UntaggedPointer(), | |
123 MachineType::Pointer(), | |
124 kNoWriteBarrier}; | |
125 return access; | 122 return access; |
126 } | 123 } |
127 | 124 |
128 // static | 125 // static |
129 FieldAccess AccessBuilder::ForJSFunctionNextFunctionLink() { | 126 FieldAccess AccessBuilder::ForJSFunctionNextFunctionLink() { |
130 FieldAccess access = {kTaggedBase, | 127 FieldAccess access = {kTaggedBase, |
131 JSFunction::kNextFunctionLinkOffset, | 128 JSFunction::kNextFunctionLinkOffset, |
132 Handle<Name>(), | 129 Handle<Name>(), |
133 Type::Any(), | 130 Type::Any(), |
134 MachineType::AnyTagged(), | 131 MachineType::AnyTagged(), |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
211 } | 208 } |
212 return access; | 209 return access; |
213 } | 210 } |
214 | 211 |
215 | 212 |
216 // static | 213 // static |
217 FieldAccess AccessBuilder::ForJSArrayBufferBackingStore() { | 214 FieldAccess AccessBuilder::ForJSArrayBufferBackingStore() { |
218 FieldAccess access = {kTaggedBase, | 215 FieldAccess access = {kTaggedBase, |
219 JSArrayBuffer::kBackingStoreOffset, | 216 JSArrayBuffer::kBackingStoreOffset, |
220 MaybeHandle<Name>(), | 217 MaybeHandle<Name>(), |
221 Type::UntaggedPointer(), | 218 Type::Any(), |
Benedikt Meurer
2016/09/02 07:31:30
This should also be Type::OtherInternal()
mvstanton
2016/09/02 08:03:56
Done.
| |
222 MachineType::Pointer(), | 219 MachineType::Pointer(), |
223 kNoWriteBarrier}; | 220 kNoWriteBarrier}; |
224 return access; | 221 return access; |
225 } | 222 } |
226 | 223 |
227 // static | 224 // static |
228 FieldAccess AccessBuilder::ForJSArrayBufferBitField() { | 225 FieldAccess AccessBuilder::ForJSArrayBufferBitField() { |
229 FieldAccess access = {kTaggedBase, JSArrayBuffer::kBitFieldOffset, | 226 FieldAccess access = {kTaggedBase, JSArrayBuffer::kBitFieldOffset, |
230 MaybeHandle<Name>(), TypeCache::Get().kUint8, | 227 MaybeHandle<Name>(), TypeCache::Get().kUint8, |
231 MachineType::Uint32(), kNoWriteBarrier}; | 228 MachineType::Uint32(), kNoWriteBarrier}; |
232 return access; | 229 return access; |
233 } | 230 } |
234 | 231 |
235 // static | 232 // static |
236 FieldAccess AccessBuilder::ForJSArrayBufferViewBuffer() { | 233 FieldAccess AccessBuilder::ForJSArrayBufferViewBuffer() { |
237 FieldAccess access = {kTaggedBase, | 234 FieldAccess access = { |
238 JSArrayBufferView::kBufferOffset, | 235 kTaggedBase, JSArrayBufferView::kBufferOffset, MaybeHandle<Name>(), |
239 MaybeHandle<Name>(), | 236 Type::Any(), MachineType::TaggedPointer(), kPointerWriteBarrier}; |
Benedikt Meurer
2016/09/02 07:31:30
Type::OtherInternal()
mvstanton
2016/09/02 08:03:56
Done.
| |
240 Type::TaggedPointer(), | |
241 MachineType::TaggedPointer(), | |
242 kPointerWriteBarrier}; | |
243 return access; | 237 return access; |
244 } | 238 } |
245 | 239 |
246 // static | 240 // static |
247 FieldAccess AccessBuilder::ForJSArrayBufferViewByteLength() { | 241 FieldAccess AccessBuilder::ForJSArrayBufferViewByteLength() { |
248 FieldAccess access = {kTaggedBase, | 242 FieldAccess access = {kTaggedBase, |
249 JSArrayBufferView::kByteLengthOffset, | 243 JSArrayBufferView::kByteLengthOffset, |
250 MaybeHandle<Name>(), | 244 MaybeHandle<Name>(), |
251 TypeCache::Get().kPositiveInteger, | 245 TypeCache::Get().kPositiveInteger, |
252 MachineType::AnyTagged(), | 246 MachineType::AnyTagged(), |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
313 FieldAccess access = { | 307 FieldAccess access = { |
314 kTaggedBase, JSIteratorResult::kValueOffset, MaybeHandle<Name>(), | 308 kTaggedBase, JSIteratorResult::kValueOffset, MaybeHandle<Name>(), |
315 Type::NonInternal(), MachineType::AnyTagged(), kFullWriteBarrier}; | 309 Type::NonInternal(), MachineType::AnyTagged(), kFullWriteBarrier}; |
316 return access; | 310 return access; |
317 } | 311 } |
318 | 312 |
319 | 313 |
320 // static | 314 // static |
321 FieldAccess AccessBuilder::ForJSRegExpFlags() { | 315 FieldAccess AccessBuilder::ForJSRegExpFlags() { |
322 FieldAccess access = { | 316 FieldAccess access = { |
323 kTaggedBase, JSRegExp::kFlagsOffset, MaybeHandle<Name>(), | 317 kTaggedBase, JSRegExp::kFlagsOffset, MaybeHandle<Name>(), |
324 Type::Tagged(), MachineType::AnyTagged(), kFullWriteBarrier}; | 318 Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier}; |
Benedikt Meurer
2016/09/02 07:31:29
Type::NonInternal()
mvstanton
2016/09/02 08:03:55
Done.
| |
325 return access; | 319 return access; |
326 } | 320 } |
327 | 321 |
328 | 322 |
329 // static | 323 // static |
330 FieldAccess AccessBuilder::ForJSRegExpSource() { | 324 FieldAccess AccessBuilder::ForJSRegExpSource() { |
331 FieldAccess access = { | 325 FieldAccess access = { |
332 kTaggedBase, JSRegExp::kSourceOffset, MaybeHandle<Name>(), | 326 kTaggedBase, JSRegExp::kSourceOffset, MaybeHandle<Name>(), |
333 Type::Tagged(), MachineType::AnyTagged(), kFullWriteBarrier}; | 327 Type::Any(), MachineType::AnyTagged(), kFullWriteBarrier}; |
Benedikt Meurer
2016/09/02 07:31:29
Type::NonInternal()
mvstanton
2016/09/02 08:03:55
Done.
| |
334 return access; | 328 return access; |
335 } | 329 } |
336 | 330 |
337 | 331 |
338 // static | 332 // static |
339 FieldAccess AccessBuilder::ForFixedArrayLength() { | 333 FieldAccess AccessBuilder::ForFixedArrayLength() { |
340 FieldAccess access = {kTaggedBase, | 334 FieldAccess access = {kTaggedBase, |
341 FixedArray::kLengthOffset, | 335 FixedArray::kLengthOffset, |
342 MaybeHandle<Name>(), | 336 MaybeHandle<Name>(), |
343 TypeCache::Get().kFixedArrayLengthType, | 337 TypeCache::Get().kFixedArrayLengthType, |
344 MachineType::TaggedSigned(), | 338 MachineType::TaggedSigned(), |
345 kNoWriteBarrier}; | 339 kNoWriteBarrier}; |
346 return access; | 340 return access; |
347 } | 341 } |
348 | 342 |
349 // static | 343 // static |
350 FieldAccess AccessBuilder::ForFixedTypedArrayBaseBasePointer() { | 344 FieldAccess AccessBuilder::ForFixedTypedArrayBaseBasePointer() { |
351 FieldAccess access = {kTaggedBase, | 345 FieldAccess access = {kTaggedBase, |
352 FixedTypedArrayBase::kBasePointerOffset, | 346 FixedTypedArrayBase::kBasePointerOffset, |
353 MaybeHandle<Name>(), | 347 MaybeHandle<Name>(), |
Benedikt Meurer
2016/09/02 07:31:30
Type::OtherInternal()
mvstanton
2016/09/02 08:03:55
Done.
| |
354 Type::Tagged(), | 348 Type::Any(), |
355 MachineType::AnyTagged(), | 349 MachineType::AnyTagged(), |
356 kPointerWriteBarrier}; | 350 kPointerWriteBarrier}; |
357 return access; | 351 return access; |
358 } | 352 } |
359 | 353 |
360 // static | 354 // static |
361 FieldAccess AccessBuilder::ForFixedTypedArrayBaseExternalPointer() { | 355 FieldAccess AccessBuilder::ForFixedTypedArrayBaseExternalPointer() { |
362 FieldAccess access = {kTaggedBase, | 356 FieldAccess access = {kTaggedBase, |
363 FixedTypedArrayBase::kExternalPointerOffset, | 357 FixedTypedArrayBase::kExternalPointerOffset, |
364 MaybeHandle<Name>(), | 358 MaybeHandle<Name>(), |
365 Type::UntaggedPointer(), | 359 Type::Any(), |
Benedikt Meurer
2016/09/02 07:31:30
Type::OtherInternal()
mvstanton
2016/09/02 08:03:56
Done.
| |
366 MachineType::Pointer(), | 360 MachineType::Pointer(), |
367 kNoWriteBarrier}; | 361 kNoWriteBarrier}; |
368 return access; | 362 return access; |
369 } | 363 } |
370 | 364 |
371 // static | 365 // static |
372 FieldAccess AccessBuilder::ForDescriptorArrayEnumCache() { | 366 FieldAccess AccessBuilder::ForDescriptorArrayEnumCache() { |
373 FieldAccess access = {kTaggedBase, | 367 FieldAccess access = { |
374 DescriptorArray::kEnumCacheOffset, | 368 kTaggedBase, DescriptorArray::kEnumCacheOffset, Handle<Name>(), |
375 Handle<Name>(), | 369 Type::Any(), MachineType::TaggedPointer(), kPointerWriteBarrier}; |
Benedikt Meurer
2016/09/02 07:31:30
Type::OtherInternal()
mvstanton
2016/09/02 08:03:56
Done.
| |
376 Type::TaggedPointer(), | |
377 MachineType::TaggedPointer(), | |
378 kPointerWriteBarrier}; | |
379 return access; | 370 return access; |
380 } | 371 } |
381 | 372 |
382 | 373 |
383 // static | 374 // static |
384 FieldAccess AccessBuilder::ForDescriptorArrayEnumCacheBridgeCache() { | 375 FieldAccess AccessBuilder::ForDescriptorArrayEnumCacheBridgeCache() { |
385 FieldAccess access = {kTaggedBase, | 376 FieldAccess access = {kTaggedBase, |
386 DescriptorArray::kEnumCacheBridgeCacheOffset, | 377 DescriptorArray::kEnumCacheBridgeCacheOffset, |
387 Handle<Name>(), | 378 Handle<Name>(), |
388 Type::TaggedPointer(), | 379 Type::Any(), |
Benedikt Meurer
2016/09/02 07:31:30
Type::OtherInternal()
mvstanton
2016/09/02 08:03:56
Done.
| |
389 MachineType::TaggedPointer(), | 380 MachineType::TaggedPointer(), |
390 kPointerWriteBarrier}; | 381 kPointerWriteBarrier}; |
391 return access; | 382 return access; |
392 } | 383 } |
393 | 384 |
394 | 385 |
395 // static | 386 // static |
396 FieldAccess AccessBuilder::ForMapBitField() { | 387 FieldAccess AccessBuilder::ForMapBitField() { |
397 FieldAccess access = {kTaggedBase, Map::kBitFieldOffset, | 388 FieldAccess access = {kTaggedBase, Map::kBitFieldOffset, |
398 Handle<Name>(), TypeCache::Get().kUint8, | 389 Handle<Name>(), TypeCache::Get().kUint8, |
399 MachineType::Uint8(), kNoWriteBarrier}; | 390 MachineType::Uint8(), kNoWriteBarrier}; |
400 return access; | 391 return access; |
401 } | 392 } |
402 | 393 |
403 | 394 |
404 // static | 395 // static |
405 FieldAccess AccessBuilder::ForMapBitField3() { | 396 FieldAccess AccessBuilder::ForMapBitField3() { |
406 FieldAccess access = {kTaggedBase, Map::kBitField3Offset, | 397 FieldAccess access = {kTaggedBase, Map::kBitField3Offset, |
407 Handle<Name>(), TypeCache::Get().kInt32, | 398 Handle<Name>(), TypeCache::Get().kInt32, |
408 MachineType::Int32(), kNoWriteBarrier}; | 399 MachineType::Int32(), kNoWriteBarrier}; |
409 return access; | 400 return access; |
410 } | 401 } |
411 | 402 |
412 | 403 |
413 // static | 404 // static |
414 FieldAccess AccessBuilder::ForMapDescriptors() { | 405 FieldAccess AccessBuilder::ForMapDescriptors() { |
415 FieldAccess access = {kTaggedBase, | 406 FieldAccess access = { |
416 Map::kDescriptorsOffset, | 407 kTaggedBase, Map::kDescriptorsOffset, Handle<Name>(), |
417 Handle<Name>(), | 408 Type::Any(), MachineType::TaggedPointer(), kPointerWriteBarrier}; |
Benedikt Meurer
2016/09/02 07:31:29
Type::OtherInternal()
mvstanton
2016/09/02 08:03:56
Done.
| |
418 Type::TaggedPointer(), | |
419 MachineType::TaggedPointer(), | |
420 kPointerWriteBarrier}; | |
421 return access; | 409 return access; |
422 } | 410 } |
423 | 411 |
424 | 412 |
425 // static | 413 // static |
426 FieldAccess AccessBuilder::ForMapInstanceType() { | 414 FieldAccess AccessBuilder::ForMapInstanceType() { |
427 FieldAccess access = {kTaggedBase, Map::kInstanceTypeOffset, | 415 FieldAccess access = {kTaggedBase, Map::kInstanceTypeOffset, |
428 Handle<Name>(), TypeCache::Get().kUint8, | 416 Handle<Name>(), TypeCache::Get().kUint8, |
429 MachineType::Uint8(), kNoWriteBarrier}; | 417 MachineType::Uint8(), kNoWriteBarrier}; |
430 return access; | 418 return access; |
431 } | 419 } |
432 | 420 |
433 | 421 |
434 // static | 422 // static |
435 FieldAccess AccessBuilder::ForMapPrototype() { | 423 FieldAccess AccessBuilder::ForMapPrototype() { |
436 FieldAccess access = {kTaggedBase, | 424 FieldAccess access = { |
437 Map::kPrototypeOffset, | 425 kTaggedBase, Map::kPrototypeOffset, Handle<Name>(), |
438 Handle<Name>(), | 426 Type::Any(), MachineType::TaggedPointer(), kPointerWriteBarrier}; |
439 Type::TaggedPointer(), | |
440 MachineType::TaggedPointer(), | |
441 kPointerWriteBarrier}; | |
442 return access; | 427 return access; |
443 } | 428 } |
444 | 429 |
445 | 430 |
446 // static | 431 // static |
447 FieldAccess AccessBuilder::ForNameHashField() { | 432 FieldAccess AccessBuilder::ForNameHashField() { |
448 FieldAccess access = {kTaggedBase, Name::kHashFieldOffset, | 433 FieldAccess access = {kTaggedBase, Name::kHashFieldOffset, |
449 Handle<Name>(), Type::Internal(), | 434 Handle<Name>(), Type::Internal(), |
450 MachineType::Uint32(), kNoWriteBarrier}; | 435 MachineType::Uint32(), kNoWriteBarrier}; |
451 return access; | 436 return access; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
492 kTaggedBase, SlicedString::kParentOffset, Handle<Name>(), | 477 kTaggedBase, SlicedString::kParentOffset, Handle<Name>(), |
493 Type::String(), MachineType::AnyTagged(), kPointerWriteBarrier}; | 478 Type::String(), MachineType::AnyTagged(), kPointerWriteBarrier}; |
494 return access; | 479 return access; |
495 } | 480 } |
496 | 481 |
497 // static | 482 // static |
498 FieldAccess AccessBuilder::ForExternalStringResourceData() { | 483 FieldAccess AccessBuilder::ForExternalStringResourceData() { |
499 FieldAccess access = {kTaggedBase, | 484 FieldAccess access = {kTaggedBase, |
500 ExternalString::kResourceDataOffset, | 485 ExternalString::kResourceDataOffset, |
501 Handle<Name>(), | 486 Handle<Name>(), |
502 Type::UntaggedPointer(), | 487 Type::Any(), |
Benedikt Meurer
2016/09/02 07:31:30
Type::OtherInternal()
mvstanton
2016/09/02 08:03:56
Done.
| |
503 MachineType::Pointer(), | 488 MachineType::Pointer(), |
504 kNoWriteBarrier}; | 489 kNoWriteBarrier}; |
505 return access; | 490 return access; |
506 } | 491 } |
507 | 492 |
508 // static | 493 // static |
509 ElementAccess AccessBuilder::ForExternalOneByteStringCharacter() { | 494 ElementAccess AccessBuilder::ForExternalOneByteStringCharacter() { |
510 ElementAccess access = {kUntaggedBase, 0, TypeCache::Get().kUint8, | 495 ElementAccess access = {kUntaggedBase, 0, TypeCache::Get().kUint8, |
511 MachineType::Uint8(), kNoWriteBarrier}; | 496 MachineType::Uint8(), kNoWriteBarrier}; |
512 return access; | 497 return access; |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
739 } | 724 } |
740 UNREACHABLE(); | 725 UNREACHABLE(); |
741 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(), | 726 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(), |
742 kNoWriteBarrier}; | 727 kNoWriteBarrier}; |
743 return access; | 728 return access; |
744 } | 729 } |
745 | 730 |
746 } // namespace compiler | 731 } // namespace compiler |
747 } // namespace internal | 732 } // namespace internal |
748 } // namespace v8 | 733 } // namespace v8 |
OLD | NEW |