Explicação para a chamada?

digitalizando a internet, estou tendo dificuldade em entender de uma maneira simples - o termo call-site (@dlr). tenho estado a ler aqui esse local é:

Um site diz:

o local em que o método é chamado.

Um livro diz:
Ligue para o local . Este é o tipo de átomo do DLR - a menor peça de Code quepodem ser considerados como uma única unidade. Uma expressão pode contém um monte de sites de chamadas, mas o behavioris construído no forma natural, avaliando um local de chamada de cada vez. Para o resto da discussão, só vamos analisar um único local de chamada de cada vez. É ... vai ser útil para ter um pequeno exemplo de um site de chamada para se referir para, então aqui está uma muito simples, onde d é, claro, uma variável de tipo dinâmico

D. Foo(10); o sítio de chamada é representado em código como a Sistema.Execucao.CompilerServices.Local de chamada.

Outro livro diz:

A compilador emite código que eventualmente resulta em uma árvore de expressões isto descreve a operação, gerida por um site de chamada que o DLR irá amarrar em tempo de execução. O sítio de chamada funciona essencialmente como intermediário entre o chamador e a callee.

desculpa , eu não posso ver onde essas 3 explicações se combinam numa explicação simples.

Terei todo o gosto em obter uma explicação simples:
Como posso explicar a minha mulher-o que são os call-sites ?

Author: Royi Namir, 2012-06-02

2 answers

A primeira explicação não tem nada a ver com o dlr ou o tipo dinâmico: simplesmente falando, um site de chamada é um local (ou site) no código fonte onde um método é chamado.

Ao implementar o tipo dinâmico, é necessário armazenar informações sobre as chamadas do método dinâmico contidas no seu código, para que possam ser invocadas em tempo de execução (o dlr precisa de procurar o método, resolver cargas excessivas, etc.). Parece natural que o objecto que representa esta informação também deve ser chamado de "site de chamada".

 11
Author: phoog, 2012-06-02 13:32:52
É assim que eu vejo as coisas.

Para este exemplo a chamada é simplesmente como um método ou função que executa algum código e retorna.

Para um programa de tempo de execução de linguagem estática (C, ou CLR etc) um site de chamada é essencialmente onde uma chamada de função ocorre. É o local para o qual a chamada retornará em um fluxo normal (não excepcional). Uma vez que este é um programa estático, o site de chamada é simplesmente um local de memória, empurrado na pilha.

Para um programa de linguagem dinâmica (Ruby, Python, etc), o código que você está chamando não é trabalhado até o tempo de execução. Isto significa que alguma forma de lógica é necessária para gerenciar o processo de fazer a chamada de função correta e, em seguida, limpar após a chamada (Se necessário). Se o programa de linguagem dinâmica estiver em .NET 4 isto é feito usando DLR (dynamic language runtime) objectos do tipo System.Execucao.CompilerServices.Local de chamada. Assim a chamada retornará a um método dentro do objeto do CallSite e, em seguida, para a localização do original chamar.

Então a resposta é que depende de como você faz a chamada e, portanto, que plataforma você está usando.

 4
Author: Preet Sangha, 2012-06-02 10:53:18