https://wiki.freepascal.org/index.php?title=Whole_Program_Optimization/fr&feed=atom&action=history
Whole Program Optimization/fr - Revision history
2024-03-29T15:01:10Z
Revision history for this page on the wiki
MediaWiki 1.35.6
https://wiki.freepascal.org/index.php?title=Whole_Program_Optimization/fr&diff=153196&oldid=prev
Kai Burghardt: resolve Category: Pages using deprecated enclose attributes
2022-08-06T15:15:23Z
<p>resolve <a href="/index.php?title=Category:Pages_using_deprecated_enclose_attributes&action=edit&redlink=1" class="new" title="Category:Pages using deprecated enclose attributes (page does not exist)">Category: Pages using deprecated enclose attributes</a></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 15:15, 6 August 2022</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l22" >Line 22:</td>
<td colspan="2" class="diff-lineno">Line 22:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Générer le fichier de rétroaction WPO (WPO feedback file) ===</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Générer le fichier de rétroaction WPO (WPO feedback file) ===</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>En tout premier, compilez votre programme (ou bibliothèque) et toutes ses unités comme vous le feriez normalement, mais en compilant, vous ajoutez <syntaxhighlight lang="bash">-FW/path/to/feedbackfile.wpo -OW<selected_wpo_options></syntaxhighlight>.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>En tout premier, compilez votre programme (ou bibliothèque) et toutes ses unités comme vous le feriez normalement, mais en compilant, vous ajoutez <syntaxhighlight lang="bash">-FW/path/to/feedbackfile.wpo -OW<selected_wpo_options></syntaxhighlight>.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Le compilateur va alors, juste après que votre programme a été lié, collecter toutes les informations nécessaires pour effectuer les OGP demandés lors d'une compilation successive, et stocker ces informations dans <syntaxhighlight lang="bash" <del class="diffchange diffchange-inline">enclose="none"</del>>/path/to/feedbackfile.wpo</syntaxhighlight>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Le compilateur va alors, juste après que votre programme a été lié, collecter toutes les informations nécessaires pour effectuer les OGP demandés lors d'une compilation successive, et stocker ces informations dans <syntaxhighlight lang="bash" <ins class="diffchange diffchange-inline">inline</ins>>/path/to/feedbackfile.wpo</syntaxhighlight>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Utiliser le fichier de rétroaction WPO ===</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Utiliser le fichier de rétroaction WPO ===</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l32" >Line 32:</td>
<td colspan="2" class="diff-lineno">Line 32:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>L'exemple ci-dessous fait référence à [http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/tests/test/opt/twpo4.pp?revision=12341&pathrev=12341 <tt>twpo4.pp</tt>].</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>L'exemple ci-dessous fait référence à [http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/tests/test/opt/twpo4.pp?revision=12341&pathrev=12341 <tt>twpo4.pp</tt>].</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Compilez le programme une première fois, en collectant les rétroactions dans <syntaxhighlight lang="bash" <del class="diffchange diffchange-inline">enclose="none"</del>>twpo4-1.wpo</syntaxhighlight> dans le répertoire courant.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Compilez le programme une première fois, en collectant les rétroactions dans <syntaxhighlight lang="bash" <ins class="diffchange diffchange-inline">inline</ins>>twpo4-1.wpo</syntaxhighlight> dans le répertoire courant.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Le compilateur enregistrera les classes créées dans le programme (<tt>tchild1</tt> et <tt>tchild2</tt>), et après l'étape de liaison également que <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>> notcalled </syntaxhighlight> n'est en fait pas appelée.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Le compilateur enregistrera les classes créées dans le programme (<tt>tchild1</tt> et <tt>tchild2</tt>), et après l'étape de liaison également que <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>> notcalled </syntaxhighlight> n'est en fait pas appelée.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Ensuite, enregistrez le code assembleur généré dans <syntaxhighlight lang="bash" <del class="diffchange diffchange-inline">enclose="none"</del>>twpo4.s1</syntaxhighlight> pour une comparaison ultérieure.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Ensuite, enregistrez le code assembleur généré dans <syntaxhighlight lang="bash" <ins class="diffchange diffchange-inline">inline</ins>>twpo4.s1</syntaxhighlight> pour une comparaison ultérieure.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="bash"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="bash"></div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l50" >Line 50:</td>
<td colspan="2" class="diff-lineno">Line 50:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Maintenant compilez le programme une seconde fois, en utilisant l'information dans <syntaxhighlight lang="bash" <del class="diffchange diffchange-inline">enclose="none"</del>>twpo4-1.wpo</syntaxhighlight> et en collectant de nouvelles informations dans <syntaxhighlight lang="bash" <del class="diffchange diffchange-inline">enclose="none"</del>>twpo4-2.wpo</syntaxhighlight>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Maintenant compilez le programme une seconde fois, en utilisant l'information dans <syntaxhighlight lang="bash" <ins class="diffchange diffchange-inline">inline</ins>>twpo4-1.wpo</syntaxhighlight> et en collectant de nouvelles informations dans <syntaxhighlight lang="bash" <ins class="diffchange diffchange-inline">inline</ins>>twpo4-2.wpo</syntaxhighlight>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Arrivé à ce point, le compilateur sait qu'aucune instance de la classe <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>tbase</syntaxhighlight> n'est créée dans le programme et par conséquent il remplace toutes les entrées normales dans sa table de méthodes virtuelles par des références à <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>FPC_ABSTRACTERROR</syntaxhighlight>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Arrivé à ce point, le compilateur sait qu'aucune instance de la classe <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>tbase</syntaxhighlight> n'est créée dans le programme et par conséquent il remplace toutes les entrées normales dans sa table de méthodes virtuelles par des références à <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>FPC_ABSTRACTERROR</syntaxhighlight>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Les méthodes de classes virtuelles ne peuvent pas être éliminées de cette façon, puisqu'elles peuvent être appelées sans construire d'instance de ce type.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Les méthodes de classes virtuelles ne peuvent pas être éliminées de cette façon, puisqu'elles peuvent être appelées sans construire d'instance de ce type.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Parce que le compilateur connaît depuis le précédent fichier de rétroaction généré que la procédure <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>notcalled</syntaxhighlight> n'est jamais appelée, il enregistrera aussi que seule une instance de <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>tchild1</syntaxhighlight> est créée, comme l'instance <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>tchild2</syntaxhighlight> était seulement créée dans cette procédure <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>notcalled</syntaxhighlight>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Parce que le compilateur connaît depuis le précédent fichier de rétroaction généré que la procédure <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>notcalled</syntaxhighlight> n'est jamais appelée, il enregistrera aussi que seule une instance de <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>tchild1</syntaxhighlight> est créée, comme l'instance <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>tchild2</syntaxhighlight> était seulement créée dans cette procédure <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>notcalled</syntaxhighlight>.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>À des fins d'optimisation, il considérera cependant toujours qu'une instance de <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>> tchild2 </syntaxhighlight> peut être créée, car à des fins d'optimisation, il utilise toujours le fichier de rétroaction généré lors de la compilation précédente .</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>À des fins d'optimisation, il considérera cependant toujours qu'une instance de <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>> tchild2 </syntaxhighlight> peut être créée, car à des fins d'optimisation, il utilise toujours le fichier de rétroaction généré lors de la compilation précédente .</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Ensuite, nous enregistrons à nouveau le code assembleur généré pour des comparaisons ultérieures.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Ensuite, nous enregistrons à nouveau le code assembleur généré pour des comparaisons ultérieures.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l72" >Line 72:</td>
<td colspan="2" class="diff-lineno">Line 72:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Compilez le programme une dernière fois, en utilisant les informations collectées dans <syntaxhighlight lang="bash" <del class="diffchange diffchange-inline">enclose="none"</del>>twpo4-2.wpo</syntaxhighlight>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Compilez le programme une dernière fois, en utilisant les informations collectées dans <syntaxhighlight lang="bash" <ins class="diffchange diffchange-inline">inline</ins>>twpo4-2.wpo</syntaxhighlight>.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Cette fois, le compilateur sait que seul une instance de <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>tchild1</syntaxhighlight> est créée, et va par conséquent remplacer l'appel <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>bb.test</syntaxhighlight> depuis une méthode virtuelle par une méthode statique (car il sait que même si le type de <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>bb</syntaxhighlight> est <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>tbase</syntaxhighlight>, en pratique il ne peut être qu'un <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>tchild1</syntaxhighlight> car aucune instance de <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>tbase</syntaxhighlight> ou autre instance de classe descendant de <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>tbase</syntaxhighlight> n'est créée.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Cette fois, le compilateur sait que seul une instance de <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>tchild1</syntaxhighlight> est créée, et va par conséquent remplacer l'appel <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>bb.test</syntaxhighlight> depuis une méthode virtuelle par une méthode statique (car il sait que même si le type de <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>bb</syntaxhighlight> est <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>tbase</syntaxhighlight>, en pratique il ne peut être qu'un <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>tchild1</syntaxhighlight> car aucune instance de <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>tbase</syntaxhighlight> ou autre instance de classe descendant de <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>tbase</syntaxhighlight> n'est créée.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="bash"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="bash"></div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l120" >Line 120:</td>
<td colspan="2" class="diff-lineno">Line 120:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Comme vous pouvez le voir, toutes les références aux méthodes virtuelles dans la VMT de <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>tbase</syntaxhighlight> ont été retirées, puisque le compilateur sait qu'elles ne peuvent pas être réféencées.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Comme vous pouvez le voir, toutes les références aux méthodes virtuelles dans la VMT de <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>tbase</syntaxhighlight> ont été retirées, puisque le compilateur sait qu'elles ne peuvent pas être réféencées.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Cela permet à l'éditeur de liens de jeter ces méthodes si elles ne sont référencées nulle part ailleurs non plus.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Cela permet à l'éditeur de liens de jeter ces méthodes si elles ne sont référencées nulle part ailleurs non plus.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Dans notre exemple, c'est seulement vrai pour <syntaxhighlight lang="pascal" <del class="diffchange diffchange-inline">enclose="none"</del>>tbase.test</syntaxhighlight>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Dans notre exemple, c'est seulement vrai pour <syntaxhighlight lang="pascal" <ins class="diffchange diffchange-inline">inline</ins>>tbase.test</syntaxhighlight>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Maintenant regardons l'effet de la seconde recompilation:</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Maintenant regardons l'effet de la seconde recompilation:</div></td></tr>
</table>
Kai Burghardt
https://wiki.freepascal.org/index.php?title=Whole_Program_Optimization/fr&diff=141570&oldid=prev
E-ric: /* Format de fichier de rétroaction WPO */
2020-12-15T11:15:57Z
<p><span dir="auto"><span class="autocomment">Format de fichier de rétroaction WPO</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 11:15, 15 December 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l216" >Line 216:</td>
<td colspan="2" class="diff-lineno">Line 216:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Le fichier consiste en commentaires et un nombre de sections.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Le fichier consiste en commentaires et un nombre de sections.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Les commentaires sont des lignes qui commencent avec un <<del class="diffchange diffchange-inline">syntaxhighlight lang="bash" enclose="none"</del>>#</<del class="diffchange diffchange-inline">syntaxhighlight</del>>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Les commentaires sont des lignes qui commencent avec un <ins class="diffchange diffchange-inline">"</ins><<ins class="diffchange diffchange-inline">tt</ins>>#</<ins class="diffchange diffchange-inline">tt</ins>><ins class="diffchange diffchange-inline">"</ins>.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Chaque section commence avec <<del class="diffchange diffchange-inline">syntaxhighlight lang="bash" enclose="none"</del>>% </<del class="diffchange diffchange-inline">syntaxhighlight</del>> (signe pourcent <del class="diffchange diffchange-inline">sign </del>et espace) suivi du nom de la section (p.ex. <tt>% contextinsensitive_devirtualization</tt>).</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Chaque section commence avec <ins class="diffchange diffchange-inline">"</ins><<ins class="diffchange diffchange-inline">tt</ins>>% </<ins class="diffchange diffchange-inline">tt</ins>><ins class="diffchange diffchange-inline">" </ins>(signe pourcent et espace) suivi du nom de la section (p.ex. <ins class="diffchange diffchange-inline">"</ins><tt>% contextinsensitive_devirtualization</tt><ins class="diffchange diffchange-inline">"</ins>).</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Après cela, jusqu'à la fin du fichier ou jusqu'à la ligne suivante commençant par "<tt>% </tt>", suit d'abord une description lisible par l'homme du format de cette section (dans les commentaires), puis le contenu de la section elle-même.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Après cela, jusqu'à la fin du fichier ou jusqu'à la ligne suivante commençant par "<tt>% </tt>", suit d'abord une description lisible par l'homme du format de cette section (dans les commentaires), puis le contenu de la section elle-même.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Il n'y a pas de règles sur l'apparence du contenu d'une section, sauf que les lignes commençant par <<del class="diffchange diffchange-inline">syntaxhighlight lang="bash" enclose="none"</del>>#</<del class="diffchange diffchange-inline">syntaxhighlight</del>> sont réservées pour les commentaires et les lignes commençant par <<del class="diffchange diffchange-inline">syntaxhighlight lang="bash" enclose="none"</del>>% </<del class="diffchange diffchange-inline">syntaxhighlight</del>> sont réservés aux marqueurs de section.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Il n'y a pas de règles sur l'apparence du contenu d'une section, sauf que les lignes commençant par <ins class="diffchange diffchange-inline">"</ins><<ins class="diffchange diffchange-inline">tt</ins>>#</<ins class="diffchange diffchange-inline">tt</ins>><ins class="diffchange diffchange-inline">" </ins>sont réservées pour les commentaires et les lignes commençant par <ins class="diffchange diffchange-inline">"</ins><<ins class="diffchange diffchange-inline">tt</ins>>% </<ins class="diffchange diffchange-inline">tt</ins>><ins class="diffchange diffchange-inline">" </ins>sont réservés aux marqueurs de section.</div></td></tr>
</table>
E-ric
https://wiki.freepascal.org/index.php?title=Whole_Program_Optimization/fr&diff=141569&oldid=prev
E-ric: /* Format de fichier de rétroaction WPO */
2020-12-15T11:07:47Z
<p><span dir="auto"><span class="autocomment">Format de fichier de rétroaction WPO</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 11:07, 15 December 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l214" >Line 214:</td>
<td colspan="2" class="diff-lineno">Line 214:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Format de fichier de rétroaction WPO ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Format de fichier de rétroaction WPO ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Cette information est principalement intéressante si vous voulez ajouter des données externes au fichier de rétroaction WPO, p.ex. depuis un outil de profilage. Si vous êtes juste un utilisateur de la fonctionnalité WPO, vous pouvez ignorer ce qui suit.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Cette information est principalement intéressante si vous voulez ajouter des données externes au fichier de rétroaction WPO, p.ex. depuis un outil de profilage. Si vous êtes juste un utilisateur de la fonctionnalité WPO, vous pouvez ignorer ce qui suit.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Le fichier consiste en commentaires et un nombre de sections.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Le fichier consiste en commentaires et un nombre de sections.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Les commentaires sont des lignes qui commencent avec un <syntaxhighlight lang="bash" enclose="none">#</syntaxhighlight>.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Les commentaires sont des lignes qui commencent avec un <syntaxhighlight lang="bash" enclose="none">#</syntaxhighlight>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Chaque section commence avec <syntaxhighlight lang="bash" enclose="none">% </syntaxhighlight> (signe pourcent sign et espace) suivi du nom de la section (p.ex. <tt>% contextinsensitive_devirtualization</tt>).</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Chaque section commence avec <syntaxhighlight lang="bash" enclose="none">% </syntaxhighlight> (signe pourcent sign et espace) suivi du nom de la section (p.ex. <tt>% contextinsensitive_devirtualization</tt>).</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Après cela, jusqu'à la fin du fichier ou jusqu'à la ligne suivante commençant par "<tt>% </tt>", suit d'abord une description lisible par l'homme du format de cette section (dans les commentaires), puis le contenu de la section elle-même.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Après cela, jusqu'à la fin du fichier ou jusqu'à la ligne suivante commençant par "<tt>% </tt>", suit d'abord une description lisible par l'homme du format de cette section (dans les commentaires), puis le contenu de la section elle-même.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Il n'y a pas de règles sur l'apparence du contenu d'une section, sauf que les lignes commençant par <syntaxhighlight lang="bash" enclose="none">#</syntaxhighlight> sont réservées pour les commentaires et les lignes commençant par <syntaxhighlight lang="bash" enclose="none">% </syntaxhighlight> sont réservés aux marqueurs de section.</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Il n'y a pas de règles sur l'apparence du contenu d'une section, sauf que les lignes commençant par <syntaxhighlight lang="bash" enclose="none">#</syntaxhighlight> sont réservées pour les commentaires et les lignes commençant par <syntaxhighlight lang="bash" enclose="none">% </syntaxhighlight> sont réservés aux marqueurs de section.</div></td></tr>
</table>
E-ric
https://wiki.freepascal.org/index.php?title=Whole_Program_Optimization/fr&diff=141568&oldid=prev
E-ric: /* Format de fichier de rétroaction WPO */
2020-12-15T11:06:37Z
<p><span dir="auto"><span class="autocomment">Format de fichier de rétroaction WPO</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 11:06, 15 December 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l213" >Line 213:</td>
<td colspan="2" class="diff-lineno">Line 213:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Format de fichier de rétroaction WPO ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Format de fichier de rétroaction WPO ==</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">This </del>information <del class="diffchange diffchange-inline">is mainly interesting if you want to add external data to the </del>WPO <del class="diffchange diffchange-inline">feedback file</del>, <del class="diffchange diffchange-inline">e</del>.<del class="diffchange diffchange-inline">g</del>. <del class="diffchange diffchange-inline">from a profiling tool</del>. <del class="diffchange diffchange-inline">If you are just a user of the </del>WPO <del class="diffchange diffchange-inline">functionality</del>, <del class="diffchange diffchange-inline">you can ignore what follows</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Cette </ins>information <ins class="diffchange diffchange-inline">est principalement intéressante si vous voulez ajouter des données externes au fichier de rétroaction </ins>WPO, <ins class="diffchange diffchange-inline">p</ins>.<ins class="diffchange diffchange-inline">ex</ins>. <ins class="diffchange diffchange-inline">depuis un outil de profilage</ins>. <ins class="diffchange diffchange-inline">Si vous êtes juste un utilisateur de la fonctionnalité </ins>WPO, <ins class="diffchange diffchange-inline">vous pouvez ignorer ce qui suit</ins>.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Le fichier consiste en commentaires et un nombre de </ins>sections.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">The file consists of comments and a number of </del>sections.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Les commentaires sont des lignes qui commencent avec un </ins><syntaxhighlight lang="bash" enclose="none">#</syntaxhighlight>.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Comments are lines that start with a </del><syntaxhighlight lang="bash" enclose="none">#</syntaxhighlight>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Chaque </ins>section <ins class="diffchange diffchange-inline">commence avec </ins><syntaxhighlight lang="bash" enclose="none">% </syntaxhighlight> (<ins class="diffchange diffchange-inline">signe pourcent </ins>sign <ins class="diffchange diffchange-inline">et espace</ins>) <ins class="diffchange diffchange-inline">suivi du nom de la </ins>section (<ins class="diffchange diffchange-inline">p</ins>.<ins class="diffchange diffchange-inline">ex</ins>. <tt>% contextinsensitive_devirtualization</tt>).</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Each </del>section <del class="diffchange diffchange-inline">starts with </del><syntaxhighlight lang="bash" enclose="none">% </syntaxhighlight> (<del class="diffchange diffchange-inline">percent </del>sign <del class="diffchange diffchange-inline">and space</del>) <del class="diffchange diffchange-inline">followed by the name of the </del>section (<del class="diffchange diffchange-inline">e</del>.<del class="diffchange diffchange-inline">g</del>.<del class="diffchange diffchange-inline">,</del><tt>% contextinsensitive_devirtualization</tt>).</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Après cela</ins>, <ins class="diffchange diffchange-inline">jusqu'à la fin du fichier ou jusqu'à la ligne suivante commençant par </ins>"<tt>% </tt>", <ins class="diffchange diffchange-inline">suit d'abord une </ins>description <ins class="diffchange diffchange-inline">lisible par l'homme du </ins>format <ins class="diffchange diffchange-inline">de cette </ins>section (<ins class="diffchange diffchange-inline">dans les commentaires</ins>), <ins class="diffchange diffchange-inline">puis le contenu de la </ins>section <ins class="diffchange diffchange-inline">elle-même</ins>.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">After that</del>, <del class="diffchange diffchange-inline">until either the end of the file or until the next line starting with with </del>"<tt>% </tt>", <del class="diffchange diffchange-inline">first a human readable </del>description <del class="diffchange diffchange-inline">follows of the </del>format <del class="diffchange diffchange-inline">of this </del>section (<del class="diffchange diffchange-inline">in comments</del>), <del class="diffchange diffchange-inline">and then the contents of the </del>section <del class="diffchange diffchange-inline">itself</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Il n'y </ins>a <ins class="diffchange diffchange-inline">pas de règles sur l'apparence du contenu d'une </ins>section, <ins class="diffchange diffchange-inline">sauf que les lignes commençant par </ins><syntaxhighlight lang="bash" enclose="none">#</syntaxhighlight> <ins class="diffchange diffchange-inline">sont réservées pour les commentaires et les lignes commençant par </ins><syntaxhighlight lang="bash" enclose="none">% </syntaxhighlight> <ins class="diffchange diffchange-inline">sont réservés aux marqueurs de </ins>section.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">There are no rules for how the contents of </del>a section <del class="diffchange diffchange-inline">should look</del>, <del class="diffchange diffchange-inline">except that lines starting with </del><syntaxhighlight lang="bash" enclose="none">#</syntaxhighlight> <del class="diffchange diffchange-inline">are reserved for comments and lines starting with </del><syntaxhighlight lang="bash" enclose="none">% </syntaxhighlight> <del class="diffchange diffchange-inline">are reserved for </del>section <del class="diffchange diffchange-inline">markers</del>.</div></td><td colspan="2"> </td></tr>
</table>
E-ric
https://wiki.freepascal.org/index.php?title=Whole_Program_Optimization/fr&diff=141567&oldid=prev
E-ric: /* Vivacité de symbole */
2020-12-15T11:00:52Z
<p><span dir="auto"><span class="autocomment">Vivacité de symbole</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 11:00, 15 December 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l201" >Line 201:</td>
<td colspan="2" class="diff-lineno">Line 201:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* De telles optimisations ne sont pas encore faites pour les méthodes virtuelles de classe (mais cela ne devrait pas être difficile à ajouter).</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* De telles optimisations ne sont pas encore faites pour les méthodes virtuelles de classe (mais cela ne devrait pas être difficile à ajouter).</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>=== Vivacité de symbole ===</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>=== Vivacité de symbole <ins class="diffchange diffchange-inline">(Symbol liveness)</ins>===</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; <del class="diffchange diffchange-inline">parameter</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>; <ins class="diffchange diffchange-inline">paramètre</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>: <syntaxhighlight lang="bash"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>: <syntaxhighlight lang="bash"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>-OWsymbolliveness/-Owsymbolliveness</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>-OWsymbolliveness/-Owsymbolliveness</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; <del class="diffchange diffchange-inline">effect</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>; <ins class="diffchange diffchange-inline">effet</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>: <del class="diffchange diffchange-inline">This parameter does not perform any optimization by itself</del>. <del class="diffchange diffchange-inline">It simply tells the compiler to record which functions</del>/<del class="diffchange diffchange-inline">procedures were kept by the linker in the </del>final <del class="diffchange diffchange-inline">program</del>. <del class="diffchange diffchange-inline">During a subsequent </del>''wpo'' <del class="diffchange diffchange-inline">pass</del>, <del class="diffchange diffchange-inline">the compiler can then ignore the removed functions</del>/<del class="diffchange diffchange-inline">procedures as far as </del>''wpo'' <del class="diffchange diffchange-inline">is concerned </del>(<del class="diffchange diffchange-inline">e</del>.<del class="diffchange diffchange-inline">g</del>., <del class="diffchange diffchange-inline">if a particular class type is only constructed in one unused procedure</del>, <del class="diffchange diffchange-inline">then ignoring this procedure can improve the effectiveness of the previous two optimizations</del>).</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>: <ins class="diffchange diffchange-inline">Ce paramètre ne réalise aucune optimisation en lui-même</ins>. <ins class="diffchange diffchange-inline">Il dit simplement au compilateur d'enregistrer quelles fonctions</ins>/<ins class="diffchange diffchange-inline">procédures seront conservées dans le programme </ins>final. <ins class="diffchange diffchange-inline">Lors d'une passe </ins>''wpo'' <ins class="diffchange diffchange-inline">ultérieure</ins>, <ins class="diffchange diffchange-inline">le compilateur peut alors ignorer les fonctions</ins>/<ins class="diffchange diffchange-inline">procédures aussi loin que le </ins>''wpo'' <ins class="diffchange diffchange-inline">est concerné </ins>(<ins class="diffchange diffchange-inline">p</ins>.<ins class="diffchange diffchange-inline">ex</ins>. <ins class="diffchange diffchange-inline">si une classe particulière est seulement construite dans une procédure inutilisée</ins>, <ins class="diffchange diffchange-inline">alors en ignorant cette procédure</ins>, <ins class="diffchange diffchange-inline">on peut améliorer l'efficacité des deux optimisations précédentes</ins>).</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; limitations</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; limitations</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* <del class="diffchange diffchange-inline">This optimization requires that the </del><tt>nm(1)</tt> <del class="diffchange diffchange-inline">utility is installed on the system</del>. <del class="diffchange diffchange-inline">For Linux binaries</del>, <tt>objdump(1)</tt> <del class="diffchange diffchange-inline">will also work</del>. <del class="diffchange diffchange-inline">In the future</del>, <del class="diffchange diffchange-inline">this </del>information <del class="diffchange diffchange-inline">could also be extracted from the internal linker for the platforms that it supports</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* <ins class="diffchange diffchange-inline">Cette optimisation demande que l'utilitaire </ins><tt>nm(1)</tt> <ins class="diffchange diffchange-inline">soit installé sur le système</ins>. <ins class="diffchange diffchange-inline">Pour les binaires linux</ins>, <tt>objdump(1)</tt> <ins class="diffchange diffchange-inline">marchera aussi</ins>. <ins class="diffchange diffchange-inline">Dans le futur</ins>, <ins class="diffchange diffchange-inline">cette </ins>information <ins class="diffchange diffchange-inline">pourra être extraite aussi de l'éditeur de lien interne pour les plateformes qui le supporte</ins>.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* <del class="diffchange diffchange-inline">Collecting </del>information <del class="diffchange diffchange-inline">for this optimization </del>(<del class="diffchange diffchange-inline">using </del>-OWsymbolliveness) <del class="diffchange diffchange-inline">requires that smart linking is enabled </del>(-XX) <del class="diffchange diffchange-inline"> and that symbol stripping is disabled </del>(-Xs-). <del class="diffchange diffchange-inline">When only using such previously collected information </del>(<del class="diffchange diffchange-inline">using </del>-OwSymbolliveness <del class="diffchange diffchange-inline">or </del>-Owall), <del class="diffchange diffchange-inline">these </del>limitations <del class="diffchange diffchange-inline">do not apply</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* <ins class="diffchange diffchange-inline">La collection d'</ins>information <ins class="diffchange diffchange-inline">pour cette optimisation </ins>(<ins class="diffchange diffchange-inline">en utilisant </ins>-OWsymbolliveness) <ins class="diffchange diffchange-inline">demande que la liaison intelligente soit activée </ins>(-XX) <ins class="diffchange diffchange-inline">et que l'élimination de symbole ne le soit pas </ins>(-Xs-). <ins class="diffchange diffchange-inline">Lorsque vous utilisez uniquement ces informations précédemment collectées </ins>(<ins class="diffchange diffchange-inline">en utilisant </ins>-OwSymbolliveness <ins class="diffchange diffchange-inline">ou </ins>-Owall), <ins class="diffchange diffchange-inline">ces </ins>limitations <ins class="diffchange diffchange-inline">ne s'appliquent pas</ins>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Format de fichier de rétroaction WPO ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Format de fichier de rétroaction WPO ==</div></td></tr>
</table>
E-ric
https://wiki.freepascal.org/index.php?title=Whole_Program_Optimization/fr&diff=141566&oldid=prev
E-ric: /* Optimiser la table des méthodes virtuelles */
2020-12-15T10:47:30Z
<p><span dir="auto"><span class="autocomment">Optimiser la table des méthodes virtuelles</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:47, 15 December 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l191" >Line 191:</td>
<td colspan="2" class="diff-lineno">Line 191:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Optimiser la table des méthodes virtuelles ===</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Optimiser la table des méthodes virtuelles ===</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; <del class="diffchange diffchange-inline">parameter</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>; <ins class="diffchange diffchange-inline">paramètre</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>: <syntaxhighlight lang="bash"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>: <syntaxhighlight lang="bash"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>-OWoptvmts/-Owoptvmts</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>-OWoptvmts/-Owoptvmts</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; <del class="diffchange diffchange-inline">effect</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>; <ins class="diffchange diffchange-inline">effet</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>: <del class="diffchange diffchange-inline">This optimization looks at which class </del>types <del class="diffchange diffchange-inline">can be instantiated and which virtual methods can be called in a program</del>, <del class="diffchange diffchange-inline">and based on this information it replaces virtual method table (</del>VMT<del class="diffchange diffchange-inline">) entries that can never be called with references to </del>FPC_ABSTRACTERROR. <del class="diffchange diffchange-inline">This means that such methods</del>, <del class="diffchange diffchange-inline">unless they are called directly </del>via <del class="diffchange diffchange-inline">an </del>''inherited'' <del class="diffchange diffchange-inline">call from a child class</del>/<del class="diffchange diffchange-inline">object</del>, <del class="diffchange diffchange-inline">can be removed by the linker</del>. <del class="diffchange diffchange-inline">It has little or no effect on speed</del>, <del class="diffchange diffchange-inline">but can help reducing </del>code <del class="diffchange diffchange-inline">size</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>: <ins class="diffchange diffchange-inline">Cette optimisation examine quels </ins>types <ins class="diffchange diffchange-inline">de classe peuvent être instanciés et quelles méthodes virtuelles peuvent être appelées dans un programme, et sur la base de ces informations</ins>, <ins class="diffchange diffchange-inline">il remplace les entrées de la </ins>VMT <ins class="diffchange diffchange-inline">qui ne peuvent jamais être appelées avec des références vers </ins>FPC_ABSTRACTERROR. <ins class="diffchange diffchange-inline">Ce qui signifie que de telles méthodes</ins>, <ins class="diffchange diffchange-inline">qu'elles ne soient appelées directement </ins>via <ins class="diffchange diffchange-inline">un appel </ins>''inherited'' <ins class="diffchange diffchange-inline">depuis une classe</ins>/<ins class="diffchange diffchange-inline">objet enfant</ins>, <ins class="diffchange diffchange-inline">peuvent être retirées par l'éditeur de lien</ins>. <ins class="diffchange diffchange-inline">Cela a peu ou pas d'effet que la vitesse</ins>, <ins class="diffchange diffchange-inline">mais peut aider à réduire la taille du </ins>code.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; limitations</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; limitations</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* <del class="diffchange diffchange-inline">Methods that are </del>''published'', <del class="diffchange diffchange-inline">or </del>getters/setters <del class="diffchange diffchange-inline">of published properties</del>, <del class="diffchange diffchange-inline">can never be optimized in this way, because they can always be referred to and called </del>via <del class="diffchange diffchange-inline">the </del>RTTI (<del class="diffchange diffchange-inline">which the compiler cannot detect</del>).</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* <ins class="diffchange diffchange-inline">Les méthodes qui sont </ins>''published'', <ins class="diffchange diffchange-inline">ou les </ins>getters/setters <ins class="diffchange diffchange-inline">de propriétés publiées</ins>, <ins class="diffchange diffchange-inline">ne peuvent jamais être optimisées de cette façon car elles peuvent toujours être référencées </ins>via <ins class="diffchange diffchange-inline">la </ins>RTTI (<ins class="diffchange diffchange-inline">ce que le compilateur ne peut pas détecter</ins>).</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* <del class="diffchange diffchange-inline">Such optimizations are not yet done for virtual class methods </del>(<del class="diffchange diffchange-inline">but it should not be that difficult to add</del>)</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* <ins class="diffchange diffchange-inline">De telles optimisations ne sont pas encore faites pour les méthodes virtuelles de classe </ins>(<ins class="diffchange diffchange-inline">mais cela ne devrait pas être difficile à ajouter</ins>)<ins class="diffchange diffchange-inline">.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Vivacité de symbole ===</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Vivacité de symbole ===</div></td></tr>
</table>
E-ric
https://wiki.freepascal.org/index.php?title=Whole_Program_Optimization/fr&diff=141565&oldid=prev
E-ric: /* Dévirtualisation de programme entier */
2020-12-15T10:38:53Z
<p><span dir="auto"><span class="autocomment">Dévirtualisation de programme entier</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:38, 15 December 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l180" >Line 180:</td>
<td colspan="2" class="diff-lineno">Line 180:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Dévirtualisation de programme entier ===</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Dévirtualisation de programme entier ===</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; <del class="diffchange diffchange-inline">parameter</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>; <ins class="diffchange diffchange-inline">paramètre</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>: <syntaxhighlight lang="bash"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>: <syntaxhighlight lang="bash"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>-OWdevirtcalls/-Owdevirtcalls</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>-OWdevirtcalls/-Owdevirtcalls</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; <del class="diffchange diffchange-inline">effect</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>; <ins class="diffchange diffchange-inline">effet</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>: <del class="diffchange diffchange-inline">Changes virtual method calls into normal (static) method calls when the compiler can determine that a virtual method call will always go to the same static method</del>. <del class="diffchange diffchange-inline">This makes such </del>code <del class="diffchange diffchange-inline">both smaller and faster</del>. <del class="diffchange diffchange-inline">In general</del>, <del class="diffchange diffchange-inline">it</del>'<del class="diffchange diffchange-inline">s mainly an enabling optimization for other optimizations</del>, <del class="diffchange diffchange-inline">because it makes the program easier to </del>analyse <del class="diffchange diffchange-inline">due to the fact that it reduces </del>indirect <del class="diffchange diffchange-inline">control flow</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>: <ins class="diffchange diffchange-inline">Transforme les appels de méthode virtuelle en appels de méthode statique quand le compilateur peut déterminer que l'appel de méthode virtuelle ira toujours à la même méthode statique</ins>. <ins class="diffchange diffchange-inline">Cela rend le </ins>code <ins class="diffchange diffchange-inline">plus petit et plus rapide</ins>. <ins class="diffchange diffchange-inline">En général</ins>, <ins class="diffchange diffchange-inline">il s'agit principalement d'une optimisation permettant d</ins>'<ins class="diffchange diffchange-inline">autres optimisations</ins>, <ins class="diffchange diffchange-inline">car elle facilite l'</ins>analyse <ins class="diffchange diffchange-inline">du programme en réduisant le flux de contrôle </ins>indirect.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; limitations</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; limitations</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* <del class="diffchange diffchange-inline">The current implementation is context-insensitive</del>. <del class="diffchange diffchange-inline">This means that the compiler only looks at the program as a whole and determines for each class </del>type <del class="diffchange diffchange-inline">which methods can be devirtualised</del>, <del class="diffchange diffchange-inline">rather than that it looks at each call statement and the surrounding </del>code <del class="diffchange diffchange-inline">to determine whether or not this call can be devirtualised</del>;</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* <ins class="diffchange diffchange-inline">L'implémentation actuelle est insensible au contexte</ins>. <ins class="diffchange diffchange-inline">Cela signifie que le compilateur ne regarde que le programme dans son ensemble et détermine pour chaque </ins>type <ins class="diffchange diffchange-inline">de classe quelles méthodes peuvent être dévirtualisées</ins>, <ins class="diffchange diffchange-inline">plutôt que de regarder chaque instruction d'appel et le </ins>code <ins class="diffchange diffchange-inline">environnant pour déterminer si cet appel peut être dévirtualisé ou non</ins>;</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* <del class="diffchange diffchange-inline">The current implementation does not yet devirtualise </del>interface <del class="diffchange diffchange-inline">method calls </del>(<del class="diffchange diffchange-inline">not when calling them </del>via <del class="diffchange diffchange-inline">an </del>interface <del class="diffchange diffchange-inline">instance</del>, <del class="diffchange diffchange-inline">nor when calling them </del>via <del class="diffchange diffchange-inline">a class </del>instance).</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* <ins class="diffchange diffchange-inline">L'implémentation actuelle ne dévirtualise pas encore les appels de méthode d'</ins>interface (<ins class="diffchange diffchange-inline">ni lors de leur appel </ins>via <ins class="diffchange diffchange-inline">une instance d'</ins>interface, <ins class="diffchange diffchange-inline">ni lors de leur appel </ins>via <ins class="diffchange diffchange-inline">une </ins>instance <ins class="diffchange diffchange-inline">de classe</ins>).</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Optimiser la table des méthodes virtuelles ===</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Optimiser la table des méthodes virtuelles ===</div></td></tr>
</table>
E-ric
https://wiki.freepascal.org/index.php?title=Whole_Program_Optimization/fr&diff=141564&oldid=prev
E-ric: /* Toutes les optimisations */
2020-12-15T10:17:15Z
<p><span dir="auto"><span class="autocomment">Toutes les optimisations</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:17, 15 December 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l170" >Line 170:</td>
<td colspan="2" class="diff-lineno">Line 170:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Optimisation disponible de programme entier ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Optimisation disponible de programme entier ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Toutes les optimisations ===</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Toutes les optimisations ===</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; <del class="diffchange diffchange-inline">parameter</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>; <ins class="diffchange diffchange-inline">paramètre</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>: <syntaxhighlight lang="bash"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>: <syntaxhighlight lang="bash"></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>-OWall/-Owall</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>-OWall/-Owall</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; <del class="diffchange diffchange-inline">effect</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>; <ins class="diffchange diffchange-inline">effet</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>: <del class="diffchange diffchange-inline">Enables all whole program optimizations described below</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>: <ins class="diffchange diffchange-inline">Active toutes les optimisations globlales de programme décrites ci-dessus</ins>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; limitations</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>; limitations</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>: <del class="diffchange diffchange-inline">The combined </del>limitations <del class="diffchange diffchange-inline">of all optimizations described below</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>: <ins class="diffchange diffchange-inline">Les </ins>limitations <ins class="diffchange diffchange-inline">de toutes les optimisations décrites ci-dessus</ins>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Dévirtualisation de programme entier ===</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Dévirtualisation de programme entier ===</div></td></tr>
</table>
E-ric
https://wiki.freepascal.org/index.php?title=Whole_Program_Optimization/fr&diff=141563&oldid=prev
E-ric: /* Quand utiliser */
2020-12-15T10:15:13Z
<p><span dir="auto"><span class="autocomment">Quand utiliser</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:15, 15 December 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l164" >Line 164:</td>
<td colspan="2" class="diff-lineno">Line 164:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Quand utiliser ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Quand utiliser ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Since whole program optimization requires multiple compilations</del>, <del class="diffchange diffchange-inline">it is advisable to only use this functionality when compiling a final release version</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Puisque l'optimisation globale de programme demande de multiples compilation</ins>, <ins class="diffchange diffchange-inline">il est recommandable de limiter son utilisation aux versions de livraison finale</ins>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Also keep in mind that once </del>a <del class="diffchange diffchange-inline">unit has been compiled using </del>''wpo'' <del class="diffchange diffchange-inline">for a particular program</del>, <del class="diffchange diffchange-inline">it has to be recompiled if you want to use it in another program</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Gardez aussi à l'esprit qu'une fois que l'unité </ins>a <ins class="diffchange diffchange-inline">été compilée en utilisant </ins>''wpo'' <ins class="diffchange diffchange-inline">pour un programme particulier</ins>, <ins class="diffchange diffchange-inline">elle doit être à nouveau compilée pour un autre programme</ins>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Optimisation disponible de programme entier ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Optimisation disponible de programme entier ==</div></td></tr>
</table>
E-ric
https://wiki.freepascal.org/index.php?title=Whole_Program_Optimization/fr&diff=141562&oldid=prev
E-ric: /* Exemple concret */
2020-12-15T10:10:36Z
<p><span dir="auto"><span class="autocomment">Exemple concret</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 10:10, 15 December 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l72" >Line 72:</td>
<td colspan="2" class="diff-lineno">Line 72:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Compile the program a final time</del>, <del class="diffchange diffchange-inline">using the information collected in </del><syntaxhighlight lang="bash" enclose="none">twpo4-2.wpo</syntaxhighlight>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Compilez le programme une dernière fois</ins>, <ins class="diffchange diffchange-inline">en utilisant les informations collectées dans </ins><syntaxhighlight lang="bash" enclose="none">twpo4-2.wpo</syntaxhighlight>.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">This time</del>, <del class="diffchange diffchange-inline">the compiler knows that only a </del><syntaxhighlight lang="pascal" enclose="none">tchild1</syntaxhighlight> <del class="diffchange diffchange-inline">instance is created</del>, <del class="diffchange diffchange-inline">and will therefore turn the </del><syntaxhighlight lang="pascal" enclose="none">bb.test</syntaxhighlight> <del class="diffchange diffchange-inline">call from a virtual method call into a static method call </del>(<del class="diffchange diffchange-inline">because it knows that even though the </del>type <del class="diffchange diffchange-inline">of </del><syntaxhighlight lang="pascal" enclose="none">bb</syntaxhighlight> <del class="diffchange diffchange-inline">is </del><syntaxhighlight lang="pascal" enclose="none">tbase</syntaxhighlight>, <del class="diffchange diffchange-inline">in practice it can only be a </del><syntaxhighlight lang="pascal" enclose="none">tchild1</syntaxhighlight> <del class="diffchange diffchange-inline">since no </del><syntaxhighlight lang="pascal" enclose="none"><del class="diffchange diffchange-inline">tbaseh</del></syntaxhighlight> <del class="diffchange diffchange-inline">or other </del><syntaxhighlight lang="pascal" enclose="none">tbase</syntaxhighlight><del class="diffchange diffchange-inline">-descendent class instance is created)</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Cette fois</ins>, <ins class="diffchange diffchange-inline">le compilateur sait que seul une instance de </ins><syntaxhighlight lang="pascal" enclose="none">tchild1</syntaxhighlight> <ins class="diffchange diffchange-inline">est créée</ins>, <ins class="diffchange diffchange-inline">et va par conséquent remplacer l'appel </ins><syntaxhighlight lang="pascal" enclose="none">bb.test</syntaxhighlight> <ins class="diffchange diffchange-inline"> depuis une méthode virtuelle par une méthode statique </ins>(<ins class="diffchange diffchange-inline">car il sait que même si le </ins>type <ins class="diffchange diffchange-inline">de </ins><syntaxhighlight lang="pascal" enclose="none">bb</syntaxhighlight> <ins class="diffchange diffchange-inline">est </ins><syntaxhighlight lang="pascal" enclose="none">tbase</syntaxhighlight>, <ins class="diffchange diffchange-inline">en pratique il ne peut être qu'un </ins><syntaxhighlight lang="pascal" enclose="none">tchild1</syntaxhighlight> <ins class="diffchange diffchange-inline">car aucune instance de </ins><syntaxhighlight lang="pascal" enclose="none"><ins class="diffchange diffchange-inline">tbase</ins></syntaxhighlight> <ins class="diffchange diffchange-inline">ou autre instance de classe descendant de </ins><syntaxhighlight lang="pascal" enclose="none">tbase</syntaxhighlight> <ins class="diffchange diffchange-inline">n'est créée</ins>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="bash"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="bash"></div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l86" >Line 86:</td>
<td colspan="2" class="diff-lineno">Line 86:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Now</del>, <del class="diffchange diffchange-inline">let's have a look at the differences between the generated assembler files</del>. <del class="diffchange diffchange-inline">After the first </del>recompilation:</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Maintenant</ins>, <ins class="diffchange diffchange-inline">regardons les différences entre les fichiers assembleur générés</ins>. <ins class="diffchange diffchange-inline">Après la première </ins>recompilation :</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="bash"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="bash"></div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l120" >Line 120:</td>
<td colspan="2" class="diff-lineno">Line 120:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">As you can see</del>, <del class="diffchange diffchange-inline">all references to the virtual methods in the virtual method table of </del><syntaxhighlight lang="pascal" enclose="none">tbase</syntaxhighlight> <del class="diffchange diffchange-inline">have been removed</del>, <del class="diffchange diffchange-inline">since the compiler knows they can never be referenced</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Comme vous pouvez le voir</ins>, <ins class="diffchange diffchange-inline">toutes les références aux méthodes virtuelles dans la VMT de </ins><syntaxhighlight lang="pascal" enclose="none">tbase</syntaxhighlight> <ins class="diffchange diffchange-inline">ont été retirées</ins>, <ins class="diffchange diffchange-inline">puisque le compilateur sait qu'elles ne peuvent pas être réféencées</ins>.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">This allows the linker to throw away these methods if they are not referenced anywhere else either.</del></div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Cela permet à l'éditeur de liens de jeter ces méthodes si elles ne sont référencées nulle part ailleurs non plus</ins>.</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">In our example, that is only true for <syntaxhighlight lang="pascal" enclose="none">tbase.test</syntaxhighlight></del>.</div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Now let</del>'<del class="diffchange diffchange-inline">s look at the effect of the second </del>recompilation:</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Dans notre exemple, c</ins>'<ins class="diffchange diffchange-inline">est seulement vrai pour <syntaxhighlight lang="pascal" enclose="none">tbase.test</syntaxhighlight>.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Maintenant regardons l'effet de la seconde </ins>recompilation:</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="bash"></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="bash"></div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l157" >Line 157:</td>
<td colspan="2" class="diff-lineno">Line 158:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">As you can see</del>, <del class="diffchange diffchange-inline">the two virtual method calls to </del>''bb.test'' (<del class="diffchange diffchange-inline">one inside the never called </del>''notcalled'' <del class="diffchange diffchange-inline">procedure</del>, <del class="diffchange diffchange-inline">and one in the main program</del>) <del class="diffchange diffchange-inline">have been replaced with calls to </del>''tchild1.test''.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Comme vous pouvez le voir</ins>, <ins class="diffchange diffchange-inline">les deux appels de méthode virtuelle à </ins>''bb.test'' (<ins class="diffchange diffchange-inline">un dans la procédure </ins>''notcalled'', <ins class="diffchange diffchange-inline">jamais appelée, et un dans le programme principal</ins>) <ins class="diffchange diffchange-inline">ont été remplacé par des appels à </ins>''tchild1.test''.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Note that you could also recompile the entire run time library for this particular program</del>, <del class="diffchange diffchange-inline">if you want</del>.</div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">Remarquez que vous pourriez aussi recompiler la RTL pour ce programme particulier</ins>, <ins class="diffchange diffchange-inline">si vous voulez</ins>.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Quand utiliser ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Quand utiliser ==</div></td></tr>
</table>
E-ric