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 2564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2575 __ movq(rax, Operand(rsp, 6 * kPointerSize)); | 2575 __ movq(rax, Operand(rsp, 6 * kPointerSize)); |
2576 __ movq(rdx, Operand(rsp, 7 * kPointerSize)); | 2576 __ movq(rdx, Operand(rsp, 7 * kPointerSize)); |
2577 } | 2577 } |
2578 #endif | 2578 #endif |
2579 __ lea(rcx, Operand(rax, 1)); | 2579 __ lea(rcx, Operand(rax, 1)); |
2580 // Lower 2 bits of rcx are 0 iff rax has failure tag. | 2580 // Lower 2 bits of rcx are 0 iff rax has failure tag. |
2581 __ testl(rcx, Immediate(kFailureTagMask)); | 2581 __ testl(rcx, Immediate(kFailureTagMask)); |
2582 __ j(zero, &failure_returned); | 2582 __ j(zero, &failure_returned); |
2583 | 2583 |
2584 // Exit the JavaScript to C++ exit frame. | 2584 // Exit the JavaScript to C++ exit frame. |
2585 __ LeaveExitFrame(result_size_); | 2585 __ LeaveExitFrame(); |
2586 __ ret(0); | 2586 __ ret(0); |
2587 | 2587 |
2588 // Handling of failure. | 2588 // Handling of failure. |
2589 __ bind(&failure_returned); | 2589 __ bind(&failure_returned); |
2590 | 2590 |
2591 NearLabel retry; | 2591 NearLabel retry; |
2592 // If the returned exception is RETRY_AFTER_GC continue at retry label | 2592 // If the returned exception is RETRY_AFTER_GC continue at retry label |
2593 STATIC_ASSERT(Failure::RETRY_AFTER_GC == 0); | 2593 STATIC_ASSERT(Failure::RETRY_AFTER_GC == 0); |
2594 __ testl(rax, Immediate(((1 << kFailureTypeTagSize) - 1) << kFailureTagSize)); | 2594 __ testl(rax, Immediate(((1 << kFailureTypeTagSize) - 1) << kFailureTagSize)); |
2595 __ j(zero, &retry); | 2595 __ j(zero, &retry); |
(...skipping 1387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3983 // tagged as a small integer. | 3983 // tagged as a small integer. |
3984 __ bind(&runtime); | 3984 __ bind(&runtime); |
3985 __ TailCallRuntime(Runtime::kStringCompare, 2, 1); | 3985 __ TailCallRuntime(Runtime::kStringCompare, 2, 1); |
3986 } | 3986 } |
3987 | 3987 |
3988 #undef __ | 3988 #undef __ |
3989 | 3989 |
3990 } } // namespace v8::internal | 3990 } } // namespace v8::internal |
3991 | 3991 |
3992 #endif // V8_TARGET_ARCH_X64 | 3992 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |