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

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

Issue 57383004: Improve implementation of HSeqStringSetChar. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Increase GVNFlags to 64bit. Add StringChars flag. Created 7 years, 1 month 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
OLDNEW
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 1321 matching lines...) Expand 10 before | Expand all | Expand 10 after
1332 1332
1333 Smi* index() const { return index_; } 1333 Smi* index() const { return index_; }
1334 1334
1335 private: 1335 private:
1336 Smi* index_; 1336 Smi* index_;
1337 }; 1337 };
1338 1338
1339 1339
1340 class LSeqStringSetChar V8_FINAL : public LTemplateInstruction<1, 3, 0> { 1340 class LSeqStringSetChar V8_FINAL : public LTemplateInstruction<1, 3, 0> {
1341 public: 1341 public:
1342 LSeqStringSetChar(String::Encoding encoding, 1342 LSeqStringSetChar(LOperand* string,
1343 LOperand* string,
1344 LOperand* index, 1343 LOperand* index,
1345 LOperand* value) : encoding_(encoding) { 1344 LOperand* value) {
1346 inputs_[0] = string; 1345 inputs_[0] = string;
1347 inputs_[1] = index; 1346 inputs_[1] = index;
1348 inputs_[2] = value; 1347 inputs_[2] = value;
1349 } 1348 }
1350 1349
1351 String::Encoding encoding() { return encoding_; }
1352 LOperand* string() { return inputs_[0]; } 1350 LOperand* string() { return inputs_[0]; }
1353 LOperand* index() { return inputs_[1]; } 1351 LOperand* index() { return inputs_[1]; }
1354 LOperand* value() { return inputs_[2]; } 1352 LOperand* value() { return inputs_[2]; }
1355 1353
1356 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char") 1354 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char")
1357 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar) 1355 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar)
1358
1359 private:
1360 String::Encoding encoding_;
1361 }; 1356 };
1362 1357
1363 1358
1364 class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> { 1359 class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> {
1365 public: 1360 public:
1366 LThrow(LOperand* context, LOperand* value) { 1361 LThrow(LOperand* context, LOperand* value) {
1367 inputs_[0] = context; 1362 inputs_[0] = context;
1368 inputs_[1] = value; 1363 inputs_[1] = value;
1369 } 1364 }
1370 1365
(...skipping 1454 matching lines...) Expand 10 before | Expand all | Expand 10 after
2825 MUST_USE_RESULT LOperand* UseTempRegister(HValue* value); 2820 MUST_USE_RESULT LOperand* UseTempRegister(HValue* value);
2826 2821
2827 // An input operand in a register or stack slot. 2822 // An input operand in a register or stack slot.
2828 MUST_USE_RESULT LOperand* Use(HValue* value); 2823 MUST_USE_RESULT LOperand* Use(HValue* value);
2829 MUST_USE_RESULT LOperand* UseAtStart(HValue* value); 2824 MUST_USE_RESULT LOperand* UseAtStart(HValue* value);
2830 2825
2831 // An input operand in a register, stack slot or a constant operand. 2826 // An input operand in a register, stack slot or a constant operand.
2832 MUST_USE_RESULT LOperand* UseOrConstant(HValue* value); 2827 MUST_USE_RESULT LOperand* UseOrConstant(HValue* value);
2833 MUST_USE_RESULT LOperand* UseOrConstantAtStart(HValue* value); 2828 MUST_USE_RESULT LOperand* UseOrConstantAtStart(HValue* value);
2834 2829
2830 // An input operand in a fixed register or a constant operand.
2831 MUST_USE_RESULT LOperand* UseFixedOrConstant(HValue* value,
2832 Register fixed_register);
2833
2835 // An input operand in a register or a constant operand. 2834 // An input operand in a register or a constant operand.
2836 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value); 2835 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value);
2837 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value); 2836 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value);
2838 2837
2839 // An input operand in a constant operand. 2838 // An input operand in a constant operand.
2840 MUST_USE_RESULT LOperand* UseConstant(HValue* value); 2839 MUST_USE_RESULT LOperand* UseConstant(HValue* value);
2841 2840
2842 // An input operand in register, stack slot or a constant operand. 2841 // An input operand in register, stack slot or a constant operand.
2843 // Will not be moved to a register even if one is freely available. 2842 // Will not be moved to a register even if one is freely available.
2844 MUST_USE_RESULT LOperand* UseAny(HValue* value); 2843 MUST_USE_RESULT LOperand* UseAny(HValue* value);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
2915 2914
2916 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2915 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2917 }; 2916 };
2918 2917
2919 #undef DECLARE_HYDROGEN_ACCESSOR 2918 #undef DECLARE_HYDROGEN_ACCESSOR
2920 #undef DECLARE_CONCRETE_INSTRUCTION 2919 #undef DECLARE_CONCRETE_INSTRUCTION
2921 2920
2922 } } // namespace v8::internal 2921 } } // namespace v8::internal
2923 2922
2924 #endif // V8_IA32_LITHIUM_IA32_H_ 2923 #endif // V8_IA32_LITHIUM_IA32_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698