Chromium Code Reviews| 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 |