blob: c3c37ff7c2ea53b06e92bb01ce159a0138b6c13b [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
.intel_syntax noprefix
#include "unixasmmacros.inc"
//============================================================================================================
// Fake __chkstk
//============================================================================================================
.balign 16
LEAF_ENTRY __chkstk, _TEXT
ret
LEAF_END __chkstk, _TEXT
//============================================================================================================
// NativeCodeGenerator::CheckCodeGenThunk
//============================================================================================================
//.extern _ZN19NativeCodeGenerator12CheckCodeGenEPN2Js14ScriptFunctionE
.balign 16
NESTED_ENTRY _ZN19NativeCodeGenerator17CheckCodeGenThunkEPN2Js16RecyclableObjectENS0_8CallInfoEz, _TEXT, NoHandler
push_nonvol_reg rbp
lea rbp, [rsp]
// save argument registers used by custom calling convention
push_register rdi
push_register rsi
// Js::JavascriptMethod NativeCodeGenerator::CheckCodeGen(
// Js::ScriptFunction * function)
//
// RDI == function, setup by custom calling convention
call C_FUNC(_ZN19NativeCodeGenerator12CheckCodeGenEPN2Js14ScriptFunctionE)
pop_register rsi
pop_register rdi
pop_nonvol_reg rbp
jmp rax
NESTED_END _ZN19NativeCodeGenerator17CheckCodeGenThunkEPN2Js16RecyclableObjectENS0_8CallInfoEz, _TEXT
//============================================================================================================
// NativeCodeGenerator::CheckAsmJsCodeGenThunk
//============================================================================================================
//.extern _ZN19NativeCodeGenerator17CheckAsmJsCodeGenEPN2Js14ScriptFunctionE
.balign 16
NESTED_ENTRY _ZN19NativeCodeGenerator22CheckAsmJsCodeGenThunkEPN2Js16RecyclableObjectENS0_8CallInfoEz, _TEXT, NoHandler
push_nonvol_reg rbp // push rbp and adjust CFA offset
lea rbp, [rsp]
set_cfa_register rbp, (2*8) // Set to compute CFA as: rbp + 16 (sizeof: [rbp] [ReturnAddress])
// save argument registers used by custom calling convention
push rdi
push rsi
push rdx
push rcx
push r8
push r9
sub rsp, 0x40
// ----- TODO: potentially xmm0-xmm7 args
// spill potential floating point arguments to stack
movaps xmmword ptr [rsp + 0x00], xmm0
movaps xmmword ptr [rsp + 0x10], xmm1
movaps xmmword ptr [rsp + 0x20], xmm2
movaps xmmword ptr [rsp + 0x30], xmm3
call C_FUNC(_ZN19NativeCodeGenerator17CheckAsmJsCodeGenEPN2Js14ScriptFunctionE)
// restore potential floating point arguments from stack
movaps xmm0, xmmword ptr [rsp + 0x00]
movaps xmm1, xmmword ptr [rsp + 0x10]
movaps xmm2, xmmword ptr [rsp + 0x20]
movaps xmm3, xmmword ptr [rsp + 0x30]
add rsp, 0x40
pop r9
pop r8
pop rcx
pop rdx
pop rsi
pop rdi
pop_nonvol_reg rbp
jmp rax
NESTED_END _ZN19NativeCodeGenerator22CheckAsmJsCodeGenThunkEPN2Js16RecyclableObjectENS0_8CallInfoEz, _TEXT