OLD | NEW |
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2009 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 4678 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4689 __ mov(pc, Operand(lr), LeaveCC, eq); // Return equal | 4689 __ mov(pc, Operand(lr), LeaveCC, eq); // Return equal |
4690 if (cc == le) { | 4690 if (cc == le) { |
4691 __ mov(r0, Operand(GREATER)); // NaN <= NaN should fail. | 4691 __ mov(r0, Operand(GREATER)); // NaN <= NaN should fail. |
4692 } else { | 4692 } else { |
4693 __ mov(r0, Operand(LESS)); // NaN >= NaN should fail. | 4693 __ mov(r0, Operand(LESS)); // NaN >= NaN should fail. |
4694 } | 4694 } |
4695 } | 4695 } |
4696 __ mov(pc, Operand(lr)); // Return. | 4696 __ mov(pc, Operand(lr)); // Return. |
4697 } | 4697 } |
4698 // No fall through here. | 4698 // No fall through here. |
4699 } | 4699 } |
4700 | 4700 |
4701 __ bind(¬_identical); | 4701 __ bind(¬_identical); |
4702 } | 4702 } |
4703 | 4703 |
4704 | 4704 |
4705 // See comment at call site. | 4705 // See comment at call site. |
4706 static void EmitSmiNonsmiComparison(MacroAssembler* masm, | 4706 static void EmitSmiNonsmiComparison(MacroAssembler* masm, |
4707 Label* rhs_not_nan, | 4707 Label* rhs_not_nan, |
4708 Label* slow, | 4708 Label* slow, |
4709 bool strict) { | 4709 bool strict) { |
(...skipping 1793 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6503 __ bind(&slow); | 6503 __ bind(&slow); |
6504 __ mov(r0, Operand(argc_)); // Setup the number of arguments. | 6504 __ mov(r0, Operand(argc_)); // Setup the number of arguments. |
6505 __ mov(r2, Operand(0)); | 6505 __ mov(r2, Operand(0)); |
6506 __ GetBuiltinEntry(r3, Builtins::CALL_NON_FUNCTION); | 6506 __ GetBuiltinEntry(r3, Builtins::CALL_NON_FUNCTION); |
6507 __ Jump(Handle<Code>(Builtins::builtin(Builtins::ArgumentsAdaptorTrampoline)), | 6507 __ Jump(Handle<Code>(Builtins::builtin(Builtins::ArgumentsAdaptorTrampoline)), |
6508 RelocInfo::CODE_TARGET); | 6508 RelocInfo::CODE_TARGET); |
6509 } | 6509 } |
6510 | 6510 |
6511 | 6511 |
6512 const char* CompareStub::GetName() { | 6512 const char* CompareStub::GetName() { |
6513 switch(cc_) { | 6513 switch (cc_) { |
6514 case lt: return "CompareStub_LT"; | 6514 case lt: return "CompareStub_LT"; |
6515 case gt: return "CompareStub_GT"; | 6515 case gt: return "CompareStub_GT"; |
6516 case le: return "CompareStub_LE"; | 6516 case le: return "CompareStub_LE"; |
6517 case ge: return "CompareStub_GE"; | 6517 case ge: return "CompareStub_GE"; |
6518 case ne: { | 6518 case ne: { |
6519 if (strict_) { | 6519 if (strict_) { |
6520 if (never_nan_nan_) { | 6520 if (never_nan_nan_) { |
6521 return "CompareStub_NE_STRICT_NO_NAN"; | 6521 return "CompareStub_NE_STRICT_NO_NAN"; |
6522 } else { | 6522 } else { |
6523 return "CompareStub_NE_STRICT"; | 6523 return "CompareStub_NE_STRICT"; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6555 ASSERT(static_cast<unsigned>(cc_) < (1 << 14)); | 6555 ASSERT(static_cast<unsigned>(cc_) < (1 << 14)); |
6556 int nnn_value = (never_nan_nan_ ? 2 : 0); | 6556 int nnn_value = (never_nan_nan_ ? 2 : 0); |
6557 if (cc_ != eq) nnn_value = 0; // Avoid duplicate stubs. | 6557 if (cc_ != eq) nnn_value = 0; // Avoid duplicate stubs. |
6558 return (static_cast<unsigned>(cc_) >> 26) | nnn_value | (strict_ ? 1 : 0); | 6558 return (static_cast<unsigned>(cc_) >> 26) | nnn_value | (strict_ ? 1 : 0); |
6559 } | 6559 } |
6560 | 6560 |
6561 | 6561 |
6562 #undef __ | 6562 #undef __ |
6563 | 6563 |
6564 } } // namespace v8::internal | 6564 } } // namespace v8::internal |
OLD | NEW |