Função FunctionTailcall
Notifica o criador de perfil de que a função em execução está prestes a executar uma chamada tail para outra função.
Observação
A função FunctionTailcall
foi preterida no .NET Framework versão 2.0. Ela continuará funcionando, mas incorrerá em uma penalidade de desempenho. Em vez disso, use a função FunctionTailcall2.
Sintaxe
void __stdcall FunctionTailcall (
[in] FunctionID funcID
);
Parâmetros
funcID
[in] O identificador da função em execução que está prestes a fazer uma chamada tail.
Comentários
A função de destino da chamada tail usará o registro de ativação atual e retornará diretamente ao chamador da função que fez a chamada tail. Isso significa que um retorno de chamada FunctionLeave não será emitido para uma função que é o destino de uma chamada tail.
A função FunctionTailcall
é um retorno de chamada e você deve implementá-la. A implementação precisa usar o atributo __declspec
(naked
) da classe de armazenamento.
O mecanismo de execução não salva nenhum registro antes de chamar essa função.
Na entrada, você precisa salvar todos os registros usados, incluindo aqueles na FPU (unidade de ponto flutuante).
Na saída, você deve restaurar a pilha removendo todos os parâmetros que foram enviados por push pelo chamador.
A implementação de FunctionTailcall
não deve ser bloqueada porque atrasará a coleta de lixo. A implementação não deve tentar fazer uma coleta de lixo porque a pilha pode não estar em um estado adequado para a coleta de lixo. Se houver uma tentativa de coleta de lixo, o runtime será bloqueado até retornar FunctionTailcall
.
Além disso, a função FunctionTailcall
não deve chamar o código gerenciado ou de alguma forma causar uma alocação de memória gerenciada.
Requisitos
Plataformas: confira Requisitos do sistema.
Cabeçalho: CorProf.idl
Biblioteca: CorGuids.lib
Versões do .NET Framework: 1.1, 1.0