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

Side by Side Diff: src/x64/lithium-x64.h

Issue 6322008: Version 3.0.10... (Closed) Base URL: http://v8.googlecode.com/svn/trunk/
Patch Set: Created 9 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « src/x64/lithium-codegen-x64.cc ('k') | src/x64/lithium-x64.cc » ('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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 } 328 }
329 329
330 private: 330 private:
331 SetOncePointer<LEnvironment> environment_; 331 SetOncePointer<LEnvironment> environment_;
332 SetOncePointer<LPointerMap> pointer_map_; 332 SetOncePointer<LPointerMap> pointer_map_;
333 HValue* hydrogen_value_; 333 HValue* hydrogen_value_;
334 SetOncePointer<LEnvironment> deoptimization_environment_; 334 SetOncePointer<LEnvironment> deoptimization_environment_;
335 }; 335 };
336 336
337 337
338 template<typename T, int N> 338 template<typename ElementType, int NumElements>
339 class OperandContainer { 339 class OperandContainer {
340 public: 340 public:
341 OperandContainer() { 341 OperandContainer() {
342 for (int i = 0; i < N; i++) elems_[i] = NULL; 342 for (int i = 0; i < NumElements; i++) elems_[i] = NULL;
343 } 343 }
344 int length() { return N; } 344 int length() { return NumElements; }
345 T& operator[](int i) { 345 ElementType& operator[](int i) {
346 ASSERT(i < length()); 346 ASSERT(i < length());
347 return elems_[i]; 347 return elems_[i];
348 } 348 }
349 void PrintOperandsTo(StringStream* stream); 349 void PrintOperandsTo(StringStream* stream);
350 350
351 private: 351 private:
352 T elems_[N]; 352 ElementType elems_[NumElements];
353 }; 353 };
354 354
355 355
356 template<typename T> 356 template<typename ElementType>
357 class OperandContainer<T, 0> { 357 class OperandContainer<ElementType, 0> {
358 public: 358 public:
359 int length() { return 0; } 359 int length() { return 0; }
360 void PrintOperandsTo(StringStream* stream) { } 360 void PrintOperandsTo(StringStream* stream) { }
361 }; 361 };
362 362
363 363
364 template<int R, int I, int T = 0> 364 // R = number of result operands (0 or 1).
365 // I = number of input operands.
366 // T = number of temporary operands.
367 template<int R, int I, int T>
365 class LTemplateInstruction: public LInstruction { 368 class LTemplateInstruction: public LInstruction {
366 public: 369 public:
367 // Allow 0 or 1 output operands. 370 // Allow 0 or 1 output operands.
368 STATIC_ASSERT(R == 0 || R == 1); 371 STATIC_ASSERT(R == 0 || R == 1);
369 virtual bool HasResult() const { return R != 0; } 372 virtual bool HasResult() const { return R != 0; }
370 void set_result(LOperand* operand) { results_[0] = operand; } 373 void set_result(LOperand* operand) { results_[0] = operand; }
371 LOperand* result() { return results_[0]; } 374 LOperand* result() { return results_[0]; }
372 375
373 int InputCount() { return I; } 376 int InputCount() { return I; }
374 LOperand* InputAt(int i) { return inputs_[i]; } 377 LOperand* InputAt(int i) { return inputs_[i]; }
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 } 508 }
506 }; 509 };
507 510
508 511
509 class LUnknownOSRValue: public LTemplateInstruction<1, 0, 0> { 512 class LUnknownOSRValue: public LTemplateInstruction<1, 0, 0> {
510 public: 513 public:
511 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value") 514 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value")
512 }; 515 };
513 516
514 517
515 template<int I, int T = 0> 518 template<int I, int T>
516 class LControlInstruction: public LTemplateInstruction<0, I, T> { 519 class LControlInstruction: public LTemplateInstruction<0, I, T> {
517 public: 520 public:
518 DECLARE_INSTRUCTION(ControlInstruction) 521 DECLARE_INSTRUCTION(ControlInstruction)
519 virtual bool IsControl() const { return true; } 522 virtual bool IsControl() const { return true; }
520 523
521 int true_block_id() const { return true_block_id_; } 524 int true_block_id() const { return true_block_id_; }
522 int false_block_id() const { return false_block_id_; } 525 int false_block_id() const { return false_block_id_; }
523 void SetBranchTargets(int true_block_id, int false_block_id) { 526 void SetBranchTargets(int true_block_id, int false_block_id) {
524 true_block_id_ = true_block_id; 527 true_block_id_ = true_block_id;
525 false_block_id_ = false_block_id; 528 false_block_id_ = false_block_id;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 DECLARE_CONCRETE_INSTRUCTION(AccessArgumentsAt, "access-arguments-at") 566 DECLARE_CONCRETE_INSTRUCTION(AccessArgumentsAt, "access-arguments-at")
564 567
565 LOperand* arguments() { return inputs_[0]; } 568 LOperand* arguments() { return inputs_[0]; }
566 LOperand* length() { return inputs_[1]; } 569 LOperand* length() { return inputs_[1]; }
567 LOperand* index() { return inputs_[2]; } 570 LOperand* index() { return inputs_[2]; }
568 571
569 virtual void PrintDataTo(StringStream* stream); 572 virtual void PrintDataTo(StringStream* stream);
570 }; 573 };
571 574
572 575
573 class LArgumentsLength: public LTemplateInstruction<1, 1> { 576 class LArgumentsLength: public LTemplateInstruction<1, 1, 0> {
574 public: 577 public:
575 explicit LArgumentsLength(LOperand* elements) { 578 explicit LArgumentsLength(LOperand* elements) {
576 inputs_[0] = elements; 579 inputs_[0] = elements;
577 } 580 }
578 581
579 DECLARE_CONCRETE_INSTRUCTION(ArgumentsLength, "arguments-length") 582 DECLARE_CONCRETE_INSTRUCTION(ArgumentsLength, "arguments-length")
580 }; 583 };
581 584
582 585
583 class LArgumentsElements: public LTemplateInstruction<1, 0, 0> { 586 class LArgumentsElements: public LTemplateInstruction<1, 0, 0> {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 inputs_[0] = left; 623 inputs_[0] = left;
621 inputs_[1] = right; 624 inputs_[1] = right;
622 temps_[0] = temp; 625 temps_[0] = temp;
623 } 626 }
624 627
625 DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-i") 628 DECLARE_CONCRETE_INSTRUCTION(MulI, "mul-i")
626 DECLARE_HYDROGEN_ACCESSOR(Mul) 629 DECLARE_HYDROGEN_ACCESSOR(Mul)
627 }; 630 };
628 631
629 632
630 class LCmpID: public LTemplateInstruction<1, 2> { 633 class LCmpID: public LTemplateInstruction<1, 2, 0> {
631 public: 634 public:
632 LCmpID(LOperand* left, LOperand* right) { 635 LCmpID(LOperand* left, LOperand* right) {
633 inputs_[0] = left; 636 inputs_[0] = left;
634 inputs_[1] = right; 637 inputs_[1] = right;
635 } 638 }
636 639
637 DECLARE_CONCRETE_INSTRUCTION(CmpID, "cmp-id") 640 DECLARE_CONCRETE_INSTRUCTION(CmpID, "cmp-id")
638 DECLARE_HYDROGEN_ACCESSOR(Compare) 641 DECLARE_HYDROGEN_ACCESSOR(Compare)
639 642
640 Token::Value op() const { return hydrogen()->token(); } 643 Token::Value op() const { return hydrogen()->token(); }
641 bool is_double() const { 644 bool is_double() const {
642 return hydrogen()->GetInputRepresentation().IsDouble(); 645 return hydrogen()->GetInputRepresentation().IsDouble();
643 } 646 }
644 }; 647 };
645 648
646 649
647 class LCmpIDAndBranch: public LControlInstruction<2> { 650 class LCmpIDAndBranch: public LControlInstruction<2, 0> {
648 public: 651 public:
649 LCmpIDAndBranch(LOperand* left, LOperand* right) { 652 LCmpIDAndBranch(LOperand* left, LOperand* right) {
650 inputs_[0] = left; 653 inputs_[0] = left;
651 inputs_[1] = right; 654 inputs_[1] = right;
652 } 655 }
653 656
654 DECLARE_CONCRETE_INSTRUCTION(CmpIDAndBranch, "cmp-id-and-branch") 657 DECLARE_CONCRETE_INSTRUCTION(CmpIDAndBranch, "cmp-id-and-branch")
655 DECLARE_HYDROGEN_ACCESSOR(Compare) 658 DECLARE_HYDROGEN_ACCESSOR(Compare)
656 659
657 Token::Value op() const { return hydrogen()->token(); } 660 Token::Value op() const { return hydrogen()->token(); }
658 bool is_double() const { 661 bool is_double() const {
659 return hydrogen()->GetInputRepresentation().IsDouble(); 662 return hydrogen()->GetInputRepresentation().IsDouble();
660 } 663 }
661 664
662 virtual void PrintDataTo(StringStream* stream); 665 virtual void PrintDataTo(StringStream* stream);
663 }; 666 };
664 667
665 668
666 class LUnaryMathOperation: public LTemplateInstruction<1, 1> { 669 class LUnaryMathOperation: public LTemplateInstruction<1, 1, 0> {
667 public: 670 public:
668 explicit LUnaryMathOperation(LOperand* value) { 671 explicit LUnaryMathOperation(LOperand* value) {
669 inputs_[0] = value; 672 inputs_[0] = value;
670 } 673 }
671 674
672 DECLARE_CONCRETE_INSTRUCTION(UnaryMathOperation, "unary-math-operation") 675 DECLARE_CONCRETE_INSTRUCTION(UnaryMathOperation, "unary-math-operation")
673 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) 676 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation)
674 677
675 virtual void PrintDataTo(StringStream* stream); 678 virtual void PrintDataTo(StringStream* stream);
676 BuiltinFunctionId op() const { return hydrogen()->op(); } 679 BuiltinFunctionId op() const { return hydrogen()->op(); }
677 }; 680 };
678 681
679 682
680 class LCmpJSObjectEq: public LTemplateInstruction<1, 2> { 683 class LCmpJSObjectEq: public LTemplateInstruction<1, 2, 0> {
681 public: 684 public:
682 LCmpJSObjectEq(LOperand* left, LOperand* right) { 685 LCmpJSObjectEq(LOperand* left, LOperand* right) {
683 inputs_[0] = left; 686 inputs_[0] = left;
684 inputs_[1] = right; 687 inputs_[1] = right;
685 } 688 }
686 689
687 DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEq, "cmp-jsobject-eq") 690 DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEq, "cmp-jsobject-eq")
688 }; 691 };
689 692
690 693
691 class LCmpJSObjectEqAndBranch: public LControlInstruction<2> { 694 class LCmpJSObjectEqAndBranch: public LControlInstruction<2, 0> {
692 public: 695 public:
693 LCmpJSObjectEqAndBranch(LOperand* left, LOperand* right) { 696 LCmpJSObjectEqAndBranch(LOperand* left, LOperand* right) {
694 inputs_[0] = left; 697 inputs_[0] = left;
695 inputs_[1] = right; 698 inputs_[1] = right;
696 } 699 }
697 700
698 DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEqAndBranch, 701 DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEqAndBranch,
699 "cmp-jsobject-eq-and-branch") 702 "cmp-jsobject-eq-and-branch")
700 }; 703 };
701 704
702 705
703 class LIsNull: public LTemplateInstruction<1, 1> { 706 class LIsNull: public LTemplateInstruction<1, 1, 0> {
704 public: 707 public:
705 explicit LIsNull(LOperand* value) { 708 explicit LIsNull(LOperand* value) {
706 inputs_[0] = value; 709 inputs_[0] = value;
707 } 710 }
708 711
709 DECLARE_CONCRETE_INSTRUCTION(IsNull, "is-null") 712 DECLARE_CONCRETE_INSTRUCTION(IsNull, "is-null")
710 DECLARE_HYDROGEN_ACCESSOR(IsNull) 713 DECLARE_HYDROGEN_ACCESSOR(IsNull)
711 714
712 bool is_strict() const { return hydrogen()->is_strict(); } 715 bool is_strict() const { return hydrogen()->is_strict(); }
713 }; 716 };
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 temps_[0] = temp; 750 temps_[0] = temp;
748 temps_[1] = temp2; 751 temps_[1] = temp2;
749 } 752 }
750 753
751 DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch") 754 DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
752 755
753 virtual void PrintDataTo(StringStream* stream); 756 virtual void PrintDataTo(StringStream* stream);
754 }; 757 };
755 758
756 759
757 class LIsSmi: public LTemplateInstruction<1, 1> { 760 class LIsSmi: public LTemplateInstruction<1, 1, 0> {
758 public: 761 public:
759 explicit LIsSmi(LOperand* value) { 762 explicit LIsSmi(LOperand* value) {
760 inputs_[0] = value; 763 inputs_[0] = value;
761 } 764 }
762 765
763 DECLARE_CONCRETE_INSTRUCTION(IsSmi, "is-smi") 766 DECLARE_CONCRETE_INSTRUCTION(IsSmi, "is-smi")
764 DECLARE_HYDROGEN_ACCESSOR(IsSmi) 767 DECLARE_HYDROGEN_ACCESSOR(IsSmi)
765 }; 768 };
766 769
767 770
768 class LIsSmiAndBranch: public LControlInstruction<1> { 771 class LIsSmiAndBranch: public LControlInstruction<1, 0> {
769 public: 772 public:
770 explicit LIsSmiAndBranch(LOperand* value) { 773 explicit LIsSmiAndBranch(LOperand* value) {
771 inputs_[0] = value; 774 inputs_[0] = value;
772 } 775 }
773 776
774 DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch") 777 DECLARE_CONCRETE_INSTRUCTION(IsSmiAndBranch, "is-smi-and-branch")
775 778
776 virtual void PrintDataTo(StringStream* stream); 779 virtual void PrintDataTo(StringStream* stream);
777 }; 780 };
778 781
779 782
780 class LHasInstanceType: public LTemplateInstruction<1, 1> { 783 class LHasInstanceType: public LTemplateInstruction<1, 1, 0> {
781 public: 784 public:
782 explicit LHasInstanceType(LOperand* value) { 785 explicit LHasInstanceType(LOperand* value) {
783 inputs_[0] = value; 786 inputs_[0] = value;
784 } 787 }
785 788
786 DECLARE_CONCRETE_INSTRUCTION(HasInstanceType, "has-instance-type") 789 DECLARE_CONCRETE_INSTRUCTION(HasInstanceType, "has-instance-type")
787 DECLARE_HYDROGEN_ACCESSOR(HasInstanceType) 790 DECLARE_HYDROGEN_ACCESSOR(HasInstanceType)
788 }; 791 };
789 792
790 793
791 class LHasInstanceTypeAndBranch: public LControlInstruction<1, 1> { 794 class LHasInstanceTypeAndBranch: public LControlInstruction<1, 0> {
792 public: 795 public:
793 LHasInstanceTypeAndBranch(LOperand* value, LOperand* temp) { 796 explicit LHasInstanceTypeAndBranch(LOperand* value) {
794 inputs_[0] = value; 797 inputs_[0] = value;
795 temps_[0] = temp;
796 } 798 }
797 799
798 DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch, 800 DECLARE_CONCRETE_INSTRUCTION(HasInstanceTypeAndBranch,
799 "has-instance-type-and-branch") 801 "has-instance-type-and-branch")
800 DECLARE_HYDROGEN_ACCESSOR(HasInstanceType) 802 DECLARE_HYDROGEN_ACCESSOR(HasInstanceType)
801 803
802 virtual void PrintDataTo(StringStream* stream); 804 virtual void PrintDataTo(StringStream* stream);
803 }; 805 };
804 806
805 807
806 class LHasCachedArrayIndex: public LTemplateInstruction<1, 1> { 808 class LHasCachedArrayIndex: public LTemplateInstruction<1, 1, 0> {
807 public: 809 public:
808 explicit LHasCachedArrayIndex(LOperand* value) { 810 explicit LHasCachedArrayIndex(LOperand* value) {
809 inputs_[0] = value; 811 inputs_[0] = value;
810 } 812 }
811 813
812 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndex, "has-cached-array-index") 814 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndex, "has-cached-array-index")
813 DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndex) 815 DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndex)
814 }; 816 };
815 817
816 818
817 class LHasCachedArrayIndexAndBranch: public LControlInstruction<1> { 819 class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> {
818 public: 820 public:
819 explicit LHasCachedArrayIndexAndBranch(LOperand* value) { 821 explicit LHasCachedArrayIndexAndBranch(LOperand* value) {
820 inputs_[0] = value; 822 inputs_[0] = value;
821 } 823 }
822 824
823 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch, 825 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch,
824 "has-cached-array-index-and-branch") 826 "has-cached-array-index-and-branch")
825 virtual void PrintDataTo(StringStream* stream); 827 virtual void PrintDataTo(StringStream* stream);
826 }; 828 };
827 829
828 830
829 class LClassOfTest: public LTemplateInstruction<1, 1, 1> { 831 class LClassOfTest: public LTemplateInstruction<1, 1, 1> {
830 public: 832 public:
831 LClassOfTest(LOperand* value, LOperand* temp) { 833 LClassOfTest(LOperand* value, LOperand* temp) {
832 inputs_[0] = value; 834 inputs_[0] = value;
833 temps_[0] = temp; 835 temps_[0] = temp;
834 } 836 }
835 837
836 DECLARE_CONCRETE_INSTRUCTION(ClassOfTest, "class-of-test") 838 DECLARE_CONCRETE_INSTRUCTION(ClassOfTest, "class-of-test")
837 DECLARE_HYDROGEN_ACCESSOR(ClassOfTest) 839 DECLARE_HYDROGEN_ACCESSOR(ClassOfTest)
838 840
839 virtual void PrintDataTo(StringStream* stream); 841 virtual void PrintDataTo(StringStream* stream);
840 }; 842 };
841 843
842 844
843 class LClassOfTestAndBranch: public LControlInstruction<1, 2> { 845 class LClassOfTestAndBranch: public LControlInstruction<1, 1> {
844 public: 846 public:
845 LClassOfTestAndBranch(LOperand* value, LOperand* temp, LOperand* temp2) { 847 LClassOfTestAndBranch(LOperand* value, LOperand* temp) {
846 inputs_[0] = value; 848 inputs_[0] = value;
847 temps_[0] = temp; 849 temps_[0] = temp;
848 temps_[1] = temp2;
849 } 850 }
850 851
851 DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch, 852 DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
852 "class-of-test-and-branch") 853 "class-of-test-and-branch")
853 DECLARE_HYDROGEN_ACCESSOR(ClassOfTest) 854 DECLARE_HYDROGEN_ACCESSOR(ClassOfTest)
854 855
855 virtual void PrintDataTo(StringStream* stream); 856 virtual void PrintDataTo(StringStream* stream);
856 }; 857 };
857 858
858 859
859 class LCmpT: public LTemplateInstruction<1, 2> { 860 class LCmpT: public LTemplateInstruction<1, 2, 0> {
860 public: 861 public:
861 LCmpT(LOperand* left, LOperand* right) { 862 LCmpT(LOperand* left, LOperand* right) {
862 inputs_[0] = left; 863 inputs_[0] = left;
863 inputs_[1] = right; 864 inputs_[1] = right;
864 } 865 }
865 866
866 DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t") 867 DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t")
867 DECLARE_HYDROGEN_ACCESSOR(Compare) 868 DECLARE_HYDROGEN_ACCESSOR(Compare)
868 869
869 Token::Value op() const { return hydrogen()->token(); } 870 Token::Value op() const { return hydrogen()->token(); }
870 }; 871 };
871 872
872 873
873 class LCmpTAndBranch: public LControlInstruction<2> { 874 class LCmpTAndBranch: public LControlInstruction<2, 0> {
874 public: 875 public:
875 LCmpTAndBranch(LOperand* left, LOperand* right) { 876 LCmpTAndBranch(LOperand* left, LOperand* right) {
876 inputs_[0] = left; 877 inputs_[0] = left;
877 inputs_[1] = right; 878 inputs_[1] = right;
878 } 879 }
879 880
880 DECLARE_CONCRETE_INSTRUCTION(CmpTAndBranch, "cmp-t-and-branch") 881 DECLARE_CONCRETE_INSTRUCTION(CmpTAndBranch, "cmp-t-and-branch")
881 DECLARE_HYDROGEN_ACCESSOR(Compare) 882 DECLARE_HYDROGEN_ACCESSOR(Compare)
882 883
883 Token::Value op() const { return hydrogen()->token(); } 884 Token::Value op() const { return hydrogen()->token(); }
884 }; 885 };
885 886
886 887
887 class LInstanceOf: public LTemplateInstruction<1, 2> { 888 class LInstanceOf: public LTemplateInstruction<1, 2, 0> {
888 public: 889 public:
889 LInstanceOf(LOperand* left, LOperand* right) { 890 LInstanceOf(LOperand* left, LOperand* right) {
890 inputs_[0] = left; 891 inputs_[0] = left;
891 inputs_[1] = right; 892 inputs_[1] = right;
892 } 893 }
893 894
894 DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of") 895 DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of")
895 }; 896 };
896 897
897 898
898 class LInstanceOfAndBranch: public LControlInstruction<2> { 899 class LInstanceOfAndBranch: public LControlInstruction<2, 0> {
899 public: 900 public:
900 LInstanceOfAndBranch(LOperand* left, LOperand* right) { 901 LInstanceOfAndBranch(LOperand* left, LOperand* right) {
901 inputs_[0] = left; 902 inputs_[0] = left;
902 inputs_[1] = right; 903 inputs_[1] = right;
903 } 904 }
904 905
905 DECLARE_CONCRETE_INSTRUCTION(InstanceOfAndBranch, "instance-of-and-branch") 906 DECLARE_CONCRETE_INSTRUCTION(InstanceOfAndBranch, "instance-of-and-branch")
906 }; 907 };
907 908
908 909
(...skipping 19 matching lines...) Expand all
928 inputs_[1] = length; 929 inputs_[1] = length;
929 } 930 }
930 931
931 LOperand* index() { return inputs_[0]; } 932 LOperand* index() { return inputs_[0]; }
932 LOperand* length() { return inputs_[1]; } 933 LOperand* length() { return inputs_[1]; }
933 934
934 DECLARE_CONCRETE_INSTRUCTION(BoundsCheck, "bounds-check") 935 DECLARE_CONCRETE_INSTRUCTION(BoundsCheck, "bounds-check")
935 }; 936 };
936 937
937 938
938 class LBitI: public LTemplateInstruction<1, 2> { 939 class LBitI: public LTemplateInstruction<1, 2, 0> {
939 public: 940 public:
940 LBitI(Token::Value op, LOperand* left, LOperand* right) 941 LBitI(Token::Value op, LOperand* left, LOperand* right)
941 : op_(op) { 942 : op_(op) {
942 inputs_[0] = left; 943 inputs_[0] = left;
943 inputs_[1] = right; 944 inputs_[1] = right;
944 } 945 }
945 946
946 Token::Value op() const { return op_; } 947 Token::Value op() const { return op_; }
947 948
948 DECLARE_CONCRETE_INSTRUCTION(BitI, "bit-i") 949 DECLARE_CONCRETE_INSTRUCTION(BitI, "bit-i")
949 950
950 private: 951 private:
951 Token::Value op_; 952 Token::Value op_;
952 }; 953 };
953 954
954 955
955 class LShiftI: public LTemplateInstruction<1, 2> { 956 class LShiftI: public LTemplateInstruction<1, 2, 0> {
956 public: 957 public:
957 LShiftI(Token::Value op, LOperand* left, LOperand* right, bool can_deopt) 958 LShiftI(Token::Value op, LOperand* left, LOperand* right, bool can_deopt)
958 : op_(op), can_deopt_(can_deopt) { 959 : op_(op), can_deopt_(can_deopt) {
959 inputs_[0] = left; 960 inputs_[0] = left;
960 inputs_[1] = right; 961 inputs_[1] = right;
961 } 962 }
962 963
963 Token::Value op() const { return op_; } 964 Token::Value op() const { return op_; }
964 965
965 bool can_deopt() const { return can_deopt_; } 966 bool can_deopt() const { return can_deopt_; }
966 967
967 DECLARE_CONCRETE_INSTRUCTION(ShiftI, "shift-i") 968 DECLARE_CONCRETE_INSTRUCTION(ShiftI, "shift-i")
968 969
969 private: 970 private:
970 Token::Value op_; 971 Token::Value op_;
971 bool can_deopt_; 972 bool can_deopt_;
972 }; 973 };
973 974
974 975
975 class LSubI: public LTemplateInstruction<1, 2> { 976 class LSubI: public LTemplateInstruction<1, 2, 0> {
976 public: 977 public:
977 LSubI(LOperand* left, LOperand* right) { 978 LSubI(LOperand* left, LOperand* right) {
978 inputs_[0] = left; 979 inputs_[0] = left;
979 inputs_[1] = right; 980 inputs_[1] = right;
980 } 981 }
981 982
982 DECLARE_CONCRETE_INSTRUCTION(SubI, "sub-i") 983 DECLARE_CONCRETE_INSTRUCTION(SubI, "sub-i")
983 DECLARE_HYDROGEN_ACCESSOR(Sub) 984 DECLARE_HYDROGEN_ACCESSOR(Sub)
984 }; 985 };
985 986
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1021 explicit LConstantT(Handle<Object> value) : value_(value) { } 1022 explicit LConstantT(Handle<Object> value) : value_(value) { }
1022 Handle<Object> value() const { return value_; } 1023 Handle<Object> value() const { return value_; }
1023 1024
1024 DECLARE_CONCRETE_INSTRUCTION(ConstantT, "constant-t") 1025 DECLARE_CONCRETE_INSTRUCTION(ConstantT, "constant-t")
1025 1026
1026 private: 1027 private:
1027 Handle<Object> value_; 1028 Handle<Object> value_;
1028 }; 1029 };
1029 1030
1030 1031
1031 class LBranch: public LControlInstruction<1> { 1032 class LBranch: public LControlInstruction<1, 0> {
1032 public: 1033 public:
1033 explicit LBranch(LOperand* value) { 1034 explicit LBranch(LOperand* value) {
1034 inputs_[0] = value; 1035 inputs_[0] = value;
1035 } 1036 }
1036 1037
1037 DECLARE_CONCRETE_INSTRUCTION(Branch, "branch") 1038 DECLARE_CONCRETE_INSTRUCTION(Branch, "branch")
1038 DECLARE_HYDROGEN_ACCESSOR(Value) 1039 DECLARE_HYDROGEN_ACCESSOR(Value)
1039 1040
1040 virtual void PrintDataTo(StringStream* stream); 1041 virtual void PrintDataTo(StringStream* stream);
1041 }; 1042 };
1042 1043
1043 1044
1044 class LCmpMapAndBranch: public LTemplateInstruction<0, 1> { 1045 class LCmpMapAndBranch: public LTemplateInstruction<0, 1, 0> {
1045 public: 1046 public:
1046 explicit LCmpMapAndBranch(LOperand* value) { 1047 explicit LCmpMapAndBranch(LOperand* value) {
1047 inputs_[0] = value; 1048 inputs_[0] = value;
1048 } 1049 }
1049 1050
1050 DECLARE_CONCRETE_INSTRUCTION(CmpMapAndBranch, "cmp-map-and-branch") 1051 DECLARE_CONCRETE_INSTRUCTION(CmpMapAndBranch, "cmp-map-and-branch")
1051 DECLARE_HYDROGEN_ACCESSOR(CompareMapAndBranch) 1052 DECLARE_HYDROGEN_ACCESSOR(CompareMap)
1052 1053
1053 virtual bool IsControl() const { return true; } 1054 virtual bool IsControl() const { return true; }
1054 1055
1055 Handle<Map> map() const { return hydrogen()->map(); } 1056 Handle<Map> map() const { return hydrogen()->map(); }
1056 int true_block_id() const { 1057 int true_block_id() const {
1057 return hydrogen()->true_destination()->block_id(); 1058 return hydrogen()->FirstSuccessor()->block_id();
1058 } 1059 }
1059 int false_block_id() const { 1060 int false_block_id() const {
1060 return hydrogen()->false_destination()->block_id(); 1061 return hydrogen()->SecondSuccessor()->block_id();
1061 } 1062 }
1062 }; 1063 };
1063 1064
1064 1065
1065 class LJSArrayLength: public LTemplateInstruction<1, 1> { 1066 class LJSArrayLength: public LTemplateInstruction<1, 1, 0> {
1066 public: 1067 public:
1067 explicit LJSArrayLength(LOperand* value) { 1068 explicit LJSArrayLength(LOperand* value) {
1068 inputs_[0] = value; 1069 inputs_[0] = value;
1069 } 1070 }
1070 1071
1071 DECLARE_CONCRETE_INSTRUCTION(JSArrayLength, "js-array-length") 1072 DECLARE_CONCRETE_INSTRUCTION(JSArrayLength, "js-array-length")
1072 DECLARE_HYDROGEN_ACCESSOR(JSArrayLength) 1073 DECLARE_HYDROGEN_ACCESSOR(JSArrayLength)
1073 }; 1074 };
1074 1075
1075 1076
1076 class LFixedArrayLength: public LTemplateInstruction<1, 1> { 1077 class LFixedArrayLength: public LTemplateInstruction<1, 1, 0> {
1077 public: 1078 public:
1078 explicit LFixedArrayLength(LOperand* value) { 1079 explicit LFixedArrayLength(LOperand* value) {
1079 inputs_[0] = value; 1080 inputs_[0] = value;
1080 } 1081 }
1081 1082
1082 DECLARE_CONCRETE_INSTRUCTION(FixedArrayLength, "fixed-array-length") 1083 DECLARE_CONCRETE_INSTRUCTION(FixedArrayLength, "fixed-array-length")
1083 DECLARE_HYDROGEN_ACCESSOR(FixedArrayLength) 1084 DECLARE_HYDROGEN_ACCESSOR(FixedArrayLength)
1084 }; 1085 };
1085 1086
1086 1087
1087 class LValueOf: public LTemplateInstruction<1, 1, 1> { 1088 class LValueOf: public LTemplateInstruction<1, 1, 1> {
1088 public: 1089 public:
1089 LValueOf(LOperand* value, LOperand* temp) { 1090 LValueOf(LOperand* value, LOperand* temp) {
1090 inputs_[0] = value; 1091 inputs_[0] = value;
1091 temps_[0] = temp; 1092 temps_[0] = temp;
1092 } 1093 }
1093 1094
1094 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of") 1095 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of")
1095 DECLARE_HYDROGEN_ACCESSOR(ValueOf) 1096 DECLARE_HYDROGEN_ACCESSOR(ValueOf)
1096 }; 1097 };
1097 1098
1098 1099
1099 class LThrow: public LTemplateInstruction<0, 1> { 1100 class LThrow: public LTemplateInstruction<0, 1, 0> {
1100 public: 1101 public:
1101 explicit LThrow(LOperand* value) { 1102 explicit LThrow(LOperand* value) {
1102 inputs_[0] = value; 1103 inputs_[0] = value;
1103 } 1104 }
1104 1105
1105 DECLARE_CONCRETE_INSTRUCTION(Throw, "throw") 1106 DECLARE_CONCRETE_INSTRUCTION(Throw, "throw")
1106 }; 1107 };
1107 1108
1108 1109
1109 class LBitNotI: public LTemplateInstruction<1, 1> { 1110 class LBitNotI: public LTemplateInstruction<1, 1, 0> {
1110 public: 1111 public:
1111 explicit LBitNotI(LOperand* value) { 1112 explicit LBitNotI(LOperand* value) {
1112 inputs_[0] = value; 1113 inputs_[0] = value;
1113 } 1114 }
1114 1115
1115 DECLARE_CONCRETE_INSTRUCTION(BitNotI, "bit-not-i") 1116 DECLARE_CONCRETE_INSTRUCTION(BitNotI, "bit-not-i")
1116 }; 1117 };
1117 1118
1118 1119
1119 class LAddI: public LTemplateInstruction<1, 2> { 1120 class LAddI: public LTemplateInstruction<1, 2, 0> {
1120 public: 1121 public:
1121 LAddI(LOperand* left, LOperand* right) { 1122 LAddI(LOperand* left, LOperand* right) {
1122 inputs_[0] = left; 1123 inputs_[0] = left;
1123 inputs_[1] = right; 1124 inputs_[1] = right;
1124 } 1125 }
1125 1126
1126 DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i") 1127 DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i")
1127 DECLARE_HYDROGEN_ACCESSOR(Add) 1128 DECLARE_HYDROGEN_ACCESSOR(Add)
1128 }; 1129 };
1129 1130
1130 1131
1131 class LPower: public LTemplateInstruction<1, 2> { 1132 class LPower: public LTemplateInstruction<1, 2, 0> {
1132 public: 1133 public:
1133 LPower(LOperand* left, LOperand* right) { 1134 LPower(LOperand* left, LOperand* right) {
1134 inputs_[0] = left; 1135 inputs_[0] = left;
1135 inputs_[1] = right; 1136 inputs_[1] = right;
1136 } 1137 }
1137 1138
1138 DECLARE_CONCRETE_INSTRUCTION(Power, "power") 1139 DECLARE_CONCRETE_INSTRUCTION(Power, "power")
1139 DECLARE_HYDROGEN_ACCESSOR(Power) 1140 DECLARE_HYDROGEN_ACCESSOR(Power)
1140 }; 1141 };
1141 1142
1142 1143
1143 class LArithmeticD: public LTemplateInstruction<1, 2> { 1144 class LArithmeticD: public LTemplateInstruction<1, 2, 0> {
1144 public: 1145 public:
1145 LArithmeticD(Token::Value op, LOperand* left, LOperand* right) 1146 LArithmeticD(Token::Value op, LOperand* left, LOperand* right)
1146 : op_(op) { 1147 : op_(op) {
1147 inputs_[0] = left; 1148 inputs_[0] = left;
1148 inputs_[1] = right; 1149 inputs_[1] = right;
1149 } 1150 }
1150 1151
1151 Token::Value op() const { return op_; } 1152 Token::Value op() const { return op_; }
1152 1153
1153 virtual void CompileToNative(LCodeGen* generator); 1154 virtual void CompileToNative(LCodeGen* generator);
1154 virtual const char* Mnemonic() const; 1155 virtual const char* Mnemonic() const;
1155 1156
1156 private: 1157 private:
1157 Token::Value op_; 1158 Token::Value op_;
1158 }; 1159 };
1159 1160
1160 1161
1161 class LArithmeticT: public LTemplateInstruction<1, 2> { 1162 class LArithmeticT: public LTemplateInstruction<1, 2, 0> {
1162 public: 1163 public:
1163 LArithmeticT(Token::Value op, LOperand* left, LOperand* right) 1164 LArithmeticT(Token::Value op, LOperand* left, LOperand* right)
1164 : op_(op) { 1165 : op_(op) {
1165 inputs_[0] = left; 1166 inputs_[0] = left;
1166 inputs_[1] = right; 1167 inputs_[1] = right;
1167 } 1168 }
1168 1169
1169 virtual void CompileToNative(LCodeGen* generator); 1170 virtual void CompileToNative(LCodeGen* generator);
1170 virtual const char* Mnemonic() const; 1171 virtual const char* Mnemonic() const;
1171 1172
1172 Token::Value op() const { return op_; } 1173 Token::Value op() const { return op_; }
1173 1174
1174 private: 1175 private:
1175 Token::Value op_; 1176 Token::Value op_;
1176 }; 1177 };
1177 1178
1178 1179
1179 class LReturn: public LTemplateInstruction<0, 1> { 1180 class LReturn: public LTemplateInstruction<0, 1, 0> {
1180 public: 1181 public:
1181 explicit LReturn(LOperand* value) { 1182 explicit LReturn(LOperand* value) {
1182 inputs_[0] = value; 1183 inputs_[0] = value;
1183 } 1184 }
1184 1185
1185 DECLARE_CONCRETE_INSTRUCTION(Return, "return") 1186 DECLARE_CONCRETE_INSTRUCTION(Return, "return")
1186 }; 1187 };
1187 1188
1188 1189
1189 class LLoadNamedField: public LTemplateInstruction<1, 1> { 1190 class LLoadNamedField: public LTemplateInstruction<1, 1, 0> {
1190 public: 1191 public:
1191 explicit LLoadNamedField(LOperand* object) { 1192 explicit LLoadNamedField(LOperand* object) {
1192 inputs_[0] = object; 1193 inputs_[0] = object;
1193 } 1194 }
1194 1195
1195 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field") 1196 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field")
1196 DECLARE_HYDROGEN_ACCESSOR(LoadNamedField) 1197 DECLARE_HYDROGEN_ACCESSOR(LoadNamedField)
1197 }; 1198 };
1198 1199
1199 1200
1200 class LLoadNamedGeneric: public LTemplateInstruction<1, 1> { 1201 class LLoadNamedGeneric: public LTemplateInstruction<1, 1, 0> {
1201 public: 1202 public:
1202 explicit LLoadNamedGeneric(LOperand* object) { 1203 explicit LLoadNamedGeneric(LOperand* object) {
1203 inputs_[0] = object; 1204 inputs_[0] = object;
1204 } 1205 }
1205 1206
1206 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic") 1207 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic")
1207 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric) 1208 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric)
1208 1209
1209 LOperand* object() { return inputs_[0]; } 1210 LOperand* object() { return inputs_[0]; }
1210 Handle<Object> name() const { return hydrogen()->name(); } 1211 Handle<Object> name() const { return hydrogen()->name(); }
1211 }; 1212 };
1212 1213
1213 1214
1214 class LLoadFunctionPrototype: public LTemplateInstruction<1, 1, 1> { 1215 class LLoadFunctionPrototype: public LTemplateInstruction<1, 1, 1> {
1215 public: 1216 public:
1216 LLoadFunctionPrototype(LOperand* function, LOperand* temp) { 1217 LLoadFunctionPrototype(LOperand* function, LOperand* temp) {
1217 inputs_[0] = function; 1218 inputs_[0] = function;
1218 temps_[0] = temp; 1219 temps_[0] = temp;
1219 } 1220 }
1220 1221
1221 DECLARE_CONCRETE_INSTRUCTION(LoadFunctionPrototype, "load-function-prototype") 1222 DECLARE_CONCRETE_INSTRUCTION(LoadFunctionPrototype, "load-function-prototype")
1222 DECLARE_HYDROGEN_ACCESSOR(LoadFunctionPrototype) 1223 DECLARE_HYDROGEN_ACCESSOR(LoadFunctionPrototype)
1223 1224
1224 LOperand* function() { return inputs_[0]; } 1225 LOperand* function() { return inputs_[0]; }
1225 }; 1226 };
1226 1227
1227 1228
1228 class LLoadElements: public LTemplateInstruction<1, 1> { 1229 class LLoadElements: public LTemplateInstruction<1, 1, 0> {
1229 public: 1230 public:
1230 explicit LLoadElements(LOperand* object) { 1231 explicit LLoadElements(LOperand* object) {
1231 inputs_[0] = object; 1232 inputs_[0] = object;
1232 } 1233 }
1233 1234
1234 DECLARE_CONCRETE_INSTRUCTION(LoadElements, "load-elements") 1235 DECLARE_CONCRETE_INSTRUCTION(LoadElements, "load-elements")
1235 }; 1236 };
1236 1237
1237 1238
1238 class LLoadKeyedFastElement: public LTemplateInstruction<1, 2> { 1239 class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> {
1239 public: 1240 public:
1240 LLoadKeyedFastElement(LOperand* elements, LOperand* key) { 1241 LLoadKeyedFastElement(LOperand* elements, LOperand* key) {
1241 inputs_[0] = elements; 1242 inputs_[0] = elements;
1242 inputs_[1] = key; 1243 inputs_[1] = key;
1243 } 1244 }
1244 1245
1245 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element") 1246 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element")
1246 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement) 1247 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement)
1247 1248
1248 LOperand* elements() { return inputs_[0]; } 1249 LOperand* elements() { return inputs_[0]; }
1249 LOperand* key() { return inputs_[1]; } 1250 LOperand* key() { return inputs_[1]; }
1250 }; 1251 };
1251 1252
1252 1253
1253 class LLoadKeyedGeneric: public LTemplateInstruction<1, 2> { 1254 class LLoadKeyedGeneric: public LTemplateInstruction<1, 2, 0> {
1254 public: 1255 public:
1255 LLoadKeyedGeneric(LOperand* obj, LOperand* key) { 1256 LLoadKeyedGeneric(LOperand* obj, LOperand* key) {
1256 inputs_[0] = obj; 1257 inputs_[0] = obj;
1257 inputs_[1] = key; 1258 inputs_[1] = key;
1258 } 1259 }
1259 1260
1260 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic") 1261 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic")
1261 1262
1262 LOperand* object() { return inputs_[0]; } 1263 LOperand* object() { return inputs_[0]; }
1263 LOperand* key() { return inputs_[1]; } 1264 LOperand* key() { return inputs_[1]; }
1264 }; 1265 };
1265 1266
1266 1267
1267 class LLoadGlobal: public LTemplateInstruction<1, 0, 0> { 1268 class LLoadGlobal: public LTemplateInstruction<1, 0, 0> {
1268 public: 1269 public:
1269 DECLARE_CONCRETE_INSTRUCTION(LoadGlobal, "load-global") 1270 DECLARE_CONCRETE_INSTRUCTION(LoadGlobal, "load-global")
1270 DECLARE_HYDROGEN_ACCESSOR(LoadGlobal) 1271 DECLARE_HYDROGEN_ACCESSOR(LoadGlobal)
1271 }; 1272 };
1272 1273
1273 1274
1274 class LStoreGlobal: public LTemplateInstruction<0, 1> { 1275 class LStoreGlobal: public LTemplateInstruction<0, 1, 0> {
1275 public: 1276 public:
1276 explicit LStoreGlobal(LOperand* value) { 1277 explicit LStoreGlobal(LOperand* value) {
1277 inputs_[0] = value; 1278 inputs_[0] = value;
1278 } 1279 }
1279 1280
1280 DECLARE_CONCRETE_INSTRUCTION(StoreGlobal, "store-global") 1281 DECLARE_CONCRETE_INSTRUCTION(StoreGlobal, "store-global")
1281 DECLARE_HYDROGEN_ACCESSOR(StoreGlobal) 1282 DECLARE_HYDROGEN_ACCESSOR(StoreGlobal)
1282 }; 1283 };
1283 1284
1284 1285
1285 class LLoadContextSlot: public LTemplateInstruction<1, 0, 0> { 1286 class LLoadContextSlot: public LTemplateInstruction<1, 0, 0> {
1286 public: 1287 public:
1287 DECLARE_CONCRETE_INSTRUCTION(LoadContextSlot, "load-context-slot") 1288 DECLARE_CONCRETE_INSTRUCTION(LoadContextSlot, "load-context-slot")
1288 DECLARE_HYDROGEN_ACCESSOR(LoadContextSlot) 1289 DECLARE_HYDROGEN_ACCESSOR(LoadContextSlot)
1289 1290
1290 int context_chain_length() { return hydrogen()->context_chain_length(); } 1291 int context_chain_length() { return hydrogen()->context_chain_length(); }
1291 int slot_index() { return hydrogen()->slot_index(); } 1292 int slot_index() { return hydrogen()->slot_index(); }
1292 1293
1293 virtual void PrintDataTo(StringStream* stream); 1294 virtual void PrintDataTo(StringStream* stream);
1294 }; 1295 };
1295 1296
1296 1297
1297 class LPushArgument: public LTemplateInstruction<0, 1> { 1298 class LPushArgument: public LTemplateInstruction<0, 1, 0> {
1298 public: 1299 public:
1299 explicit LPushArgument(LOperand* value) { 1300 explicit LPushArgument(LOperand* value) {
1300 inputs_[0] = value; 1301 inputs_[0] = value;
1301 } 1302 }
1302 1303
1303 DECLARE_CONCRETE_INSTRUCTION(PushArgument, "push-argument") 1304 DECLARE_CONCRETE_INSTRUCTION(PushArgument, "push-argument")
1304 }; 1305 };
1305 1306
1306 1307
1307 class LGlobalObject: public LTemplateInstruction<1, 0, 0> { 1308 class LGlobalObject: public LTemplateInstruction<1, 0, 0> {
(...skipping 13 matching lines...) Expand all
1321 DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction, "call-constant-function") 1322 DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction, "call-constant-function")
1322 DECLARE_HYDROGEN_ACCESSOR(CallConstantFunction) 1323 DECLARE_HYDROGEN_ACCESSOR(CallConstantFunction)
1323 1324
1324 virtual void PrintDataTo(StringStream* stream); 1325 virtual void PrintDataTo(StringStream* stream);
1325 1326
1326 Handle<JSFunction> function() { return hydrogen()->function(); } 1327 Handle<JSFunction> function() { return hydrogen()->function(); }
1327 int arity() const { return hydrogen()->argument_count() - 1; } 1328 int arity() const { return hydrogen()->argument_count() - 1; }
1328 }; 1329 };
1329 1330
1330 1331
1331 class LCallKeyed: public LTemplateInstruction<1, 0, 1> { 1332 class LCallKeyed: public LTemplateInstruction<1, 1, 0> {
1332 public: 1333 public:
1333 explicit LCallKeyed(LOperand* temp) { 1334 explicit LCallKeyed(LOperand* key) {
1334 temps_[0] = temp; 1335 inputs_[0] = key;
1335 } 1336 }
1336 1337
1337 DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed") 1338 DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed")
1338 DECLARE_HYDROGEN_ACCESSOR(CallKeyed) 1339 DECLARE_HYDROGEN_ACCESSOR(CallKeyed)
1339 1340
1340 virtual void PrintDataTo(StringStream* stream); 1341 virtual void PrintDataTo(StringStream* stream);
1341 1342
1342 int arity() const { return hydrogen()->argument_count() - 1; } 1343 int arity() const { return hydrogen()->argument_count() - 1; }
1343 }; 1344 };
1344 1345
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1381 DECLARE_CONCRETE_INSTRUCTION(CallKnownGlobal, "call-known-global") 1382 DECLARE_CONCRETE_INSTRUCTION(CallKnownGlobal, "call-known-global")
1382 DECLARE_HYDROGEN_ACCESSOR(CallKnownGlobal) 1383 DECLARE_HYDROGEN_ACCESSOR(CallKnownGlobal)
1383 1384
1384 virtual void PrintDataTo(StringStream* stream); 1385 virtual void PrintDataTo(StringStream* stream);
1385 1386
1386 Handle<JSFunction> target() const { return hydrogen()->target(); } 1387 Handle<JSFunction> target() const { return hydrogen()->target(); }
1387 int arity() const { return hydrogen()->argument_count() - 1; } 1388 int arity() const { return hydrogen()->argument_count() - 1; }
1388 }; 1389 };
1389 1390
1390 1391
1391 class LCallNew: public LTemplateInstruction<1, 1> { 1392 class LCallNew: public LTemplateInstruction<1, 1, 0> {
1392 public: 1393 public:
1393 explicit LCallNew(LOperand* constructor) { 1394 explicit LCallNew(LOperand* constructor) {
1394 inputs_[0] = constructor; 1395 inputs_[0] = constructor;
1395 } 1396 }
1396 1397
1397 DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new") 1398 DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new")
1398 DECLARE_HYDROGEN_ACCESSOR(CallNew) 1399 DECLARE_HYDROGEN_ACCESSOR(CallNew)
1399 1400
1400 virtual void PrintDataTo(StringStream* stream); 1401 virtual void PrintDataTo(StringStream* stream);
1401 1402
1402 int arity() const { return hydrogen()->argument_count() - 1; } 1403 int arity() const { return hydrogen()->argument_count() - 1; }
1403 }; 1404 };
1404 1405
1405 1406
1406 class LCallRuntime: public LTemplateInstruction<1, 0, 0> { 1407 class LCallRuntime: public LTemplateInstruction<1, 0, 0> {
1407 public: 1408 public:
1408 DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime") 1409 DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime")
1409 DECLARE_HYDROGEN_ACCESSOR(CallRuntime) 1410 DECLARE_HYDROGEN_ACCESSOR(CallRuntime)
1410 1411
1411 Runtime::Function* function() const { return hydrogen()->function(); } 1412 Runtime::Function* function() const { return hydrogen()->function(); }
1412 int arity() const { return hydrogen()->argument_count(); } 1413 int arity() const { return hydrogen()->argument_count(); }
1413 }; 1414 };
1414 1415
1415 1416
1416 class LInteger32ToDouble: public LTemplateInstruction<1, 1> { 1417 class LInteger32ToDouble: public LTemplateInstruction<1, 1, 0> {
1417 public: 1418 public:
1418 explicit LInteger32ToDouble(LOperand* value) { 1419 explicit LInteger32ToDouble(LOperand* value) {
1419 inputs_[0] = value; 1420 inputs_[0] = value;
1420 } 1421 }
1421 1422
1422 DECLARE_CONCRETE_INSTRUCTION(Integer32ToDouble, "int32-to-double") 1423 DECLARE_CONCRETE_INSTRUCTION(Integer32ToDouble, "int32-to-double")
1423 }; 1424 };
1424 1425
1425 1426
1426 class LNumberTagI: public LTemplateInstruction<1, 1> { 1427 class LNumberTagI: public LTemplateInstruction<1, 1, 0> {
1427 public: 1428 public:
1428 explicit LNumberTagI(LOperand* value) { 1429 explicit LNumberTagI(LOperand* value) {
1429 inputs_[0] = value; 1430 inputs_[0] = value;
1430 } 1431 }
1431 1432
1432 DECLARE_CONCRETE_INSTRUCTION(NumberTagI, "number-tag-i") 1433 DECLARE_CONCRETE_INSTRUCTION(NumberTagI, "number-tag-i")
1433 }; 1434 };
1434 1435
1435 1436
1436 class LNumberTagD: public LTemplateInstruction<1, 1, 1> { 1437 class LNumberTagD: public LTemplateInstruction<1, 1, 1> {
(...skipping 30 matching lines...) Expand all
1467 temps_[0] = temp; 1468 temps_[0] = temp;
1468 } 1469 }
1469 1470
1470 DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i") 1471 DECLARE_CONCRETE_INSTRUCTION(TaggedToI, "tagged-to-i")
1471 DECLARE_HYDROGEN_ACCESSOR(Change) 1472 DECLARE_HYDROGEN_ACCESSOR(Change)
1472 1473
1473 bool truncating() { return hydrogen()->CanTruncateToInt32(); } 1474 bool truncating() { return hydrogen()->CanTruncateToInt32(); }
1474 }; 1475 };
1475 1476
1476 1477
1477 class LSmiTag: public LTemplateInstruction<1, 1> { 1478 class LSmiTag: public LTemplateInstruction<1, 1, 0> {
1478 public: 1479 public:
1479 explicit LSmiTag(LOperand* value) { 1480 explicit LSmiTag(LOperand* value) {
1480 inputs_[0] = value; 1481 inputs_[0] = value;
1481 } 1482 }
1482 1483
1483 DECLARE_CONCRETE_INSTRUCTION(SmiTag, "smi-tag") 1484 DECLARE_CONCRETE_INSTRUCTION(SmiTag, "smi-tag")
1484 }; 1485 };
1485 1486
1486 1487
1487 class LNumberUntagD: public LTemplateInstruction<1, 1> { 1488 class LNumberUntagD: public LTemplateInstruction<1, 1, 0> {
1488 public: 1489 public:
1489 explicit LNumberUntagD(LOperand* value) { 1490 explicit LNumberUntagD(LOperand* value) {
1490 inputs_[0] = value; 1491 inputs_[0] = value;
1491 } 1492 }
1492 1493
1493 DECLARE_CONCRETE_INSTRUCTION(NumberUntagD, "double-untag") 1494 DECLARE_CONCRETE_INSTRUCTION(NumberUntagD, "double-untag")
1494 }; 1495 };
1495 1496
1496 1497
1497 class LSmiUntag: public LTemplateInstruction<1, 1> { 1498 class LSmiUntag: public LTemplateInstruction<1, 1, 0> {
1498 public: 1499 public:
1499 LSmiUntag(LOperand* value, bool needs_check) 1500 LSmiUntag(LOperand* value, bool needs_check)
1500 : needs_check_(needs_check) { 1501 : needs_check_(needs_check) {
1501 inputs_[0] = value; 1502 inputs_[0] = value;
1502 } 1503 }
1503 1504
1504 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag") 1505 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag")
1505 1506
1506 bool needs_check() const { return needs_check_; } 1507 bool needs_check() const { return needs_check_; }
1507 1508
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1586 1587
1587 class LStoreKeyedGeneric: public LStoreKeyed { 1588 class LStoreKeyedGeneric: public LStoreKeyed {
1588 public: 1589 public:
1589 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val) 1590 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val)
1590 : LStoreKeyed(obj, key, val) { } 1591 : LStoreKeyed(obj, key, val) { }
1591 1592
1592 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") 1593 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
1593 }; 1594 };
1594 1595
1595 1596
1596 class LCheckFunction: public LTemplateInstruction<0, 1> { 1597 class LCheckFunction: public LTemplateInstruction<0, 1, 0> {
1597 public: 1598 public:
1598 explicit LCheckFunction(LOperand* value) { 1599 explicit LCheckFunction(LOperand* value) {
1599 inputs_[0] = value; 1600 inputs_[0] = value;
1600 } 1601 }
1601 1602
1602 DECLARE_CONCRETE_INSTRUCTION(CheckFunction, "check-function") 1603 DECLARE_CONCRETE_INSTRUCTION(CheckFunction, "check-function")
1603 DECLARE_HYDROGEN_ACCESSOR(CheckFunction) 1604 DECLARE_HYDROGEN_ACCESSOR(CheckFunction)
1604 }; 1605 };
1605 1606
1606 1607
1607 class LCheckInstanceType: public LTemplateInstruction<0, 1, 1> { 1608 class LCheckInstanceType: public LTemplateInstruction<0, 1, 1> {
1608 public: 1609 public:
1609 LCheckInstanceType(LOperand* value, LOperand* temp) { 1610 LCheckInstanceType(LOperand* value, LOperand* temp) {
1610 inputs_[0] = value; 1611 inputs_[0] = value;
1611 temps_[0] = temp; 1612 temps_[0] = temp;
1612 } 1613 }
1613 1614
1614 DECLARE_CONCRETE_INSTRUCTION(CheckInstanceType, "check-instance-type") 1615 DECLARE_CONCRETE_INSTRUCTION(CheckInstanceType, "check-instance-type")
1615 DECLARE_HYDROGEN_ACCESSOR(CheckInstanceType) 1616 DECLARE_HYDROGEN_ACCESSOR(CheckInstanceType)
1616 }; 1617 };
1617 1618
1618 1619
1619 class LCheckMap: public LTemplateInstruction<0, 1> { 1620 class LCheckMap: public LTemplateInstruction<0, 1, 0> {
1620 public: 1621 public:
1621 explicit LCheckMap(LOperand* value) { 1622 explicit LCheckMap(LOperand* value) {
1622 inputs_[0] = value; 1623 inputs_[0] = value;
1623 } 1624 }
1624 1625
1625 DECLARE_CONCRETE_INSTRUCTION(CheckMap, "check-map") 1626 DECLARE_CONCRETE_INSTRUCTION(CheckMap, "check-map")
1626 DECLARE_HYDROGEN_ACCESSOR(CheckMap) 1627 DECLARE_HYDROGEN_ACCESSOR(CheckMap)
1627 }; 1628 };
1628 1629
1629 1630
1630 class LCheckPrototypeMaps: public LTemplateInstruction<0, 0, 1> { 1631 class LCheckPrototypeMaps: public LTemplateInstruction<0, 0, 1> {
1631 public: 1632 public:
1632 explicit LCheckPrototypeMaps(LOperand* temp) { 1633 explicit LCheckPrototypeMaps(LOperand* temp) {
1633 temps_[0] = temp; 1634 temps_[0] = temp;
1634 } 1635 }
1635 1636
1636 DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check-prototype-maps") 1637 DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check-prototype-maps")
1637 DECLARE_HYDROGEN_ACCESSOR(CheckPrototypeMaps) 1638 DECLARE_HYDROGEN_ACCESSOR(CheckPrototypeMaps)
1638 1639
1639 Handle<JSObject> prototype() const { return hydrogen()->prototype(); } 1640 Handle<JSObject> prototype() const { return hydrogen()->prototype(); }
1640 Handle<JSObject> holder() const { return hydrogen()->holder(); } 1641 Handle<JSObject> holder() const { return hydrogen()->holder(); }
1641 }; 1642 };
1642 1643
1643 1644
1644 class LCheckSmi: public LTemplateInstruction<0, 1> { 1645 class LCheckSmi: public LTemplateInstruction<0, 1, 0> {
1645 public: 1646 public:
1646 LCheckSmi(LOperand* value, Condition condition) 1647 LCheckSmi(LOperand* value, Condition condition)
1647 : condition_(condition) { 1648 : condition_(condition) {
1648 inputs_[0] = value; 1649 inputs_[0] = value;
1649 } 1650 }
1650 1651
1651 Condition condition() const { return condition_; } 1652 Condition condition() const { return condition_; }
1652 1653
1653 virtual void CompileToNative(LCodeGen* generator); 1654 virtual void CompileToNative(LCodeGen* generator);
1654 virtual const char* Mnemonic() const { 1655 virtual const char* Mnemonic() const {
(...skipping 28 matching lines...) Expand all
1683 1684
1684 class LFunctionLiteral: public LTemplateInstruction<1, 0, 0> { 1685 class LFunctionLiteral: public LTemplateInstruction<1, 0, 0> {
1685 public: 1686 public:
1686 DECLARE_CONCRETE_INSTRUCTION(FunctionLiteral, "function-literal") 1687 DECLARE_CONCRETE_INSTRUCTION(FunctionLiteral, "function-literal")
1687 DECLARE_HYDROGEN_ACCESSOR(FunctionLiteral) 1688 DECLARE_HYDROGEN_ACCESSOR(FunctionLiteral)
1688 1689
1689 Handle<SharedFunctionInfo> shared_info() { return hydrogen()->shared_info(); } 1690 Handle<SharedFunctionInfo> shared_info() { return hydrogen()->shared_info(); }
1690 }; 1691 };
1691 1692
1692 1693
1693 class LTypeof: public LTemplateInstruction<1, 1> { 1694 class LTypeof: public LTemplateInstruction<1, 1, 0> {
1694 public: 1695 public:
1695 explicit LTypeof(LOperand* value) { 1696 explicit LTypeof(LOperand* value) {
1696 inputs_[0] = value; 1697 inputs_[0] = value;
1697 } 1698 }
1698 1699
1699 DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof") 1700 DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof")
1700 }; 1701 };
1701 1702
1702 1703
1703 class LTypeofIs: public LTemplateInstruction<1, 1> { 1704 class LTypeofIs: public LTemplateInstruction<1, 1, 0> {
1704 public: 1705 public:
1705 explicit LTypeofIs(LOperand* value) { 1706 explicit LTypeofIs(LOperand* value) {
1706 inputs_[0] = value; 1707 inputs_[0] = value;
1707 } 1708 }
1708 1709
1709 DECLARE_CONCRETE_INSTRUCTION(TypeofIs, "typeof-is") 1710 DECLARE_CONCRETE_INSTRUCTION(TypeofIs, "typeof-is")
1710 DECLARE_HYDROGEN_ACCESSOR(TypeofIs) 1711 DECLARE_HYDROGEN_ACCESSOR(TypeofIs)
1711 1712
1712 Handle<String> type_literal() { return hydrogen()->type_literal(); } 1713 Handle<String> type_literal() { return hydrogen()->type_literal(); }
1713 1714
1714 virtual void PrintDataTo(StringStream* stream); 1715 virtual void PrintDataTo(StringStream* stream);
1715 }; 1716 };
1716 1717
1717 1718
1718 class LTypeofIsAndBranch: public LControlInstruction<1> { 1719 class LTypeofIsAndBranch: public LControlInstruction<1, 0> {
1719 public: 1720 public:
1720 explicit LTypeofIsAndBranch(LOperand* value) { 1721 explicit LTypeofIsAndBranch(LOperand* value) {
1721 inputs_[0] = value; 1722 inputs_[0] = value;
1722 } 1723 }
1723 1724
1724 DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch") 1725 DECLARE_CONCRETE_INSTRUCTION(TypeofIsAndBranch, "typeof-is-and-branch")
1725 DECLARE_HYDROGEN_ACCESSOR(TypeofIs) 1726 DECLARE_HYDROGEN_ACCESSOR(TypeofIs)
1726 1727
1727 Handle<String> type_literal() { return hydrogen()->type_literal(); } 1728 Handle<String> type_literal() { return hydrogen()->type_literal(); }
1728 1729
1729 virtual void PrintDataTo(StringStream* stream); 1730 virtual void PrintDataTo(StringStream* stream);
1730 }; 1731 };
1731 1732
1732 1733
1733 class LDeleteProperty: public LTemplateInstruction<1, 2> { 1734 class LDeleteProperty: public LTemplateInstruction<1, 2, 0> {
1734 public: 1735 public:
1735 LDeleteProperty(LOperand* obj, LOperand* key) { 1736 LDeleteProperty(LOperand* obj, LOperand* key) {
1736 inputs_[0] = obj; 1737 inputs_[0] = obj;
1737 inputs_[1] = key; 1738 inputs_[1] = key;
1738 } 1739 }
1739 1740
1740 DECLARE_CONCRETE_INSTRUCTION(DeleteProperty, "delete-property") 1741 DECLARE_CONCRETE_INSTRUCTION(DeleteProperty, "delete-property")
1741 1742
1742 LOperand* object() { return inputs_[0]; } 1743 LOperand* object() { return inputs_[0]; }
1743 LOperand* key() { return inputs_[1]; } 1744 LOperand* key() { return inputs_[1]; }
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1893 // Operand created by UseRegister is guaranteed to be live until the end of 1894 // Operand created by UseRegister is guaranteed to be live until the end of
1894 // instruction. This means that register allocator will not reuse it's 1895 // instruction. This means that register allocator will not reuse it's
1895 // register for any other operand inside instruction. 1896 // register for any other operand inside instruction.
1896 // Operand created by UseRegisterAtStart is guaranteed to be live only at 1897 // Operand created by UseRegisterAtStart is guaranteed to be live only at
1897 // instruction start. Register allocator is free to assign the same register 1898 // instruction start. Register allocator is free to assign the same register
1898 // to some other operand used inside instruction (i.e. temporary or 1899 // to some other operand used inside instruction (i.e. temporary or
1899 // output). 1900 // output).
1900 MUST_USE_RESULT LOperand* UseRegister(HValue* value); 1901 MUST_USE_RESULT LOperand* UseRegister(HValue* value);
1901 MUST_USE_RESULT LOperand* UseRegisterAtStart(HValue* value); 1902 MUST_USE_RESULT LOperand* UseRegisterAtStart(HValue* value);
1902 1903
1903 // A value in a register that may be trashed. 1904 // An input operand in a register that may be trashed.
1904 MUST_USE_RESULT LOperand* UseTempRegister(HValue* value); 1905 MUST_USE_RESULT LOperand* UseTempRegister(HValue* value);
1905 1906
1906 // An operand value in a register or stack slot. 1907 // An input operand in a register or stack slot.
1907 MUST_USE_RESULT LOperand* Use(HValue* value); 1908 MUST_USE_RESULT LOperand* Use(HValue* value);
1908 MUST_USE_RESULT LOperand* UseAtStart(HValue* value); 1909 MUST_USE_RESULT LOperand* UseAtStart(HValue* value);
1909 1910
1910 // An operand value in a register, stack slot or a constant operand. 1911 // An input operand in a register, stack slot or a constant operand.
1911 MUST_USE_RESULT LOperand* UseOrConstant(HValue* value); 1912 MUST_USE_RESULT LOperand* UseOrConstant(HValue* value);
1912 MUST_USE_RESULT LOperand* UseOrConstantAtStart(HValue* value); 1913 MUST_USE_RESULT LOperand* UseOrConstantAtStart(HValue* value);
1913 1914
1914 // An operand value in a register or a constant operand. 1915 // An input operand in a register or a constant operand.
1915 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value); 1916 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value);
1916 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value); 1917 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value);
1917 1918
1919 // An input operand in register, stack slot or a constant operand.
1920 // Will not be moved to a register even if one is freely available.
1921 MUST_USE_RESULT LOperand* UseAny(HValue* value);
1922
1918 // Temporary operand that must be in a register. 1923 // Temporary operand that must be in a register.
1919 MUST_USE_RESULT LUnallocated* TempRegister(); 1924 MUST_USE_RESULT LUnallocated* TempRegister();
1920 MUST_USE_RESULT LOperand* FixedTemp(Register reg); 1925 MUST_USE_RESULT LOperand* FixedTemp(Register reg);
1921 MUST_USE_RESULT LOperand* FixedTemp(XMMRegister reg); 1926 MUST_USE_RESULT LOperand* FixedTemp(XMMRegister reg);
1922 1927
1923 // An operand value in register, stack slot or a constant operand.
1924 // Will not be moved to a register even if one is freely available.
1925 LOperand* UseAny(HValue* value);
1926
1927 // Methods for setting up define-use relationships. 1928 // Methods for setting up define-use relationships.
1928 // Return the same instruction that they are passed. 1929 // Return the same instruction that they are passed.
1929 template<int I, int T> 1930 template<int I, int T>
1930 LInstruction* Define(LTemplateInstruction<1, I, T>* instr, 1931 LInstruction* Define(LTemplateInstruction<1, I, T>* instr,
1931 LUnallocated* result); 1932 LUnallocated* result);
1932 template<int I, int T> 1933 template<int I, int T>
1933 LInstruction* Define(LTemplateInstruction<1, I, T>* instr); 1934 LInstruction* Define(LTemplateInstruction<1, I, T>* instr);
1934 template<int I, int T> 1935 template<int I, int T>
1935 LInstruction* DefineAsRegister(LTemplateInstruction<1, I, T>* instr); 1936 LInstruction* DefineAsRegister(LTemplateInstruction<1, I, T>* instr);
1936 template<int I, int T> 1937 template<int I, int T>
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1989 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 1990 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
1990 }; 1991 };
1991 1992
1992 #undef DECLARE_HYDROGEN_ACCESSOR 1993 #undef DECLARE_HYDROGEN_ACCESSOR
1993 #undef DECLARE_INSTRUCTION 1994 #undef DECLARE_INSTRUCTION
1994 #undef DECLARE_CONCRETE_INSTRUCTION 1995 #undef DECLARE_CONCRETE_INSTRUCTION
1995 1996
1996 } } // namespace v8::int 1997 } } // namespace v8::int
1997 1998
1998 #endif // V8_X64_LITHIUM_X64_H_ 1999 #endif // V8_X64_LITHIUM_X64_H_
OLDNEW
« no previous file with comments | « src/x64/lithium-codegen-x64.cc ('k') | src/x64/lithium-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698