5 votes

Comment Smalltalk manipule-t-il les cadres de la pile d'appels (thisContext) ?

L'objet Smalltalk thisContext semblent étranges et merveilleuses. Je n'arrive pas à comprendre ce que c'est et comment ça fonctionne. Et même comment il permet les continuations.

Pour la pile d'appels de C, je peux facilement imaginer comment elle est mise en œuvre et fonctionne. Mais pour ça... Je ne peux pas. S'il vous plaît aidez-moi à le comprendre.

5voto

Je pense que ce n'est pas une question facile. La pile est réifiée dans l'image avec des instances de MethodContext. Un MethodContext peut avoir un expéditeur, qui est un autre MethodContext. Celui-ci peut en avoir un autre... ce qui génère une pile entière. Les MethodContext sont instanciés par la VM lors de l'exécution des CompiledMethod (qui sont également réifiés dans le langage).

Comment les MethodContext sont mappés à la pile C, cela dépend de la VM. StackVM (CogVM est au dessus de StackVM) est exactement une VM qui permet de mieux faire correspondre les MethodContext à la pile C.

En dehors du BlueBook que Lukas a dit, vérifiez

http://www.mirandabanda.org/cogblog/ vérifier à gauche les postes...

Je vous recommande de demander à http://lists.squeakfoundation.org/mailman/listinfo/vm-dev

4voto

Lukas Renggli Points 6454

La meilleure explication que vous pouvez trouver dans Smalltalk-80 : Le langage et son implémentation Les chapitres 26 à 30. Les cadres de pile (contextes) sont expliqués à la page 580.

3voto

Frank Shearar Points 12481

Il est plus correct de dire que thisContext est une suite - la suite actuelle, en particulier.

Imaginez une variable c que, juste avant un MethodContext s'active, est défini pour pointer vers ce contexte. C'est thisContext .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X