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 976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
987 // TODO(1243899): This should be symmetric to | 987 // TODO(1243899): This should be symmetric to |
988 // CopyRegistersFromStackToMemory() but it isn't! esp is assumed | 988 // CopyRegistersFromStackToMemory() but it isn't! esp is assumed |
989 // correct here, but computed for the other call. Very error | 989 // correct here, but computed for the other call. Very error |
990 // prone! FIX THIS. Actually there are deeper problems with | 990 // prone! FIX THIS. Actually there are deeper problems with |
991 // register saving than this asymmetry (see the bug report | 991 // register saving than this asymmetry (see the bug report |
992 // associated with this issue). | 992 // associated with this issue). |
993 PushRegistersFromMemory(kJSCallerSaved); | 993 PushRegistersFromMemory(kJSCallerSaved); |
994 } | 994 } |
995 #endif | 995 #endif |
996 | 996 |
997 // Reserve space for two arguments: argc and argv | 997 // Reserve space for the Arguments object. The Windows 64-bit ABI |
998 subq(rsp, Immediate(2 * kPointerSize)); | 998 // requires us to pass this structure as a pointer to its location on |
| 999 // the stack. We also need backing space for the pointer, even though |
| 1000 // it is passed in a register. |
| 1001 subq(rsp, Immediate(3 * kPointerSize)); |
999 | 1002 |
1000 // Get the required frame alignment for the OS. | 1003 // Get the required frame alignment for the OS. |
1001 static const int kFrameAlignment = OS::ActivationFrameAlignment(); | 1004 static const int kFrameAlignment = OS::ActivationFrameAlignment(); |
1002 if (kFrameAlignment > 0) { | 1005 if (kFrameAlignment > 0) { |
1003 ASSERT(IsPowerOf2(kFrameAlignment)); | 1006 ASSERT(IsPowerOf2(kFrameAlignment)); |
1004 movq(kScratchRegister, Immediate(-kFrameAlignment)); | 1007 movq(kScratchRegister, Immediate(-kFrameAlignment)); |
1005 and_(rsp, kScratchRegister); | 1008 and_(rsp, kScratchRegister); |
1006 } | 1009 } |
1007 | 1010 |
1008 // Patch the saved entry sp. | 1011 // Patch the saved entry sp. |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1195 Context::SECURITY_TOKEN_INDEX * kPointerSize; | 1198 Context::SECURITY_TOKEN_INDEX * kPointerSize; |
1196 movq(scratch, FieldOperand(scratch, token_offset)); | 1199 movq(scratch, FieldOperand(scratch, token_offset)); |
1197 cmpq(scratch, FieldOperand(kScratchRegister, token_offset)); | 1200 cmpq(scratch, FieldOperand(kScratchRegister, token_offset)); |
1198 j(not_equal, miss); | 1201 j(not_equal, miss); |
1199 | 1202 |
1200 bind(&same_contexts); | 1203 bind(&same_contexts); |
1201 } | 1204 } |
1202 | 1205 |
1203 | 1206 |
1204 } } // namespace v8::internal | 1207 } } // namespace v8::internal |
OLD | NEW |