| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 // LCmpJSObjectEq | 60 // LCmpJSObjectEq |
| 61 // LCmpJSObjectEqAndBranch | 61 // LCmpJSObjectEqAndBranch |
| 62 // LCmpT | 62 // LCmpT |
| 63 // LDivI | 63 // LDivI |
| 64 // LInstanceOf | 64 // LInstanceOf |
| 65 // LInstanceOfAndBranch | 65 // LInstanceOfAndBranch |
| 66 // LLoadKeyedFastElement | 66 // LLoadKeyedFastElement |
| 67 // LLoadKeyedGeneric | 67 // LLoadKeyedGeneric |
| 68 // LModI | 68 // LModI |
| 69 // LMulI | 69 // LMulI |
| 70 // LPower |
| 70 // LShiftI | 71 // LShiftI |
| 71 // LSubI | 72 // LSubI |
| 72 // LCallConstantFunction | 73 // LCallConstantFunction |
| 73 // LCallFunction | 74 // LCallFunction |
| 74 // LCallGlobal | 75 // LCallGlobal |
| 75 // LCallKeyed | 76 // LCallKeyed |
| 76 // LCallKnownGlobal | 77 // LCallKnownGlobal |
| 77 // LCallNamed | 78 // LCallNamed |
| 78 // LCallRuntime | 79 // LCallRuntime |
| 79 // LCallStub | 80 // LCallStub |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 // LClassOfTestAndBranch | 117 // LClassOfTestAndBranch |
| 117 // LDeleteProperty | 118 // LDeleteProperty |
| 118 // LDoubleToI | 119 // LDoubleToI |
| 119 // LHasCachedArrayIndex | 120 // LHasCachedArrayIndex |
| 120 // LHasCachedArrayIndexAndBranch | 121 // LHasCachedArrayIndexAndBranch |
| 121 // LHasInstanceType | 122 // LHasInstanceType |
| 122 // LHasInstanceTypeAndBranch | 123 // LHasInstanceTypeAndBranch |
| 123 // LInteger32ToDouble | 124 // LInteger32ToDouble |
| 124 // LIsNull | 125 // LIsNull |
| 125 // LIsNullAndBranch | 126 // LIsNullAndBranch |
| 127 // LIsObject |
| 128 // LIsObjectAndBranch |
| 126 // LIsSmi | 129 // LIsSmi |
| 127 // LIsSmiAndBranch | 130 // LIsSmiAndBranch |
| 128 // LLoadNamedField | 131 // LLoadNamedField |
| 129 // LLoadNamedGeneric | 132 // LLoadNamedGeneric |
| 130 // LNumberTagD | 133 // LNumberTagD |
| 131 // LNumberTagI | 134 // LNumberTagI |
| 132 // LPushArgument | 135 // LPushArgument |
| 133 // LReturn | 136 // LReturn |
| 134 // LSmiTag | 137 // LSmiTag |
| 135 // LStoreGlobal | 138 // LStoreGlobal |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 V(FunctionLiteral) \ | 201 V(FunctionLiteral) \ |
| 199 V(Gap) \ | 202 V(Gap) \ |
| 200 V(GlobalObject) \ | 203 V(GlobalObject) \ |
| 201 V(GlobalReceiver) \ | 204 V(GlobalReceiver) \ |
| 202 V(Goto) \ | 205 V(Goto) \ |
| 203 V(InstanceOf) \ | 206 V(InstanceOf) \ |
| 204 V(InstanceOfAndBranch) \ | 207 V(InstanceOfAndBranch) \ |
| 205 V(Integer32ToDouble) \ | 208 V(Integer32ToDouble) \ |
| 206 V(IsNull) \ | 209 V(IsNull) \ |
| 207 V(IsNullAndBranch) \ | 210 V(IsNullAndBranch) \ |
| 211 V(IsObject) \ |
| 212 V(IsObjectAndBranch) \ |
| 208 V(IsSmi) \ | 213 V(IsSmi) \ |
| 209 V(IsSmiAndBranch) \ | 214 V(IsSmiAndBranch) \ |
| 210 V(HasInstanceType) \ | 215 V(HasInstanceType) \ |
| 211 V(HasInstanceTypeAndBranch) \ | 216 V(HasInstanceTypeAndBranch) \ |
| 212 V(HasCachedArrayIndex) \ | 217 V(HasCachedArrayIndex) \ |
| 213 V(HasCachedArrayIndexAndBranch) \ | 218 V(HasCachedArrayIndexAndBranch) \ |
| 214 V(ClassOfTest) \ | 219 V(ClassOfTest) \ |
| 215 V(ClassOfTestAndBranch) \ | 220 V(ClassOfTestAndBranch) \ |
| 216 V(Label) \ | 221 V(Label) \ |
| 217 V(LazyBailout) \ | 222 V(LazyBailout) \ |
| 218 V(LoadElements) \ | 223 V(LoadElements) \ |
| 219 V(LoadGlobal) \ | 224 V(LoadGlobal) \ |
| 220 V(LoadKeyedFastElement) \ | 225 V(LoadKeyedFastElement) \ |
| 221 V(LoadKeyedGeneric) \ | 226 V(LoadKeyedGeneric) \ |
| 222 V(LoadNamedField) \ | 227 V(LoadNamedField) \ |
| 223 V(LoadNamedGeneric) \ | 228 V(LoadNamedGeneric) \ |
| 224 V(ModI) \ | 229 V(ModI) \ |
| 225 V(MulI) \ | 230 V(MulI) \ |
| 226 V(NumberTagD) \ | 231 V(NumberTagD) \ |
| 227 V(NumberTagI) \ | 232 V(NumberTagI) \ |
| 228 V(NumberUntagD) \ | 233 V(NumberUntagD) \ |
| 229 V(ObjectLiteral) \ | 234 V(ObjectLiteral) \ |
| 230 V(OsrEntry) \ | 235 V(OsrEntry) \ |
| 231 V(Parameter) \ | 236 V(Parameter) \ |
| 237 V(Power) \ |
| 232 V(PushArgument) \ | 238 V(PushArgument) \ |
| 233 V(RegExpLiteral) \ | 239 V(RegExpLiteral) \ |
| 234 V(Return) \ | 240 V(Return) \ |
| 235 V(ShiftI) \ | 241 V(ShiftI) \ |
| 236 V(SmiTag) \ | 242 V(SmiTag) \ |
| 237 V(SmiUntag) \ | 243 V(SmiUntag) \ |
| 238 V(StackCheck) \ | 244 V(StackCheck) \ |
| 239 V(StoreGlobal) \ | 245 V(StoreGlobal) \ |
| 240 V(StoreKeyedFastElement) \ | 246 V(StoreKeyedFastElement) \ |
| 241 V(StoreKeyedGeneric) \ | 247 V(StoreKeyedGeneric) \ |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 | 667 |
| 662 class LUnaryMathOperation: public LUnaryOperation { | 668 class LUnaryMathOperation: public LUnaryOperation { |
| 663 public: | 669 public: |
| 664 explicit LUnaryMathOperation(LOperand* value) | 670 explicit LUnaryMathOperation(LOperand* value) |
| 665 : LUnaryOperation(value) { } | 671 : LUnaryOperation(value) { } |
| 666 | 672 |
| 667 DECLARE_CONCRETE_INSTRUCTION(UnaryMathOperation, "unary-math-operation") | 673 DECLARE_CONCRETE_INSTRUCTION(UnaryMathOperation, "unary-math-operation") |
| 668 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) | 674 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) |
| 669 | 675 |
| 670 virtual void PrintDataTo(StringStream* stream) const; | 676 virtual void PrintDataTo(StringStream* stream) const; |
| 671 MathFunctionId op() const { return hydrogen()->op(); } | 677 BuiltinFunctionId op() const { return hydrogen()->op(); } |
| 672 }; | 678 }; |
| 673 | 679 |
| 674 | 680 |
| 675 class LCmpJSObjectEq: public LBinaryOperation { | 681 class LCmpJSObjectEq: public LBinaryOperation { |
| 676 public: | 682 public: |
| 677 LCmpJSObjectEq(LOperand* left, LOperand* right) | 683 LCmpJSObjectEq(LOperand* left, LOperand* right) |
| 678 : LBinaryOperation(left, right) {} | 684 : LBinaryOperation(left, right) {} |
| 679 | 685 |
| 680 DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEq, "cmp-jsobject-eq") | 686 DECLARE_CONCRETE_INSTRUCTION(CmpJSObjectEq, "cmp-jsobject-eq") |
| 681 }; | 687 }; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 738 | 744 |
| 739 LOperand* temp() const { return temp_; } | 745 LOperand* temp() const { return temp_; } |
| 740 | 746 |
| 741 private: | 747 private: |
| 742 LOperand* temp_; | 748 LOperand* temp_; |
| 743 int true_block_id_; | 749 int true_block_id_; |
| 744 int false_block_id_; | 750 int false_block_id_; |
| 745 }; | 751 }; |
| 746 | 752 |
| 747 | 753 |
| 754 class LIsObject: public LUnaryOperation { |
| 755 public: |
| 756 LIsObject(LOperand* value, LOperand* temp) |
| 757 : LUnaryOperation(value), temp_(temp) {} |
| 758 |
| 759 DECLARE_CONCRETE_INSTRUCTION(IsObject, "is-object") |
| 760 |
| 761 LOperand* temp() const { return temp_; } |
| 762 |
| 763 private: |
| 764 LOperand* temp_; |
| 765 }; |
| 766 |
| 767 |
| 768 class LIsObjectAndBranch: public LIsObject { |
| 769 public: |
| 770 LIsObjectAndBranch(LOperand* value, |
| 771 LOperand* temp, |
| 772 LOperand* temp2, |
| 773 int true_block_id, |
| 774 int false_block_id) |
| 775 : LIsObject(value, temp), |
| 776 temp2_(temp2), |
| 777 true_block_id_(true_block_id), |
| 778 false_block_id_(false_block_id) { } |
| 779 |
| 780 DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch") |
| 781 virtual void PrintDataTo(StringStream* stream) const; |
| 782 virtual bool IsControl() const { return true; } |
| 783 |
| 784 int true_block_id() const { return true_block_id_; } |
| 785 int false_block_id() const { return false_block_id_; } |
| 786 |
| 787 LOperand* temp2() const { return temp2_; } |
| 788 |
| 789 private: |
| 790 LOperand* temp2_; |
| 791 int true_block_id_; |
| 792 int false_block_id_; |
| 793 }; |
| 794 |
| 795 |
| 748 class LIsSmi: public LUnaryOperation { | 796 class LIsSmi: public LUnaryOperation { |
| 749 public: | 797 public: |
| 750 explicit LIsSmi(LOperand* value) : LUnaryOperation(value) {} | 798 explicit LIsSmi(LOperand* value) : LUnaryOperation(value) {} |
| 751 | 799 |
| 752 DECLARE_CONCRETE_INSTRUCTION(IsSmi, "is-smi") | 800 DECLARE_CONCRETE_INSTRUCTION(IsSmi, "is-smi") |
| 753 DECLARE_HYDROGEN_ACCESSOR(IsSmi) | 801 DECLARE_HYDROGEN_ACCESSOR(IsSmi) |
| 754 }; | 802 }; |
| 755 | 803 |
| 756 | 804 |
| 757 class LIsSmiAndBranch: public LIsSmi { | 805 class LIsSmiAndBranch: public LIsSmi { |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1147 class LAddI: public LBinaryOperation { | 1195 class LAddI: public LBinaryOperation { |
| 1148 public: | 1196 public: |
| 1149 LAddI(LOperand* left, LOperand* right) | 1197 LAddI(LOperand* left, LOperand* right) |
| 1150 : LBinaryOperation(left, right) { } | 1198 : LBinaryOperation(left, right) { } |
| 1151 | 1199 |
| 1152 DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i") | 1200 DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i") |
| 1153 DECLARE_HYDROGEN_ACCESSOR(Add) | 1201 DECLARE_HYDROGEN_ACCESSOR(Add) |
| 1154 }; | 1202 }; |
| 1155 | 1203 |
| 1156 | 1204 |
| 1205 class LPower: public LBinaryOperation { |
| 1206 public: |
| 1207 LPower(LOperand* left, LOperand* right) |
| 1208 : LBinaryOperation(left, right) { } |
| 1209 |
| 1210 DECLARE_CONCRETE_INSTRUCTION(Power, "power") |
| 1211 DECLARE_HYDROGEN_ACCESSOR(Power) |
| 1212 }; |
| 1213 |
| 1214 |
| 1157 class LArithmeticD: public LBinaryOperation { | 1215 class LArithmeticD: public LBinaryOperation { |
| 1158 public: | 1216 public: |
| 1159 LArithmeticD(Token::Value op, LOperand* left, LOperand* right) | 1217 LArithmeticD(Token::Value op, LOperand* left, LOperand* right) |
| 1160 : LBinaryOperation(left, right), op_(op) { } | 1218 : LBinaryOperation(left, right), op_(op) { } |
| 1161 | 1219 |
| 1162 Token::Value op() const { return op_; } | 1220 Token::Value op() const { return op_; } |
| 1163 | 1221 |
| 1164 virtual void CompileToNative(LCodeGen* generator); | 1222 virtual void CompileToNative(LCodeGen* generator); |
| 1165 virtual const char* Mnemonic() const; | 1223 virtual const char* Mnemonic() const; |
| 1166 | 1224 |
| (...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1883 | 1941 |
| 1884 int ParameterAt(int index); | 1942 int ParameterAt(int index); |
| 1885 int GetParameterStackSlot(int index) const; | 1943 int GetParameterStackSlot(int index) const; |
| 1886 int spill_slot_count() const { return spill_slot_count_; } | 1944 int spill_slot_count() const { return spill_slot_count_; } |
| 1887 HGraph* graph() const { return graph_; } | 1945 HGraph* graph() const { return graph_; } |
| 1888 const ZoneList<LInstruction*>* instructions() const { return &instructions_; } | 1946 const ZoneList<LInstruction*>* instructions() const { return &instructions_; } |
| 1889 void AddGapMove(int index, LOperand* from, LOperand* to); | 1947 void AddGapMove(int index, LOperand* from, LOperand* to); |
| 1890 LGap* GetGapAt(int index) const; | 1948 LGap* GetGapAt(int index) const; |
| 1891 bool IsGapAt(int index) const; | 1949 bool IsGapAt(int index) const; |
| 1892 int NearestGapPos(int index) const; | 1950 int NearestGapPos(int index) const; |
| 1893 int NearestNextGapPos(int index) const; | |
| 1894 void MarkEmptyBlocks(); | 1951 void MarkEmptyBlocks(); |
| 1895 const ZoneList<LPointerMap*>* pointer_maps() const { return &pointer_maps_; } | 1952 const ZoneList<LPointerMap*>* pointer_maps() const { return &pointer_maps_; } |
| 1896 LLabel* GetLabel(int block_id) const { | 1953 LLabel* GetLabel(int block_id) const { |
| 1897 HBasicBlock* block = graph_->blocks()->at(block_id); | 1954 HBasicBlock* block = graph_->blocks()->at(block_id); |
| 1898 int first_instruction = block->first_instruction_index(); | 1955 int first_instruction = block->first_instruction_index(); |
| 1899 return LLabel::cast(instructions_[first_instruction]); | 1956 return LLabel::cast(instructions_[first_instruction]); |
| 1900 } | 1957 } |
| 1901 int LookupDestination(int block_id) const { | 1958 int LookupDestination(int block_id) const { |
| 1902 LLabel* cur = GetLabel(block_id); | 1959 LLabel* cur = GetLabel(block_id); |
| 1903 while (cur->replacement() != NULL) { | 1960 while (cur->replacement() != NULL) { |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2062 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2119 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 2063 }; | 2120 }; |
| 2064 | 2121 |
| 2065 #undef DECLARE_HYDROGEN_ACCESSOR | 2122 #undef DECLARE_HYDROGEN_ACCESSOR |
| 2066 #undef DECLARE_INSTRUCTION | 2123 #undef DECLARE_INSTRUCTION |
| 2067 #undef DECLARE_CONCRETE_INSTRUCTION | 2124 #undef DECLARE_CONCRETE_INSTRUCTION |
| 2068 | 2125 |
| 2069 } } // namespace v8::internal | 2126 } } // namespace v8::internal |
| 2070 | 2127 |
| 2071 #endif // V8_IA32_LITHIUM_IA32_H_ | 2128 #endif // V8_IA32_LITHIUM_IA32_H_ |
| OLD | NEW |