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

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: Fixed write barrier issue. 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
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/contexts.h" 7 #include "src/contexts.h"
8 #include "src/frames.h" 8 #include "src/frames.h"
9 #include "src/handles-inl.h" 9 #include "src/handles-inl.h"
10 #include "src/heap/heap.h" 10 #include "src/heap/heap.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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 kNoWriteBarrier}; 348 kNoWriteBarrier};
349 return access; 349 return access;
350 } 350 }
351 351
352 // static 352 // static
353 FieldAccess AccessBuilder::ForDescriptorArrayEnumCache() { 353 FieldAccess AccessBuilder::ForDescriptorArrayEnumCache() {
354 FieldAccess access = {kTaggedBase, 354 FieldAccess access = {kTaggedBase,
355 DescriptorArray::kEnumCacheOffset, 355 DescriptorArray::kEnumCacheOffset,
356 Handle<Name>(), 356 Handle<Name>(),
357 Type::TaggedPointer(), 357 Type::TaggedPointer(),
358 MachineType::AnyTagged(), 358 MachineType::TaggedPointer(),
359 kPointerWriteBarrier}; 359 kPointerWriteBarrier};
360 return access; 360 return access;
361 } 361 }
362 362
363 363
364 // static 364 // static
365 FieldAccess AccessBuilder::ForDescriptorArrayEnumCacheBridgeCache() { 365 FieldAccess AccessBuilder::ForDescriptorArrayEnumCacheBridgeCache() {
366 FieldAccess access = {kTaggedBase, 366 FieldAccess access = {kTaggedBase,
367 DescriptorArray::kEnumCacheBridgeCacheOffset, 367 DescriptorArray::kEnumCacheBridgeCacheOffset,
368 Handle<Name>(), 368 Handle<Name>(),
369 Type::TaggedPointer(), 369 Type::TaggedPointer(),
370 MachineType::AnyTagged(), 370 MachineType::TaggedPointer(),
371 kPointerWriteBarrier}; 371 kPointerWriteBarrier};
372 return access; 372 return access;
373 } 373 }
374 374
375 375
376 // static 376 // static
377 FieldAccess AccessBuilder::ForMapBitField() { 377 FieldAccess AccessBuilder::ForMapBitField() {
378 FieldAccess access = {kTaggedBase, Map::kBitFieldOffset, 378 FieldAccess access = {kTaggedBase, Map::kBitFieldOffset,
379 Handle<Name>(), TypeCache::Get().kUint8, 379 Handle<Name>(), TypeCache::Get().kUint8,
380 MachineType::Uint8(), kNoWriteBarrier}; 380 MachineType::Uint8(), kNoWriteBarrier};
381 return access; 381 return access;
382 } 382 }
383 383
384 384
385 // static 385 // static
386 FieldAccess AccessBuilder::ForMapBitField3() { 386 FieldAccess AccessBuilder::ForMapBitField3() {
387 FieldAccess access = {kTaggedBase, Map::kBitField3Offset, 387 FieldAccess access = {kTaggedBase, Map::kBitField3Offset,
388 Handle<Name>(), TypeCache::Get().kInt32, 388 Handle<Name>(), TypeCache::Get().kInt32,
389 MachineType::Int32(), kNoWriteBarrier}; 389 MachineType::Int32(), kNoWriteBarrier};
390 return access; 390 return access;
391 } 391 }
392 392
393 393
394 // static 394 // static
395 FieldAccess AccessBuilder::ForMapDescriptors() { 395 FieldAccess AccessBuilder::ForMapDescriptors() {
396 FieldAccess access = { 396 FieldAccess access = {kTaggedBase,
397 kTaggedBase, Map::kDescriptorsOffset, Handle<Name>(), 397 Map::kDescriptorsOffset,
398 Type::TaggedPointer(), MachineType::AnyTagged(), kPointerWriteBarrier}; 398 Handle<Name>(),
399 Type::TaggedPointer(),
400 MachineType::TaggedPointer(),
401 kPointerWriteBarrier};
399 return access; 402 return access;
400 } 403 }
401 404
402 405
403 // static 406 // static
404 FieldAccess AccessBuilder::ForMapInstanceType() { 407 FieldAccess AccessBuilder::ForMapInstanceType() {
405 FieldAccess access = {kTaggedBase, Map::kInstanceTypeOffset, 408 FieldAccess access = {kTaggedBase, Map::kInstanceTypeOffset,
406 Handle<Name>(), TypeCache::Get().kUint8, 409 Handle<Name>(), TypeCache::Get().kUint8,
407 MachineType::Uint8(), kNoWriteBarrier}; 410 MachineType::Uint8(), kNoWriteBarrier};
408 return access; 411 return access;
409 } 412 }
410 413
411 414
412 // static 415 // static
413 FieldAccess AccessBuilder::ForMapPrototype() { 416 FieldAccess AccessBuilder::ForMapPrototype() {
414 FieldAccess access = { 417 FieldAccess access = {kTaggedBase,
415 kTaggedBase, Map::kPrototypeOffset, Handle<Name>(), 418 Map::kPrototypeOffset,
416 Type::TaggedPointer(), MachineType::AnyTagged(), kPointerWriteBarrier}; 419 Handle<Name>(),
420 Type::TaggedPointer(),
421 MachineType::TaggedPointer(),
422 kPointerWriteBarrier};
417 return access; 423 return access;
418 } 424 }
419 425
420 426
421 // static 427 // static
422 FieldAccess AccessBuilder::ForNameHashField() { 428 FieldAccess AccessBuilder::ForNameHashField() {
423 FieldAccess access = {kTaggedBase, Name::kHashFieldOffset, 429 FieldAccess access = {kTaggedBase, Name::kHashFieldOffset,
424 Handle<Name>(), Type::Internal(), 430 Handle<Name>(), Type::Internal(),
425 MachineType::Uint32(), kNoWriteBarrier}; 431 MachineType::Uint32(), kNoWriteBarrier};
426 return access; 432 return access;
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 598
593 599
594 // static 600 // static
595 FieldAccess AccessBuilder::ForPropertyCellValue() { 601 FieldAccess AccessBuilder::ForPropertyCellValue() {
596 return ForPropertyCellValue(Type::Tagged()); 602 return ForPropertyCellValue(Type::Tagged());
597 } 603 }
598 604
599 605
600 // static 606 // static
601 FieldAccess AccessBuilder::ForPropertyCellValue(Type* type) { 607 FieldAccess AccessBuilder::ForPropertyCellValue(Type* type) {
608 // Extract representation dimension of {type} into MachineType {r}.
609 MachineType r = MachineType::AnyTagged();
610 WriteBarrierKind w = kFullWriteBarrier;
611 if (type->Is(Type::TaggedSigned())) {
612 r = MachineType::TaggedSigned();
613 w = kNoWriteBarrier;
614 } else if (type->Is(Type::TaggedPointer())) {
615 r = MachineType::TaggedPointer();
616 }
602 FieldAccess access = { 617 FieldAccess access = {
603 kTaggedBase, PropertyCell::kValueOffset, Handle<Name>(), 618 kTaggedBase, PropertyCell::kValueOffset, Handle<Name>(), type, r, w};
604 type, MachineType::AnyTagged(), kFullWriteBarrier};
605 return access; 619 return access;
606 } 620 }
607 621
608 // static 622 // static
609 ElementAccess AccessBuilder::ForFixedArrayElement() { 623 ElementAccess AccessBuilder::ForFixedArrayElement() {
610 ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Tagged(), 624 ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Tagged(),
611 MachineType::AnyTagged(), kFullWriteBarrier}; 625 MachineType::AnyTagged(), kFullWriteBarrier};
612 return access; 626 return access;
613 } 627 }
614 628
615 // static 629 // static
616 ElementAccess AccessBuilder::ForFixedArrayElement(ElementsKind kind) { 630 ElementAccess AccessBuilder::ForFixedArrayElement(ElementsKind kind) {
617 ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Any(), 631 ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Any(),
618 MachineType::AnyTagged(), kFullWriteBarrier}; 632 MachineType::AnyTagged(), kFullWriteBarrier};
619 switch (kind) { 633 switch (kind) {
620 case FAST_SMI_ELEMENTS: 634 case FAST_SMI_ELEMENTS:
621 access.type = TypeCache::Get().kSmi; 635 access.type = TypeCache::Get().kSmi;
636 access.machine_type = MachineType::TaggedSigned();
622 access.write_barrier_kind = kNoWriteBarrier; 637 access.write_barrier_kind = kNoWriteBarrier;
623 break; 638 break;
624 case FAST_HOLEY_SMI_ELEMENTS: 639 case FAST_HOLEY_SMI_ELEMENTS:
625 access.type = TypeCache::Get().kHoleySmi; 640 access.type = TypeCache::Get().kHoleySmi;
626 break; 641 break;
627 case FAST_ELEMENTS: 642 case FAST_ELEMENTS:
628 access.type = Type::NonInternal(); 643 access.type = Type::NonInternal();
629 break; 644 break;
630 case FAST_HOLEY_ELEMENTS: 645 case FAST_HOLEY_ELEMENTS:
631 break; 646 break;
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 } 720 }
706 UNREACHABLE(); 721 UNREACHABLE();
707 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(), 722 ElementAccess access = {kUntaggedBase, 0, Type::None(), MachineType::None(),
708 kNoWriteBarrier}; 723 kNoWriteBarrier};
709 return access; 724 return access;
710 } 725 }
711 726
712 } // namespace compiler 727 } // namespace compiler
713 } // namespace internal 728 } // namespace internal
714 } // namespace v8 729 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/compiler/arm/instruction-selector-arm.cc » ('j') | src/compiler/arm/instruction-selector-arm.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698