| OLD | NEW |
| 1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 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 6935 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6946 ExternalReference scope_depth = | 6946 ExternalReference scope_depth = |
| 6947 ExternalReference::heap_always_allocate_scope_depth(); | 6947 ExternalReference::heap_always_allocate_scope_depth(); |
| 6948 if (always_allocate_scope) { | 6948 if (always_allocate_scope) { |
| 6949 __ movq(kScratchRegister, scope_depth); | 6949 __ movq(kScratchRegister, scope_depth); |
| 6950 __ incl(Operand(kScratchRegister, 0)); | 6950 __ incl(Operand(kScratchRegister, 0)); |
| 6951 } | 6951 } |
| 6952 | 6952 |
| 6953 // Call C function. | 6953 // Call C function. |
| 6954 #ifdef _WIN64 | 6954 #ifdef _WIN64 |
| 6955 // Windows 64-bit ABI passes arguments in rcx, rdx, r8, r9 | 6955 // Windows 64-bit ABI passes arguments in rcx, rdx, r8, r9 |
| 6956 // Store Arguments object on stack | 6956 // Store Arguments object on stack, below the 4 WIN64 ABI parameter slots. |
| 6957 __ movq(Operand(rsp, 1 * kPointerSize), r14); // argc. | 6957 __ movq(Operand(rsp, 4 * kPointerSize), r14); // argc. |
| 6958 __ movq(Operand(rsp, 2 * kPointerSize), r15); // argv. | 6958 __ movq(Operand(rsp, 5 * kPointerSize), r15); // argv. |
| 6959 // Pass a pointer to the Arguments object as the first argument. | 6959 // Pass a pointer to the Arguments object as the first argument. |
| 6960 __ lea(rcx, Operand(rsp, 1 * kPointerSize)); | 6960 __ lea(rcx, Operand(rsp, 4 * kPointerSize)); |
| 6961 #else // ! defined(_WIN64) | 6961 #else // ! defined(_WIN64) |
| 6962 // GCC passes arguments in rdi, rsi, rdx, rcx, r8, r9. | 6962 // GCC passes arguments in rdi, rsi, rdx, rcx, r8, r9. |
| 6963 __ movq(rdi, r14); // argc. | 6963 __ movq(rdi, r14); // argc. |
| 6964 __ movq(rsi, r15); // argv. | 6964 __ movq(rsi, r15); // argv. |
| 6965 #endif | 6965 #endif |
| 6966 __ call(rbx); | 6966 __ call(rbx); |
| 6967 // Result is in rax - do not destroy this register! | 6967 // Result is in rax - do not destroy this register! |
| 6968 | 6968 |
| 6969 if (always_allocate_scope) { | 6969 if (always_allocate_scope) { |
| 6970 __ movq(kScratchRegister, scope_depth); | 6970 __ movq(kScratchRegister, scope_depth); |
| (...skipping 893 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7864 int CompareStub::MinorKey() { | 7864 int CompareStub::MinorKey() { |
| 7865 // Encode the two parameters in a unique 16 bit value. | 7865 // Encode the two parameters in a unique 16 bit value. |
| 7866 ASSERT(static_cast<unsigned>(cc_) < (1 << 15)); | 7866 ASSERT(static_cast<unsigned>(cc_) < (1 << 15)); |
| 7867 return (static_cast<unsigned>(cc_) << 1) | (strict_ ? 1 : 0); | 7867 return (static_cast<unsigned>(cc_) << 1) | (strict_ ? 1 : 0); |
| 7868 } | 7868 } |
| 7869 | 7869 |
| 7870 | 7870 |
| 7871 #undef __ | 7871 #undef __ |
| 7872 | 7872 |
| 7873 } } // namespace v8::internal | 7873 } } // namespace v8::internal |
| OLD | NEW |