| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/v8.h" | 5 #include "src/v8.h" | 
| 6 | 6 | 
| 7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM | 
| 8 | 8 | 
| 9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" | 
| 10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" | 
| (...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 554   // NOTICE! This code is only reached after a smi-fast-case check, so | 554   // NOTICE! This code is only reached after a smi-fast-case check, so | 
| 555   // it is certain that at least one operand isn't a smi. | 555   // it is certain that at least one operand isn't a smi. | 
| 556 | 556 | 
| 557   // Handle the case where the objects are identical.  Either returns the answer | 557   // Handle the case where the objects are identical.  Either returns the answer | 
| 558   // or goes to slow.  Only falls through if the objects were not identical. | 558   // or goes to slow.  Only falls through if the objects were not identical. | 
| 559   EmitIdenticalObjectComparison(masm, &slow, cc); | 559   EmitIdenticalObjectComparison(masm, &slow, cc); | 
| 560 | 560 | 
| 561   // If either is a Smi (we know that not both are), then they can only | 561   // If either is a Smi (we know that not both are), then they can only | 
| 562   // be strictly equal if the other is a HeapNumber. | 562   // be strictly equal if the other is a HeapNumber. | 
| 563   STATIC_ASSERT(kSmiTag == 0); | 563   STATIC_ASSERT(kSmiTag == 0); | 
| 564   DCHECK_EQ(0, Smi::FromInt(0)); | 564   DCHECK_EQ(static_cast<Smi*>(0), Smi::FromInt(0)); | 
| 565   __ and_(r2, lhs, Operand(rhs)); | 565   __ and_(r2, lhs, Operand(rhs)); | 
| 566   __ JumpIfNotSmi(r2, ¬_smis); | 566   __ JumpIfNotSmi(r2, ¬_smis); | 
| 567   // One operand is a smi.  EmitSmiNonsmiComparison generates code that can: | 567   // One operand is a smi.  EmitSmiNonsmiComparison generates code that can: | 
| 568   // 1) Return the answer. | 568   // 1) Return the answer. | 
| 569   // 2) Go to slow. | 569   // 2) Go to slow. | 
| 570   // 3) Fall through to both_loaded_as_doubles. | 570   // 3) Fall through to both_loaded_as_doubles. | 
| 571   // 4) Jump to lhs_not_nan. | 571   // 4) Jump to lhs_not_nan. | 
| 572   // In cases 3 and 4 we have found out we were dealing with a number-number | 572   // In cases 3 and 4 we have found out we were dealing with a number-number | 
| 573   // comparison.  If VFP3 is supported the double values of the numbers have | 573   // comparison.  If VFP3 is supported the double values of the numbers have | 
| 574   // been loaded into d7 and d6.  Otherwise, the double values have been loaded | 574   // been loaded into d7 and d6.  Otherwise, the double values have been loaded | 
| (...skipping 4368 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4943                            kStackUnwindSpace, NULL, | 4943                            kStackUnwindSpace, NULL, | 
| 4944                            MemOperand(fp, 6 * kPointerSize), NULL); | 4944                            MemOperand(fp, 6 * kPointerSize), NULL); | 
| 4945 } | 4945 } | 
| 4946 | 4946 | 
| 4947 | 4947 | 
| 4948 #undef __ | 4948 #undef __ | 
| 4949 | 4949 | 
| 4950 } }  // namespace v8::internal | 4950 } }  // namespace v8::internal | 
| 4951 | 4951 | 
| 4952 #endif  // V8_TARGET_ARCH_ARM | 4952 #endif  // V8_TARGET_ARCH_ARM | 
| OLD | NEW | 
|---|