diff options
Diffstat (limited to 'Source/JavaScriptCore/jit/JITStubs.h')
-rw-r--r-- | Source/JavaScriptCore/jit/JITStubs.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/Source/JavaScriptCore/jit/JITStubs.h b/Source/JavaScriptCore/jit/JITStubs.h index 3bf13bbdf..fe64cd9bc 100644 --- a/Source/JavaScriptCore/jit/JITStubs.h +++ b/Source/JavaScriptCore/jit/JITStubs.h @@ -99,7 +99,7 @@ namespace JSC { MacroAssemblerCodePtr ctiNativeConstruct; }; -#if CPU(X86_64) +#if !OS(WINDOWS) && CPU(X86_64) struct JITStackFrame { void* reserved; // Unused JITStubArg args[6]; @@ -123,6 +123,34 @@ namespace JSC { // When JIT code makes a call, it pushes its return address just below the rest of the stack. ReturnAddressPtr* returnAddressSlot() { return reinterpret_cast<ReturnAddressPtr*>(this) - 1; } }; +#elif OS(WINDOWS) && CPU(X86_64) + struct JITStackFrame { + void* shadow[4]; // Shadow space reserved for a callee's parameters home addresses + void* reserved; // Unused, also maintains the 16-bytes stack alignment + JITStubArg args[6]; + + void* savedRBX; + void* savedR15; + void* savedR14; + void* savedR13; + void* savedR12; + void* savedRBP; + void* savedRIP; + + // Home addresses for our register passed parameters + // http://msdn.microsoft.com/en-us/library/ew5tede7.aspx + void* code; + JSStack* stack; + CallFrame* callFrame; + void* unused1; + + // Passed on the stack + void* unused2; + JSGlobalData* globalData; + + // When JIT code makes a call, it pushes its return address just below the rest of the stack. + ReturnAddressPtr* returnAddressSlot() { return reinterpret_cast<ReturnAddressPtr*>(this) - 1; } + }; #elif CPU(X86) #if COMPILER(MSVC) || (OS(WINDOWS) && COMPILER(GCC)) #pragma pack(push) |