| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 V(ModI) \ | 147 V(ModI) \ |
| 148 V(MulI) \ | 148 V(MulI) \ |
| 149 V(NumberTagD) \ | 149 V(NumberTagD) \ |
| 150 V(NumberTagI) \ | 150 V(NumberTagI) \ |
| 151 V(NumberTagU) \ | 151 V(NumberTagU) \ |
| 152 V(NumberUntagD) \ | 152 V(NumberUntagD) \ |
| 153 V(OsrEntry) \ | 153 V(OsrEntry) \ |
| 154 V(OuterContext) \ | 154 V(OuterContext) \ |
| 155 V(Parameter) \ | 155 V(Parameter) \ |
| 156 V(Power) \ | 156 V(Power) \ |
| 157 V(Random) \ | |
| 158 V(PushArgument) \ | 157 V(PushArgument) \ |
| 159 V(RegExpLiteral) \ | 158 V(RegExpLiteral) \ |
| 160 V(Return) \ | 159 V(Return) \ |
| 161 V(SeqStringGetChar) \ | 160 V(SeqStringGetChar) \ |
| 162 V(SeqStringSetChar) \ | 161 V(SeqStringSetChar) \ |
| 163 V(ShiftI) \ | 162 V(ShiftI) \ |
| 164 V(SmiTag) \ | 163 V(SmiTag) \ |
| 165 V(SmiUntag) \ | 164 V(SmiUntag) \ |
| 166 V(StackCheck) \ | 165 V(StackCheck) \ |
| 167 V(StoreCodeEntry) \ | 166 V(StoreCodeEntry) \ |
| (...skipping 1202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1370 } | 1369 } |
| 1371 | 1370 |
| 1372 LOperand* string() const { return inputs_[0]; } | 1371 LOperand* string() const { return inputs_[0]; } |
| 1373 LOperand* index() const { return inputs_[1]; } | 1372 LOperand* index() const { return inputs_[1]; } |
| 1374 | 1373 |
| 1375 DECLARE_CONCRETE_INSTRUCTION(SeqStringGetChar, "seq-string-get-char") | 1374 DECLARE_CONCRETE_INSTRUCTION(SeqStringGetChar, "seq-string-get-char") |
| 1376 DECLARE_HYDROGEN_ACCESSOR(SeqStringGetChar) | 1375 DECLARE_HYDROGEN_ACCESSOR(SeqStringGetChar) |
| 1377 }; | 1376 }; |
| 1378 | 1377 |
| 1379 | 1378 |
| 1380 class LSeqStringSetChar V8_FINAL : public LTemplateInstruction<1, 3, 0> { | 1379 class LSeqStringSetChar V8_FINAL : public LTemplateInstruction<1, 4, 0> { |
| 1381 public: | 1380 public: |
| 1382 LSeqStringSetChar(LOperand* string, | 1381 LSeqStringSetChar(LOperand* context, |
| 1382 LOperand* string, |
| 1383 LOperand* index, | 1383 LOperand* index, |
| 1384 LOperand* value) { | 1384 LOperand* value) { |
| 1385 inputs_[0] = string; | 1385 inputs_[0] = context; |
| 1386 inputs_[1] = index; | 1386 inputs_[1] = string; |
| 1387 inputs_[2] = value; | 1387 inputs_[2] = index; |
| 1388 inputs_[3] = value; |
| 1388 } | 1389 } |
| 1389 | 1390 |
| 1390 LOperand* string() { return inputs_[0]; } | 1391 LOperand* string() { return inputs_[1]; } |
| 1391 LOperand* index() { return inputs_[1]; } | 1392 LOperand* index() { return inputs_[2]; } |
| 1392 LOperand* value() { return inputs_[2]; } | 1393 LOperand* value() { return inputs_[3]; } |
| 1393 | 1394 |
| 1394 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char") | 1395 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char") |
| 1395 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar) | 1396 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar) |
| 1396 }; | 1397 }; |
| 1397 | 1398 |
| 1398 | 1399 |
| 1399 class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> { | 1400 class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> { |
| 1400 public: | 1401 public: |
| 1401 LThrow(LOperand* context, LOperand* value) { | 1402 LThrow(LOperand* context, LOperand* value) { |
| 1402 inputs_[0] = context; | 1403 inputs_[0] = context; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1453 } | 1454 } |
| 1454 | 1455 |
| 1455 LOperand* left() { return inputs_[0]; } | 1456 LOperand* left() { return inputs_[0]; } |
| 1456 LOperand* right() { return inputs_[1]; } | 1457 LOperand* right() { return inputs_[1]; } |
| 1457 | 1458 |
| 1458 DECLARE_CONCRETE_INSTRUCTION(Power, "power") | 1459 DECLARE_CONCRETE_INSTRUCTION(Power, "power") |
| 1459 DECLARE_HYDROGEN_ACCESSOR(Power) | 1460 DECLARE_HYDROGEN_ACCESSOR(Power) |
| 1460 }; | 1461 }; |
| 1461 | 1462 |
| 1462 | 1463 |
| 1463 class LRandom V8_FINAL : public LTemplateInstruction<1, 1, 3> { | |
| 1464 public: | |
| 1465 LRandom(LOperand* global_object, | |
| 1466 LOperand* scratch, | |
| 1467 LOperand* scratch2, | |
| 1468 LOperand* scratch3) { | |
| 1469 inputs_[0] = global_object; | |
| 1470 temps_[0] = scratch; | |
| 1471 temps_[1] = scratch2; | |
| 1472 temps_[2] = scratch3; | |
| 1473 } | |
| 1474 | |
| 1475 LOperand* global_object() const { return inputs_[0]; } | |
| 1476 LOperand* scratch() const { return temps_[0]; } | |
| 1477 LOperand* scratch2() const { return temps_[1]; } | |
| 1478 LOperand* scratch3() const { return temps_[2]; } | |
| 1479 | |
| 1480 DECLARE_CONCRETE_INSTRUCTION(Random, "random") | |
| 1481 DECLARE_HYDROGEN_ACCESSOR(Random) | |
| 1482 }; | |
| 1483 | |
| 1484 | |
| 1485 class LArithmeticD V8_FINAL : public LTemplateInstruction<1, 2, 0> { | 1464 class LArithmeticD V8_FINAL : public LTemplateInstruction<1, 2, 0> { |
| 1486 public: | 1465 public: |
| 1487 LArithmeticD(Token::Value op, LOperand* left, LOperand* right) | 1466 LArithmeticD(Token::Value op, LOperand* left, LOperand* right) |
| 1488 : op_(op) { | 1467 : op_(op) { |
| 1489 inputs_[0] = left; | 1468 inputs_[0] = left; |
| 1490 inputs_[1] = right; | 1469 inputs_[1] = right; |
| 1491 } | 1470 } |
| 1492 | 1471 |
| 1493 LOperand* left() { return inputs_[0]; } | 1472 LOperand* left() { return inputs_[0]; } |
| 1494 LOperand* right() { return inputs_[1]; } | 1473 LOperand* right() { return inputs_[1]; } |
| (...skipping 1415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2910 LInstruction* DefineX87TOS(LTemplateInstruction<1, I, T>* instr); | 2889 LInstruction* DefineX87TOS(LTemplateInstruction<1, I, T>* instr); |
| 2911 // Assigns an environment to an instruction. An instruction which can | 2890 // Assigns an environment to an instruction. An instruction which can |
| 2912 // deoptimize must have an environment. | 2891 // deoptimize must have an environment. |
| 2913 LInstruction* AssignEnvironment(LInstruction* instr); | 2892 LInstruction* AssignEnvironment(LInstruction* instr); |
| 2914 // Assigns a pointer map to an instruction. An instruction which can | 2893 // Assigns a pointer map to an instruction. An instruction which can |
| 2915 // trigger a GC or a lazy deoptimization must have a pointer map. | 2894 // trigger a GC or a lazy deoptimization must have a pointer map. |
| 2916 LInstruction* AssignPointerMap(LInstruction* instr); | 2895 LInstruction* AssignPointerMap(LInstruction* instr); |
| 2917 | 2896 |
| 2918 enum CanDeoptimize { CAN_DEOPTIMIZE_EAGERLY, CANNOT_DEOPTIMIZE_EAGERLY }; | 2897 enum CanDeoptimize { CAN_DEOPTIMIZE_EAGERLY, CANNOT_DEOPTIMIZE_EAGERLY }; |
| 2919 | 2898 |
| 2899 LOperand* GetSeqStringSetCharOperand(HSeqStringSetChar* instr); |
| 2900 |
| 2920 // Marks a call for the register allocator. Assigns a pointer map to | 2901 // Marks a call for the register allocator. Assigns a pointer map to |
| 2921 // support GC and lazy deoptimization. Assigns an environment to support | 2902 // support GC and lazy deoptimization. Assigns an environment to support |
| 2922 // eager deoptimization if CAN_DEOPTIMIZE_EAGERLY. | 2903 // eager deoptimization if CAN_DEOPTIMIZE_EAGERLY. |
| 2923 LInstruction* MarkAsCall( | 2904 LInstruction* MarkAsCall( |
| 2924 LInstruction* instr, | 2905 LInstruction* instr, |
| 2925 HInstruction* hinstr, | 2906 HInstruction* hinstr, |
| 2926 CanDeoptimize can_deoptimize = CANNOT_DEOPTIMIZE_EAGERLY); | 2907 CanDeoptimize can_deoptimize = CANNOT_DEOPTIMIZE_EAGERLY); |
| 2927 | 2908 |
| 2928 LEnvironment* CreateEnvironment(HEnvironment* hydrogen_env, | 2909 LEnvironment* CreateEnvironment(HEnvironment* hydrogen_env, |
| 2929 int* argument_index_accumulator, | 2910 int* argument_index_accumulator, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2955 | 2936 |
| 2956 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2937 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 2957 }; | 2938 }; |
| 2958 | 2939 |
| 2959 #undef DECLARE_HYDROGEN_ACCESSOR | 2940 #undef DECLARE_HYDROGEN_ACCESSOR |
| 2960 #undef DECLARE_CONCRETE_INSTRUCTION | 2941 #undef DECLARE_CONCRETE_INSTRUCTION |
| 2961 | 2942 |
| 2962 } } // namespace v8::internal | 2943 } } // namespace v8::internal |
| 2963 | 2944 |
| 2964 #endif // V8_IA32_LITHIUM_IA32_H_ | 2945 #endif // V8_IA32_LITHIUM_IA32_H_ |
| OLD | NEW |