| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 9950 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9961 | 9961 |
| 9962 // eax: result string | 9962 // eax: result string |
| 9963 // ecx: result string length | 9963 // ecx: result string length |
| 9964 __ mov(edx, esi); // esi used by following code. | 9964 __ mov(edx, esi); // esi used by following code. |
| 9965 // Locate first character of result. | 9965 // Locate first character of result. |
| 9966 __ mov(edi, eax); | 9966 __ mov(edi, eax); |
| 9967 __ add(Operand(edi), | 9967 __ add(Operand(edi), |
| 9968 Immediate(SeqTwoByteString::kHeaderSize - kHeapObjectTag)); | 9968 Immediate(SeqTwoByteString::kHeaderSize - kHeapObjectTag)); |
| 9969 // Load string argument and locate character of sub string start. | 9969 // Load string argument and locate character of sub string start. |
| 9970 __ mov(esi, Operand(esp, 3 * kPointerSize)); | 9970 __ mov(esi, Operand(esp, 3 * kPointerSize)); |
| 9971 __ add(Operand(esi), Immediate(SeqAsciiString::kHeaderSize - kHeapObjectTag)); | 9971 __ add(Operand(esi), |
| 9972 Immediate(SeqTwoByteString::kHeaderSize - kHeapObjectTag)); |
| 9972 __ mov(ebx, Operand(esp, 2 * kPointerSize)); // from | 9973 __ mov(ebx, Operand(esp, 2 * kPointerSize)); // from |
| 9973 // As from is a smi it is 2 times the value which matches the size of a two | 9974 // As from is a smi it is 2 times the value which matches the size of a two |
| 9974 // byte character. | 9975 // byte character. |
| 9975 ASSERT_EQ(0, kSmiTag); | 9976 ASSERT_EQ(0, kSmiTag); |
| 9976 ASSERT_EQ(1, kSmiTagSize + kSmiShiftSize); | 9977 ASSERT_EQ(1, kSmiTagSize + kSmiShiftSize); |
| 9977 __ add(esi, Operand(ebx)); | 9978 __ add(esi, Operand(ebx)); |
| 9978 | 9979 |
| 9979 // eax: result string | 9980 // eax: result string |
| 9980 // ecx: result length | 9981 // ecx: result length |
| 9981 // edx: original value of esi | 9982 // edx: original value of esi |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10103 | 10104 |
| 10104 // Call the runtime; it returns -1 (less), 0 (equal), or 1 (greater) | 10105 // Call the runtime; it returns -1 (less), 0 (equal), or 1 (greater) |
| 10105 // tagged as a small integer. | 10106 // tagged as a small integer. |
| 10106 __ bind(&runtime); | 10107 __ bind(&runtime); |
| 10107 __ TailCallRuntime(ExternalReference(Runtime::kStringCompare), 2, 1); | 10108 __ TailCallRuntime(ExternalReference(Runtime::kStringCompare), 2, 1); |
| 10108 } | 10109 } |
| 10109 | 10110 |
| 10110 #undef __ | 10111 #undef __ |
| 10111 | 10112 |
| 10112 } } // namespace v8::internal | 10113 } } // namespace v8::internal |
| OLD | NEW |