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

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

Issue 6369005: X64: Fix bug in DoBranch that miss detecting NaN as falsy. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge/build-x64
Patch Set: Copied changes from ia32 to lithium-x64.cc 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') | no next file » | 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 1308 matching lines...) Expand 10 before | Expand all | Expand 10 after
1319 DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction, "call-constant-function") 1319 DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction, "call-constant-function")
1320 DECLARE_HYDROGEN_ACCESSOR(CallConstantFunction) 1320 DECLARE_HYDROGEN_ACCESSOR(CallConstantFunction)
1321 1321
1322 virtual void PrintDataTo(StringStream* stream); 1322 virtual void PrintDataTo(StringStream* stream);
1323 1323
1324 Handle<JSFunction> function() { return hydrogen()->function(); } 1324 Handle<JSFunction> function() { return hydrogen()->function(); }
1325 int arity() const { return hydrogen()->argument_count() - 1; } 1325 int arity() const { return hydrogen()->argument_count() - 1; }
1326 }; 1326 };
1327 1327
1328 1328
1329 class LCallKeyed: public LTemplateInstruction<1, 0, 1> { 1329 class LCallKeyed: public LTemplateInstruction<1, 1, 0> {
1330 public: 1330 public:
1331 explicit LCallKeyed(LOperand* temp) { 1331 explicit LCallKeyed(LOperand* key) {
1332 temps_[0] = temp; 1332 inputs_[0] = key;
1333 } 1333 }
1334 1334
1335 DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed") 1335 DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed")
1336 DECLARE_HYDROGEN_ACCESSOR(CallKeyed) 1336 DECLARE_HYDROGEN_ACCESSOR(CallKeyed)
1337 1337
1338 virtual void PrintDataTo(StringStream* stream); 1338 virtual void PrintDataTo(StringStream* stream);
1339 1339
1340 int arity() const { return hydrogen()->argument_count() - 1; } 1340 int arity() const { return hydrogen()->argument_count() - 1; }
1341 }; 1341 };
1342 1342
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after
1891 // Operand created by UseRegister is guaranteed to be live until the end of 1891 // Operand created by UseRegister is guaranteed to be live until the end of
1892 // instruction. This means that register allocator will not reuse it's 1892 // instruction. This means that register allocator will not reuse it's
1893 // register for any other operand inside instruction. 1893 // register for any other operand inside instruction.
1894 // Operand created by UseRegisterAtStart is guaranteed to be live only at 1894 // Operand created by UseRegisterAtStart is guaranteed to be live only at
1895 // instruction start. Register allocator is free to assign the same register 1895 // instruction start. Register allocator is free to assign the same register
1896 // to some other operand used inside instruction (i.e. temporary or 1896 // to some other operand used inside instruction (i.e. temporary or
1897 // output). 1897 // output).
1898 MUST_USE_RESULT LOperand* UseRegister(HValue* value); 1898 MUST_USE_RESULT LOperand* UseRegister(HValue* value);
1899 MUST_USE_RESULT LOperand* UseRegisterAtStart(HValue* value); 1899 MUST_USE_RESULT LOperand* UseRegisterAtStart(HValue* value);
1900 1900
1901 // A value in a register that may be trashed. 1901 // An input operand in a register that may be trashed.
1902 MUST_USE_RESULT LOperand* UseTempRegister(HValue* value); 1902 MUST_USE_RESULT LOperand* UseTempRegister(HValue* value);
1903 1903
1904 // An operand value in a register or stack slot. 1904 // An input operand in a register or stack slot.
1905 MUST_USE_RESULT LOperand* Use(HValue* value); 1905 MUST_USE_RESULT LOperand* Use(HValue* value);
1906 MUST_USE_RESULT LOperand* UseAtStart(HValue* value); 1906 MUST_USE_RESULT LOperand* UseAtStart(HValue* value);
1907 1907
1908 // An operand value in a register, stack slot or a constant operand. 1908 // An input operand in a register, stack slot or a constant operand.
1909 MUST_USE_RESULT LOperand* UseOrConstant(HValue* value); 1909 MUST_USE_RESULT LOperand* UseOrConstant(HValue* value);
1910 MUST_USE_RESULT LOperand* UseOrConstantAtStart(HValue* value); 1910 MUST_USE_RESULT LOperand* UseOrConstantAtStart(HValue* value);
1911 1911
1912 // An operand value in a register or a constant operand. 1912 // An input operand in a register or a constant operand.
1913 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value); 1913 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value);
1914 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value); 1914 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value);
1915 1915
1916 // An input operand in register, stack slot or a constant operand.
1917 // Will not be moved to a register even if one is freely available.
1918 MUST_USE_RESULT LOperand* UseAny(HValue* value);
1919
1916 // Temporary operand that must be in a register. 1920 // Temporary operand that must be in a register.
1917 MUST_USE_RESULT LUnallocated* TempRegister(); 1921 MUST_USE_RESULT LUnallocated* TempRegister();
1918 MUST_USE_RESULT LOperand* FixedTemp(Register reg); 1922 MUST_USE_RESULT LOperand* FixedTemp(Register reg);
1919 MUST_USE_RESULT LOperand* FixedTemp(XMMRegister reg); 1923 MUST_USE_RESULT LOperand* FixedTemp(XMMRegister reg);
1920 1924
1921 // An operand value in register, stack slot or a constant operand.
1922 // Will not be moved to a register even if one is freely available.
1923 LOperand* UseAny(HValue* value);
1924
1925 // Methods for setting up define-use relationships. 1925 // Methods for setting up define-use relationships.
1926 // Return the same instruction that they are passed. 1926 // Return the same instruction that they are passed.
1927 template<int I, int T> 1927 template<int I, int T>
1928 LInstruction* Define(LTemplateInstruction<1, I, T>* instr, 1928 LInstruction* Define(LTemplateInstruction<1, I, T>* instr,
1929 LUnallocated* result); 1929 LUnallocated* result);
1930 template<int I, int T> 1930 template<int I, int T>
1931 LInstruction* Define(LTemplateInstruction<1, I, T>* instr); 1931 LInstruction* Define(LTemplateInstruction<1, I, T>* instr);
1932 template<int I, int T> 1932 template<int I, int T>
1933 LInstruction* DefineAsRegister(LTemplateInstruction<1, I, T>* instr); 1933 LInstruction* DefineAsRegister(LTemplateInstruction<1, I, T>* instr);
1934 template<int I, int T> 1934 template<int I, int T>
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1987 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 1987 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
1988 }; 1988 };
1989 1989
1990 #undef DECLARE_HYDROGEN_ACCESSOR 1990 #undef DECLARE_HYDROGEN_ACCESSOR
1991 #undef DECLARE_INSTRUCTION 1991 #undef DECLARE_INSTRUCTION
1992 #undef DECLARE_CONCRETE_INSTRUCTION 1992 #undef DECLARE_CONCRETE_INSTRUCTION
1993 1993
1994 } } // namespace v8::int 1994 } } // namespace v8::int
1995 1995
1996 #endif // V8_X64_LITHIUM_X64_H_ 1996 #endif // V8_X64_LITHIUM_X64_H_
OLDNEW
« no previous file with comments | « src/x64/lithium-codegen-x64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698