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

Side by Side Diff: src/compiler/instruction-selector.cc

Issue 1119483003: Revert of [turbofan] add MachineType to AllocatedOperand (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 7 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
« no previous file with comments | « src/compiler/instruction-selector.h ('k') | src/compiler/instruction-selector-impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/instruction-selector.h" 5 #include "src/compiler/instruction-selector.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/base/adapters.h" 9 #include "src/base/adapters.h"
10 #include "src/compiler/instruction-selector-impl.h" 10 #include "src/compiler/instruction-selector-impl.h"
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 234
235 235
236 void InstructionSelector::MarkAsUsed(Node* node) { 236 void InstructionSelector::MarkAsUsed(Node* node) {
237 DCHECK_NOT_NULL(node); 237 DCHECK_NOT_NULL(node);
238 size_t const id = node->id(); 238 size_t const id = node->id();
239 DCHECK_LT(id, used_.size()); 239 DCHECK_LT(id, used_.size());
240 used_[id] = true; 240 used_[id] = true;
241 } 241 }
242 242
243 243
244 bool InstructionSelector::IsDouble(const Node* node) const {
245 DCHECK_NOT_NULL(node);
246 int const virtual_register = virtual_registers_[node->id()];
247 if (virtual_register == InstructionOperand::kInvalidVirtualRegister) {
248 return false;
249 }
250 return sequence()->IsDouble(virtual_register);
251 }
252
253
254 void InstructionSelector::MarkAsDouble(Node* node) {
255 DCHECK_NOT_NULL(node);
256 DCHECK(!IsReference(node));
257 sequence()->MarkAsDouble(GetVirtualRegister(node));
258 }
259
260
261 bool InstructionSelector::IsReference(const Node* node) const {
262 DCHECK_NOT_NULL(node);
263 int const virtual_register = virtual_registers_[node->id()];
264 if (virtual_register == InstructionOperand::kInvalidVirtualRegister) {
265 return false;
266 }
267 return sequence()->IsReference(virtual_register);
268 }
269
270
271 void InstructionSelector::MarkAsReference(Node* node) {
272 DCHECK_NOT_NULL(node);
273 DCHECK(!IsDouble(node));
274 sequence()->MarkAsReference(GetVirtualRegister(node));
275 }
276
277
244 void InstructionSelector::MarkAsRepresentation(MachineType rep, 278 void InstructionSelector::MarkAsRepresentation(MachineType rep,
245 const InstructionOperand& op) { 279 const InstructionOperand& op) {
246 UnallocatedOperand unalloc = UnallocatedOperand::cast(op); 280 UnallocatedOperand unalloc = UnallocatedOperand::cast(op);
247 rep = RepresentationOf(rep); 281 switch (RepresentationOf(rep)) {
248 sequence()->MarkAsRepresentation(rep, unalloc.virtual_register()); 282 case kRepFloat32:
283 case kRepFloat64:
284 sequence()->MarkAsDouble(unalloc.virtual_register());
285 break;
286 case kRepTagged:
287 sequence()->MarkAsReference(unalloc.virtual_register());
288 break;
289 default:
290 break;
291 }
249 } 292 }
250 293
251 294
252 void InstructionSelector::MarkAsRepresentation(MachineType rep, Node* node) { 295 void InstructionSelector::MarkAsRepresentation(MachineType rep, Node* node) {
253 rep = RepresentationOf(rep); 296 DCHECK_NOT_NULL(node);
254 sequence()->MarkAsRepresentation(rep, GetVirtualRegister(node)); 297 switch (RepresentationOf(rep)) {
298 case kRepFloat32:
299 case kRepFloat64:
300 MarkAsDouble(node);
301 break;
302 case kRepTagged:
303 MarkAsReference(node);
304 break;
305 default:
306 break;
307 }
255 } 308 }
256 309
257 310
258 // TODO(bmeurer): Get rid of the CallBuffer business and make 311 // TODO(bmeurer): Get rid of the CallBuffer business and make
259 // InstructionSelector::VisitCall platform independent instead. 312 // InstructionSelector::VisitCall platform independent instead.
260 CallBuffer::CallBuffer(Zone* zone, const CallDescriptor* d, 313 CallBuffer::CallBuffer(Zone* zone, const CallDescriptor* d,
261 FrameStateDescriptor* frame_desc) 314 FrameStateDescriptor* frame_desc)
262 : descriptor(d), 315 : descriptor(d),
263 frame_state_descriptor(frame_desc), 316 frame_state_descriptor(frame_desc),
264 output_nodes(zone), 317 output_nodes(zone),
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 MarkAsRepresentation(type, node); 618 MarkAsRepresentation(type, node);
566 return VisitPhi(node); 619 return VisitPhi(node);
567 } 620 }
568 case IrOpcode::kProjection: 621 case IrOpcode::kProjection:
569 return VisitProjection(node); 622 return VisitProjection(node);
570 case IrOpcode::kInt32Constant: 623 case IrOpcode::kInt32Constant:
571 case IrOpcode::kInt64Constant: 624 case IrOpcode::kInt64Constant:
572 case IrOpcode::kExternalConstant: 625 case IrOpcode::kExternalConstant:
573 return VisitConstant(node); 626 return VisitConstant(node);
574 case IrOpcode::kFloat32Constant: 627 case IrOpcode::kFloat32Constant:
575 return MarkAsFloat32(node), VisitConstant(node); 628 return MarkAsDouble(node), VisitConstant(node);
576 case IrOpcode::kFloat64Constant: 629 case IrOpcode::kFloat64Constant:
577 return MarkAsFloat64(node), VisitConstant(node); 630 return MarkAsDouble(node), VisitConstant(node);
578 case IrOpcode::kHeapConstant: 631 case IrOpcode::kHeapConstant:
579 return MarkAsReference(node), VisitConstant(node); 632 return MarkAsReference(node), VisitConstant(node);
580 case IrOpcode::kNumberConstant: { 633 case IrOpcode::kNumberConstant: {
581 double value = OpParameter<double>(node); 634 double value = OpParameter<double>(node);
582 if (!IsSmiDouble(value)) MarkAsReference(node); 635 if (!IsSmiDouble(value)) MarkAsReference(node);
583 return VisitConstant(node); 636 return VisitConstant(node);
584 } 637 }
585 case IrOpcode::kCall: 638 case IrOpcode::kCall:
586 return VisitCall(node, nullptr); 639 return VisitCall(node, nullptr);
587 case IrOpcode::kFrameState: 640 case IrOpcode::kFrameState:
588 case IrOpcode::kStateValues: 641 case IrOpcode::kStateValues:
589 return; 642 return;
590 case IrOpcode::kLoad: { 643 case IrOpcode::kLoad: {
591 LoadRepresentation rep = OpParameter<LoadRepresentation>(node); 644 LoadRepresentation rep = OpParameter<LoadRepresentation>(node);
592 MarkAsRepresentation(rep, node); 645 MarkAsRepresentation(rep, node);
593 return VisitLoad(node); 646 return VisitLoad(node);
594 } 647 }
595 case IrOpcode::kStore: 648 case IrOpcode::kStore:
596 return VisitStore(node); 649 return VisitStore(node);
597 case IrOpcode::kWord32And: 650 case IrOpcode::kWord32And:
598 return MarkAsWord32(node), VisitWord32And(node); 651 return VisitWord32And(node);
599 case IrOpcode::kWord32Or: 652 case IrOpcode::kWord32Or:
600 return MarkAsWord32(node), VisitWord32Or(node); 653 return VisitWord32Or(node);
601 case IrOpcode::kWord32Xor: 654 case IrOpcode::kWord32Xor:
602 return MarkAsWord32(node), VisitWord32Xor(node); 655 return VisitWord32Xor(node);
603 case IrOpcode::kWord32Shl: 656 case IrOpcode::kWord32Shl:
604 return MarkAsWord32(node), VisitWord32Shl(node); 657 return VisitWord32Shl(node);
605 case IrOpcode::kWord32Shr: 658 case IrOpcode::kWord32Shr:
606 return MarkAsWord32(node), VisitWord32Shr(node); 659 return VisitWord32Shr(node);
607 case IrOpcode::kWord32Sar: 660 case IrOpcode::kWord32Sar:
608 return MarkAsWord32(node), VisitWord32Sar(node); 661 return VisitWord32Sar(node);
609 case IrOpcode::kWord32Ror: 662 case IrOpcode::kWord32Ror:
610 return MarkAsWord32(node), VisitWord32Ror(node); 663 return VisitWord32Ror(node);
611 case IrOpcode::kWord32Equal: 664 case IrOpcode::kWord32Equal:
612 return VisitWord32Equal(node); 665 return VisitWord32Equal(node);
613 case IrOpcode::kWord32Clz: 666 case IrOpcode::kWord32Clz:
614 return MarkAsWord32(node), VisitWord32Clz(node); 667 return VisitWord32Clz(node);
615 case IrOpcode::kWord64And: 668 case IrOpcode::kWord64And:
616 return MarkAsWord64(node), VisitWord64And(node); 669 return VisitWord64And(node);
617 case IrOpcode::kWord64Or: 670 case IrOpcode::kWord64Or:
618 return MarkAsWord64(node), VisitWord64Or(node); 671 return VisitWord64Or(node);
619 case IrOpcode::kWord64Xor: 672 case IrOpcode::kWord64Xor:
620 return MarkAsWord64(node), VisitWord64Xor(node); 673 return VisitWord64Xor(node);
621 case IrOpcode::kWord64Shl: 674 case IrOpcode::kWord64Shl:
622 return MarkAsWord64(node), VisitWord64Shl(node); 675 return VisitWord64Shl(node);
623 case IrOpcode::kWord64Shr: 676 case IrOpcode::kWord64Shr:
624 return MarkAsWord64(node), VisitWord64Shr(node); 677 return VisitWord64Shr(node);
625 case IrOpcode::kWord64Sar: 678 case IrOpcode::kWord64Sar:
626 return MarkAsWord64(node), VisitWord64Sar(node); 679 return VisitWord64Sar(node);
627 case IrOpcode::kWord64Ror: 680 case IrOpcode::kWord64Ror:
628 return MarkAsWord64(node), VisitWord64Ror(node); 681 return VisitWord64Ror(node);
629 case IrOpcode::kWord64Equal: 682 case IrOpcode::kWord64Equal:
630 return VisitWord64Equal(node); 683 return VisitWord64Equal(node);
631 case IrOpcode::kInt32Add: 684 case IrOpcode::kInt32Add:
632 return MarkAsWord32(node), VisitInt32Add(node); 685 return VisitInt32Add(node);
633 case IrOpcode::kInt32AddWithOverflow: 686 case IrOpcode::kInt32AddWithOverflow:
634 return MarkAsWord32(node), VisitInt32AddWithOverflow(node); 687 return VisitInt32AddWithOverflow(node);
635 case IrOpcode::kInt32Sub: 688 case IrOpcode::kInt32Sub:
636 return MarkAsWord32(node), VisitInt32Sub(node); 689 return VisitInt32Sub(node);
637 case IrOpcode::kInt32SubWithOverflow: 690 case IrOpcode::kInt32SubWithOverflow:
638 return VisitInt32SubWithOverflow(node); 691 return VisitInt32SubWithOverflow(node);
639 case IrOpcode::kInt32Mul: 692 case IrOpcode::kInt32Mul:
640 return MarkAsWord32(node), VisitInt32Mul(node); 693 return VisitInt32Mul(node);
641 case IrOpcode::kInt32MulHigh: 694 case IrOpcode::kInt32MulHigh:
642 return VisitInt32MulHigh(node); 695 return VisitInt32MulHigh(node);
643 case IrOpcode::kInt32Div: 696 case IrOpcode::kInt32Div:
644 return MarkAsWord32(node), VisitInt32Div(node); 697 return VisitInt32Div(node);
645 case IrOpcode::kInt32Mod: 698 case IrOpcode::kInt32Mod:
646 return MarkAsWord32(node), VisitInt32Mod(node); 699 return VisitInt32Mod(node);
647 case IrOpcode::kInt32LessThan: 700 case IrOpcode::kInt32LessThan:
648 return VisitInt32LessThan(node); 701 return VisitInt32LessThan(node);
649 case IrOpcode::kInt32LessThanOrEqual: 702 case IrOpcode::kInt32LessThanOrEqual:
650 return VisitInt32LessThanOrEqual(node); 703 return VisitInt32LessThanOrEqual(node);
651 case IrOpcode::kUint32Div: 704 case IrOpcode::kUint32Div:
652 return MarkAsWord32(node), VisitUint32Div(node); 705 return VisitUint32Div(node);
653 case IrOpcode::kUint32LessThan: 706 case IrOpcode::kUint32LessThan:
654 return VisitUint32LessThan(node); 707 return VisitUint32LessThan(node);
655 case IrOpcode::kUint32LessThanOrEqual: 708 case IrOpcode::kUint32LessThanOrEqual:
656 return VisitUint32LessThanOrEqual(node); 709 return VisitUint32LessThanOrEqual(node);
657 case IrOpcode::kUint32Mod: 710 case IrOpcode::kUint32Mod:
658 return MarkAsWord32(node), VisitUint32Mod(node); 711 return VisitUint32Mod(node);
659 case IrOpcode::kUint32MulHigh: 712 case IrOpcode::kUint32MulHigh:
660 return VisitUint32MulHigh(node); 713 return VisitUint32MulHigh(node);
661 case IrOpcode::kInt64Add: 714 case IrOpcode::kInt64Add:
662 return MarkAsWord64(node), VisitInt64Add(node); 715 return VisitInt64Add(node);
663 case IrOpcode::kInt64Sub: 716 case IrOpcode::kInt64Sub:
664 return MarkAsWord64(node), VisitInt64Sub(node); 717 return VisitInt64Sub(node);
665 case IrOpcode::kInt64Mul: 718 case IrOpcode::kInt64Mul:
666 return MarkAsWord64(node), VisitInt64Mul(node); 719 return VisitInt64Mul(node);
667 case IrOpcode::kInt64Div: 720 case IrOpcode::kInt64Div:
668 return MarkAsWord64(node), VisitInt64Div(node); 721 return VisitInt64Div(node);
669 case IrOpcode::kInt64Mod: 722 case IrOpcode::kInt64Mod:
670 return MarkAsWord64(node), VisitInt64Mod(node); 723 return VisitInt64Mod(node);
671 case IrOpcode::kInt64LessThan: 724 case IrOpcode::kInt64LessThan:
672 return VisitInt64LessThan(node); 725 return VisitInt64LessThan(node);
673 case IrOpcode::kInt64LessThanOrEqual: 726 case IrOpcode::kInt64LessThanOrEqual:
674 return VisitInt64LessThanOrEqual(node); 727 return VisitInt64LessThanOrEqual(node);
675 case IrOpcode::kUint64Div: 728 case IrOpcode::kUint64Div:
676 return MarkAsWord64(node), VisitUint64Div(node); 729 return VisitUint64Div(node);
677 case IrOpcode::kUint64LessThan: 730 case IrOpcode::kUint64LessThan:
678 return VisitUint64LessThan(node); 731 return VisitUint64LessThan(node);
679 case IrOpcode::kUint64Mod: 732 case IrOpcode::kUint64Mod:
680 return MarkAsWord64(node), VisitUint64Mod(node); 733 return VisitUint64Mod(node);
681 case IrOpcode::kChangeFloat32ToFloat64: 734 case IrOpcode::kChangeFloat32ToFloat64:
682 return MarkAsFloat64(node), VisitChangeFloat32ToFloat64(node); 735 return MarkAsDouble(node), VisitChangeFloat32ToFloat64(node);
683 case IrOpcode::kChangeInt32ToFloat64: 736 case IrOpcode::kChangeInt32ToFloat64:
684 return MarkAsFloat64(node), VisitChangeInt32ToFloat64(node); 737 return MarkAsDouble(node), VisitChangeInt32ToFloat64(node);
685 case IrOpcode::kChangeUint32ToFloat64: 738 case IrOpcode::kChangeUint32ToFloat64:
686 return MarkAsFloat64(node), VisitChangeUint32ToFloat64(node); 739 return MarkAsDouble(node), VisitChangeUint32ToFloat64(node);
687 case IrOpcode::kChangeFloat64ToInt32: 740 case IrOpcode::kChangeFloat64ToInt32:
688 return MarkAsWord32(node), VisitChangeFloat64ToInt32(node); 741 return VisitChangeFloat64ToInt32(node);
689 case IrOpcode::kChangeFloat64ToUint32: 742 case IrOpcode::kChangeFloat64ToUint32:
690 return MarkAsWord32(node), VisitChangeFloat64ToUint32(node); 743 return VisitChangeFloat64ToUint32(node);
691 case IrOpcode::kChangeInt32ToInt64: 744 case IrOpcode::kChangeInt32ToInt64:
692 return MarkAsWord64(node), VisitChangeInt32ToInt64(node); 745 return VisitChangeInt32ToInt64(node);
693 case IrOpcode::kChangeUint32ToUint64: 746 case IrOpcode::kChangeUint32ToUint64:
694 return MarkAsWord64(node), VisitChangeUint32ToUint64(node); 747 return VisitChangeUint32ToUint64(node);
695 case IrOpcode::kTruncateFloat64ToFloat32: 748 case IrOpcode::kTruncateFloat64ToFloat32:
696 return MarkAsFloat32(node), VisitTruncateFloat64ToFloat32(node); 749 return MarkAsDouble(node), VisitTruncateFloat64ToFloat32(node);
697 case IrOpcode::kTruncateFloat64ToInt32: 750 case IrOpcode::kTruncateFloat64ToInt32:
698 return MarkAsWord32(node), VisitTruncateFloat64ToInt32(node); 751 return VisitTruncateFloat64ToInt32(node);
699 case IrOpcode::kTruncateInt64ToInt32: 752 case IrOpcode::kTruncateInt64ToInt32:
700 return MarkAsWord32(node), VisitTruncateInt64ToInt32(node); 753 return VisitTruncateInt64ToInt32(node);
701 case IrOpcode::kFloat32Add: 754 case IrOpcode::kFloat32Add:
702 return MarkAsFloat32(node), VisitFloat32Add(node); 755 return MarkAsDouble(node), VisitFloat32Add(node);
703 case IrOpcode::kFloat32Sub: 756 case IrOpcode::kFloat32Sub:
704 return MarkAsFloat32(node), VisitFloat32Sub(node); 757 return MarkAsDouble(node), VisitFloat32Sub(node);
705 case IrOpcode::kFloat32Mul: 758 case IrOpcode::kFloat32Mul:
706 return MarkAsFloat32(node), VisitFloat32Mul(node); 759 return MarkAsDouble(node), VisitFloat32Mul(node);
707 case IrOpcode::kFloat32Div: 760 case IrOpcode::kFloat32Div:
708 return MarkAsFloat32(node), VisitFloat32Div(node); 761 return MarkAsDouble(node), VisitFloat32Div(node);
709 case IrOpcode::kFloat32Min: 762 case IrOpcode::kFloat32Min:
710 return MarkAsFloat32(node), VisitFloat32Min(node); 763 return MarkAsDouble(node), VisitFloat32Min(node);
711 case IrOpcode::kFloat32Max: 764 case IrOpcode::kFloat32Max:
712 return MarkAsFloat32(node), VisitFloat32Max(node); 765 return MarkAsDouble(node), VisitFloat32Max(node);
713 case IrOpcode::kFloat32Abs: 766 case IrOpcode::kFloat32Abs:
714 return MarkAsFloat32(node), VisitFloat32Abs(node); 767 return MarkAsDouble(node), VisitFloat32Abs(node);
715 case IrOpcode::kFloat32Sqrt: 768 case IrOpcode::kFloat32Sqrt:
716 return MarkAsFloat32(node), VisitFloat32Sqrt(node); 769 return MarkAsDouble(node), VisitFloat32Sqrt(node);
717 case IrOpcode::kFloat32Equal: 770 case IrOpcode::kFloat32Equal:
718 return VisitFloat32Equal(node); 771 return VisitFloat32Equal(node);
719 case IrOpcode::kFloat32LessThan: 772 case IrOpcode::kFloat32LessThan:
720 return VisitFloat32LessThan(node); 773 return VisitFloat32LessThan(node);
721 case IrOpcode::kFloat32LessThanOrEqual: 774 case IrOpcode::kFloat32LessThanOrEqual:
722 return VisitFloat32LessThanOrEqual(node); 775 return VisitFloat32LessThanOrEqual(node);
723 case IrOpcode::kFloat64Add: 776 case IrOpcode::kFloat64Add:
724 return MarkAsFloat64(node), VisitFloat64Add(node); 777 return MarkAsDouble(node), VisitFloat64Add(node);
725 case IrOpcode::kFloat64Sub: 778 case IrOpcode::kFloat64Sub:
726 return MarkAsFloat64(node), VisitFloat64Sub(node); 779 return MarkAsDouble(node), VisitFloat64Sub(node);
727 case IrOpcode::kFloat64Mul: 780 case IrOpcode::kFloat64Mul:
728 return MarkAsFloat64(node), VisitFloat64Mul(node); 781 return MarkAsDouble(node), VisitFloat64Mul(node);
729 case IrOpcode::kFloat64Div: 782 case IrOpcode::kFloat64Div:
730 return MarkAsFloat64(node), VisitFloat64Div(node); 783 return MarkAsDouble(node), VisitFloat64Div(node);
731 case IrOpcode::kFloat64Mod: 784 case IrOpcode::kFloat64Mod:
732 return MarkAsFloat64(node), VisitFloat64Mod(node); 785 return MarkAsDouble(node), VisitFloat64Mod(node);
733 case IrOpcode::kFloat64Min: 786 case IrOpcode::kFloat64Min:
734 return MarkAsFloat64(node), VisitFloat64Min(node); 787 return MarkAsDouble(node), VisitFloat64Min(node);
735 case IrOpcode::kFloat64Max: 788 case IrOpcode::kFloat64Max:
736 return MarkAsFloat64(node), VisitFloat64Max(node); 789 return MarkAsDouble(node), VisitFloat64Max(node);
737 case IrOpcode::kFloat64Abs: 790 case IrOpcode::kFloat64Abs:
738 return MarkAsFloat64(node), VisitFloat64Abs(node); 791 return MarkAsDouble(node), VisitFloat64Abs(node);
739 case IrOpcode::kFloat64Sqrt: 792 case IrOpcode::kFloat64Sqrt:
740 return MarkAsFloat64(node), VisitFloat64Sqrt(node); 793 return MarkAsDouble(node), VisitFloat64Sqrt(node);
741 case IrOpcode::kFloat64Equal: 794 case IrOpcode::kFloat64Equal:
742 return VisitFloat64Equal(node); 795 return VisitFloat64Equal(node);
743 case IrOpcode::kFloat64LessThan: 796 case IrOpcode::kFloat64LessThan:
744 return VisitFloat64LessThan(node); 797 return VisitFloat64LessThan(node);
745 case IrOpcode::kFloat64LessThanOrEqual: 798 case IrOpcode::kFloat64LessThanOrEqual:
746 return VisitFloat64LessThanOrEqual(node); 799 return VisitFloat64LessThanOrEqual(node);
747 case IrOpcode::kFloat64RoundDown: 800 case IrOpcode::kFloat64RoundDown:
748 return MarkAsFloat64(node), VisitFloat64RoundDown(node); 801 return MarkAsDouble(node), VisitFloat64RoundDown(node);
749 case IrOpcode::kFloat64RoundTruncate: 802 case IrOpcode::kFloat64RoundTruncate:
750 return MarkAsFloat64(node), VisitFloat64RoundTruncate(node); 803 return MarkAsDouble(node), VisitFloat64RoundTruncate(node);
751 case IrOpcode::kFloat64RoundTiesAway: 804 case IrOpcode::kFloat64RoundTiesAway:
752 return MarkAsFloat64(node), VisitFloat64RoundTiesAway(node); 805 return MarkAsDouble(node), VisitFloat64RoundTiesAway(node);
753 case IrOpcode::kFloat64ExtractLowWord32: 806 case IrOpcode::kFloat64ExtractLowWord32:
754 return MarkAsWord32(node), VisitFloat64ExtractLowWord32(node); 807 return VisitFloat64ExtractLowWord32(node);
755 case IrOpcode::kFloat64ExtractHighWord32: 808 case IrOpcode::kFloat64ExtractHighWord32:
756 return MarkAsWord32(node), VisitFloat64ExtractHighWord32(node); 809 return VisitFloat64ExtractHighWord32(node);
757 case IrOpcode::kFloat64InsertLowWord32: 810 case IrOpcode::kFloat64InsertLowWord32:
758 return MarkAsFloat64(node), VisitFloat64InsertLowWord32(node); 811 return MarkAsDouble(node), VisitFloat64InsertLowWord32(node);
759 case IrOpcode::kFloat64InsertHighWord32: 812 case IrOpcode::kFloat64InsertHighWord32:
760 return MarkAsFloat64(node), VisitFloat64InsertHighWord32(node); 813 return MarkAsDouble(node), VisitFloat64InsertHighWord32(node);
761 case IrOpcode::kLoadStackPointer: 814 case IrOpcode::kLoadStackPointer:
762 return VisitLoadStackPointer(node); 815 return VisitLoadStackPointer(node);
763 case IrOpcode::kCheckedLoad: { 816 case IrOpcode::kCheckedLoad: {
764 MachineType rep = OpParameter<MachineType>(node); 817 MachineType rep = OpParameter<MachineType>(node);
765 MarkAsRepresentation(rep, node); 818 MarkAsRepresentation(rep, node);
766 return VisitCheckedLoad(node); 819 return VisitCheckedLoad(node);
767 } 820 }
768 case IrOpcode::kCheckedStore: 821 case IrOpcode::kCheckedStore:
769 return VisitCheckedStore(node); 822 return VisitCheckedStore(node);
770 default: 823 default:
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
1139 MachineOperatorBuilder::Flags 1192 MachineOperatorBuilder::Flags
1140 InstructionSelector::SupportedMachineOperatorFlags() { 1193 InstructionSelector::SupportedMachineOperatorFlags() {
1141 return MachineOperatorBuilder::Flag::kNoFlags; 1194 return MachineOperatorBuilder::Flag::kNoFlags;
1142 } 1195 }
1143 1196
1144 #endif // !V8_TURBOFAN_BACKEND 1197 #endif // !V8_TURBOFAN_BACKEND
1145 1198
1146 } // namespace compiler 1199 } // namespace compiler
1147 } // namespace internal 1200 } // namespace internal
1148 } // namespace v8 1201 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/instruction-selector.h ('k') | src/compiler/instruction-selector-impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698