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 |