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 1359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1370 } | 1370 } |
1371 | 1371 |
1372 LOperand* string() const { return inputs_[0]; } | 1372 LOperand* string() const { return inputs_[0]; } |
1373 LOperand* index() const { return inputs_[1]; } | 1373 LOperand* index() const { return inputs_[1]; } |
1374 | 1374 |
1375 DECLARE_CONCRETE_INSTRUCTION(SeqStringGetChar, "seq-string-get-char") | 1375 DECLARE_CONCRETE_INSTRUCTION(SeqStringGetChar, "seq-string-get-char") |
1376 DECLARE_HYDROGEN_ACCESSOR(SeqStringGetChar) | 1376 DECLARE_HYDROGEN_ACCESSOR(SeqStringGetChar) |
1377 }; | 1377 }; |
1378 | 1378 |
1379 | 1379 |
1380 class LSeqStringSetChar V8_FINAL : public LTemplateInstruction<1, 3, 0> { | 1380 class LSeqStringSetChar V8_FINAL : public LTemplateInstruction<1, 4, 0> { |
1381 public: | 1381 public: |
1382 LSeqStringSetChar(LOperand* string, | 1382 LSeqStringSetChar(LOperand* context, |
| 1383 LOperand* string, |
1383 LOperand* index, | 1384 LOperand* index, |
1384 LOperand* value) { | 1385 LOperand* value) { |
1385 inputs_[0] = string; | 1386 inputs_[0] = context; |
1386 inputs_[1] = index; | 1387 inputs_[1] = string; |
1387 inputs_[2] = value; | 1388 inputs_[2] = index; |
| 1389 inputs_[3] = value; |
1388 } | 1390 } |
1389 | 1391 |
1390 LOperand* string() { return inputs_[0]; } | 1392 LOperand* string() { return inputs_[1]; } |
1391 LOperand* index() { return inputs_[1]; } | 1393 LOperand* index() { return inputs_[2]; } |
1392 LOperand* value() { return inputs_[2]; } | 1394 LOperand* value() { return inputs_[3]; } |
1393 | 1395 |
1394 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char") | 1396 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char") |
1395 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar) | 1397 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar) |
1396 }; | 1398 }; |
1397 | 1399 |
1398 | 1400 |
1399 class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> { | 1401 class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> { |
1400 public: | 1402 public: |
1401 LThrow(LOperand* context, LOperand* value) { | 1403 LThrow(LOperand* context, LOperand* value) { |
1402 inputs_[0] = context; | 1404 inputs_[0] = context; |
(...skipping 1507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2910 LInstruction* DefineX87TOS(LTemplateInstruction<1, I, T>* instr); | 2912 LInstruction* DefineX87TOS(LTemplateInstruction<1, I, T>* instr); |
2911 // Assigns an environment to an instruction. An instruction which can | 2913 // Assigns an environment to an instruction. An instruction which can |
2912 // deoptimize must have an environment. | 2914 // deoptimize must have an environment. |
2913 LInstruction* AssignEnvironment(LInstruction* instr); | 2915 LInstruction* AssignEnvironment(LInstruction* instr); |
2914 // Assigns a pointer map to an instruction. An instruction which can | 2916 // Assigns a pointer map to an instruction. An instruction which can |
2915 // trigger a GC or a lazy deoptimization must have a pointer map. | 2917 // trigger a GC or a lazy deoptimization must have a pointer map. |
2916 LInstruction* AssignPointerMap(LInstruction* instr); | 2918 LInstruction* AssignPointerMap(LInstruction* instr); |
2917 | 2919 |
2918 enum CanDeoptimize { CAN_DEOPTIMIZE_EAGERLY, CANNOT_DEOPTIMIZE_EAGERLY }; | 2920 enum CanDeoptimize { CAN_DEOPTIMIZE_EAGERLY, CANNOT_DEOPTIMIZE_EAGERLY }; |
2919 | 2921 |
| 2922 LOperand* GetSeqStringSetCharOperand(HSeqStringSetChar* instr); |
| 2923 |
2920 // Marks a call for the register allocator. Assigns a pointer map to | 2924 // Marks a call for the register allocator. Assigns a pointer map to |
2921 // support GC and lazy deoptimization. Assigns an environment to support | 2925 // support GC and lazy deoptimization. Assigns an environment to support |
2922 // eager deoptimization if CAN_DEOPTIMIZE_EAGERLY. | 2926 // eager deoptimization if CAN_DEOPTIMIZE_EAGERLY. |
2923 LInstruction* MarkAsCall( | 2927 LInstruction* MarkAsCall( |
2924 LInstruction* instr, | 2928 LInstruction* instr, |
2925 HInstruction* hinstr, | 2929 HInstruction* hinstr, |
2926 CanDeoptimize can_deoptimize = CANNOT_DEOPTIMIZE_EAGERLY); | 2930 CanDeoptimize can_deoptimize = CANNOT_DEOPTIMIZE_EAGERLY); |
2927 | 2931 |
2928 LEnvironment* CreateEnvironment(HEnvironment* hydrogen_env, | 2932 LEnvironment* CreateEnvironment(HEnvironment* hydrogen_env, |
2929 int* argument_index_accumulator, | 2933 int* argument_index_accumulator, |
(...skipping 25 matching lines...) Expand all Loading... |
2955 | 2959 |
2956 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2960 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
2957 }; | 2961 }; |
2958 | 2962 |
2959 #undef DECLARE_HYDROGEN_ACCESSOR | 2963 #undef DECLARE_HYDROGEN_ACCESSOR |
2960 #undef DECLARE_CONCRETE_INSTRUCTION | 2964 #undef DECLARE_CONCRETE_INSTRUCTION |
2961 | 2965 |
2962 } } // namespace v8::internal | 2966 } } // namespace v8::internal |
2963 | 2967 |
2964 #endif // V8_IA32_LITHIUM_IA32_H_ | 2968 #endif // V8_IA32_LITHIUM_IA32_H_ |
OLD | NEW |