
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рд╣рдордмрдЧ рдХреЗ рд╕рд╛рде, рд╣рдо рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ
рдирд┐рдореНрди рд╕реНрддрд░ рдХреА рд╕реНрдорд╛рд▓рдЯрд╛рдХ (рдПрд▓рдПрд▓рдПрд╕рдЯреА) рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рддреАрд╕рд░реЗ рд▓реЗрдЦ рдХреЛ рд▓рд╛рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рди рдХреЗрд╡рд▓ рдЕрд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ
рдмрд╛рдЗрдХ рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╣реЛрдЧрд╛ рдЬреЛ
рдПрд▓рдПрд▓рд╡реАрдПрдо рдЬреИрд╕реА рдЕрджреНрднреБрдд рдЪреАрдЬ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣рдорд╛рд░реА рдЕрдкрдиреА рдЖрднрд╛рд╕реА рдорд╢реАрди рдХреЛ рдмрд╛рдпреЛрдЯреЗрдХ рд╕реНрддрд░ рдкрд░
рд▓рд┐рдЯрд┐рд▓ рд╕реНрдореЙрд▓рдЯрд╛рдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдмрдирд╛рдирд╛ рд╣реИред рдореБрдЦреНрдп рдЕрдВрддрд░ рд╡рд┐рд╖рдо рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдмрд╛рдпрдЯреЗрдХреЙрдбреНрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЖрдИрдЖрд░ рдХреЛрдб рдореЗрдВ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЛрдб рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдХреЗ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рдЗрд╖реНрдЯрддрдо рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрд╣рд▓реЗ рдЪреАрдЬреЗрдВ рдкрд╣рд▓реЗ ...
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрджрд▓рд╛рд╡ рд╣реИрдВ:
рд╕реВрдЪреА рджрд┐рдЦрд╛рдПрдВ- рд╣рдордиреЗ рд░реАрдбрд▓рд╛рдЗрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ ред рдЕрдм рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдЯреИрдм рдХреБрдВрдЬреА рдкрд░ рдкрд╣рд▓реЗ рджрд░реНрдЬ рдХрдорд╛рдВрдб (Ctrl + R) рдФрд░ рд╕реНрд╡рддрдГ рдкреВрд░реНрдгрддрд╛ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдерд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдХрд┐рд╕реА рднреА рд╕рд╛рдорд╛рдиреНрдп рд╢реЗрд▓ рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реЛрддрд╛ рд╣реИред
- рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЖрджрд┐рдо рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЫрд╡рд┐ рдбрд┐рд╕реНрдХ рдкрд░ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИред рдЕрдм рдЖрдк рдореВрд▓ рдХреЗ рд╕рд╛рде рдирдП рд╡реАрдПрдо рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдРрд╕рд╛ рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╢реЗрдбреНрдпреВрд▓рд░ рд╡рд░реНрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЖрджрд┐рдо рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ (рд╣рд░реЗ рдзрд╛рдЧреЗ) рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдпреЛрдЬрдирд╛рдПрдВ - рдкреВрд░реНрдг рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧред
- рдЯреЗрд╕реНрдЯ рдореВрд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рдереЗ рдЬреЛ рдмрд╛рдж рдХреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддреЗ рдереЗред рдЯреЗрд╕реНрдЯ рдХрдорд╛рд▓ рдХреЗ рд╣реИрдВ!
- рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕
hptr<>
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП hptr<>
рдкреЙрдЗрдВрдЯрд░реНрд╕ред рдкрд╣рд▓реЗ, рд╡реЗ рдмрд╛рд╣рд░реА рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗ std::list<>
, рдЕрдм рд╕реВрдЪреА рдХреЛ рд╕реНрдЯреИрдХ рд╕реНрдкреЗрд╕ рдореЗрдВ рдмрдирд╛рдП рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЕрдХреЗрд▓реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ VM рдХреЛ рджреЛ рдмрд╛рд░ рддреНрд╡рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред - рд╢рд╛рдЦрд╛ 37 рдореЗрдВ , рдиреЗрдЯрд┐рд╡ рдПрдкреАрдЖрдИ рд╕реНрдХреЗрдЪ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдкрдХреЛ рд░реИрдкрд░ рдФрд░ рдЕрдиреНрдп рдмреИрд╕рд╛рдЦреА рдХреЗ рдмрд┐рдирд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрд╢реА рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ "рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░" рдЙрдиреНрд╣реАрдВ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдореЙрд▓рдЯрд╛рдХ рд╕реЗ рд╕рдордХрдХреНрд╖ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ , рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред
- рдореМрдЬреВрджрд╛ рдмреЗрдХрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрдирд░реЗрд╢рдирд▓ рдЬреАрд╕реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА рдЕрдВрддрд░ рдвреЗрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рднреВрдорд┐рдХрд╛ рдореЗрдВ рд╣реИ рдФрд░ рдкреАрдврд╝рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд▓рд┐рдВрдХ рдХреА рд╕реВрдЪреА рдХрд╛ рднрдВрдбрд╛рд░рдг рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рдЬрд▓реНрджреА рд╕реЗ рдЗрдХрдЯреНрдареЗ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдХреЗрд╡рд▓ рдпреБрд╡рд╛ рдкреАрдврд╝реА рдкрд░ рдЬрд╛рдиреЗ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рдкреБрд░рд╛рдиреА рдкреАрдврд╝рд┐рдпреЛрдВ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИрдВред рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдбрд┐рдмрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- Flex / Bison рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ImageBuilder рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ: рдЖрдк рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реИ, рдЫрд╡рд┐ рдХреЛрдб рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп "рд░рд╣рд╕реНрдпрдордп" рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ; рд╣рдЯрд╛рддреЗ рд╕рдордп рд╕рдорд╛рди "рд░рд╣рд╕реНрдпрдордп" рдЬреАрд╡рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЯрд┐рдкреНрдкрдгреА, рдЖрджрд┐ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЧрд▓рдд рдмрд╛рдпреЛрдЯреЗрдХ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рд░рд╣рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕рдХрд╛ рд░реАрдореЗрдХ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдлрд┐рд▓рд╣рд╛рд▓, рд▓рд┐рдЯрд┐рд▓ рд╕реНрдорд╛рд▓рдЯрд╛рдХ рдХрд╛ рд╡реНрдпрд╛рдХрд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ; рднрд╛рд╖рд╛ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рдпрдВрддреНрд░рдг рдХрдорд╛рдВрдб рднреА рд╣реИрдВ рдЬреЛ рдкреНрд░рд╛рдердорд┐рдХ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред
- рд╣рдореЗрдВ рдПрдХ рдбреЛрдореЗрди рдирд╛рдо рдорд┐рд▓рд╛ рдФрд░ GitHub рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ ред рдЕрдм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА llst.org рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЯреНрд░реИрдХрд░ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВред
рдЦреИрд░, рдЕрдм, рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк:
- рд╣рдордиреЗ рдПрд▓рдПрд▓рд╡реАрдПрдо рдЖрдИрдЖрд░ рдХреЛрдб рдореЗрдВ рд╕реНрдореЙрд▓рдЯрд╛рдХ рдмрд╛рдпрдЯреЗрдХреЙрдбреНрд╕ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдФрд░ рдпрд╣ рдордХреНрдЦреА рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд╕рдордп рд╕рд╣реА рд╣реИред рдЕрд░реНрдерд╛рддреН, рдкрд╣рд▓реА рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди, рд╡рд┐рдзрд┐ рдХреЛрдб (рдорд┐рд▓реАрд╕реЗрдХрдВрдб) рдХреЗ рдЕрдиреБрд╡рд╛рдж рдФрд░ рд╕рдВрдХрд▓рди рдкрд░ рдХреБрдЫ рд╕рдордп рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдХреЙрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
- рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд╛рд╕ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдВрддрд░рд┐рдХ рдЖрдВрддрд░рд┐рдХ llvm.gcroot рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ , рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдФрд░ рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ)ред
- рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рддрд░реАрдХреЛрдВ рдХреЗ "рд╣реЙрдЯ рд╕реНрдкреЙрдЯ" рдкрд░ рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдмрд╛рдж рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╣реИред
- рдЕрдВрдд рдореЗрдВ, "рд╣реЙрдЯ" рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдПрдХрддреНрд░рд┐рдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реАрдзреЗ рдХреЙрд▓ рд╢реБрд░реВ рдХрд░рдиреЗ, рдХреИрд╢ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдФрд░ рдХреНрд▓рд╛рд╕ рдЯреЗрдмрд▓ рдореЗрдВ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЯреНрд░рд╛рдВрдЬрд┐рд╢рди рдкреНрд░реЗрдбрд┐рдХреНрдЯрд░ рдХреЛ рдПрдХ рдЗрд╖реНрдЯрддрдо рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЕрдиреБрдХреВрд▓рд┐рдд рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд╡рд╛рд▓рд╛ рд╣реЙрдЯ рдХреЛрдб рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ VM рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг (рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 2 рд╕реЗ 100 рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рд╡рд┐рдХрд╛рд╕ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЕрдиреБрдХреВрд▓рди рдХрд┐рдП рдЧрдП рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрдЯрд┐рд▓ рдЧреНрд░рд╛рдл рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреБрдорд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЦрд╛рд▓реА рд╕рдордп рд╣реИ, рддреЛ рдЖрдк рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╢рд╛рдирджрд╛рд░ рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рдХреЗ рдЖрдБрдХрдбрд╝реЗ рдХреЛрдб рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рдЫрдВрдЯрд╛рдИ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рд╕рд╛рде рд╣реА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░ рднреА рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╛ рддреЛ
рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдпрд╛ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рд╕рдВрдХрд▓рди рдХрд░реЗрдВ,
рдЧреАрдердм рдкрд░
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ
рдЙрдкрдпреЛрдЧ рдФрд░ рдПрд▓рдПрд▓рд╡реАрдПрдо рдЖрдЗрдЯрдо рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рджред
рдЪрд▓реЛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
loopBenchmark | sum | sum <- 0. 1 to: 100000 do: [ :x | sum <- sum + 1 ]. ^sum
рдпрд╣ "рд╕рд░рд▓" рдХреЛрдб рдЪрд░ рд╕реМ рд╕реЗ рдереЛрдбрд╝рд╛ рдПрдХ рд╕реМ рд╣рдЬрд╛рд░ рдмрд╛рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рд╣рдореЗрдВ рд╡рд╣реА рдПрдХ рд▓рд╛рдЦ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╛ рд╣рдорд╛рд░реЗ рд╡реАрдПрдо рдХрдЪрд░реЗ рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдФрд░ рдпрд╣рд╛рдБ рд░рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ:
рдХрдИ рдмреАрдЪреЗрд╕ $ ./llst Image read complete. Loaded 5442 objects Soft run: 60 Cold jit run: 46 Hot jit run: 28 JIT Runtime stat: Messages dispatched: 200006 Objects allocated: 200004 Blocks invoked: 200002 Block cache hits: 199999 misses 3 ratio 100.00 % Message cache hits: 400004 misses 6 ratio 100.00 % Hot methods: Hit count Method name 200000 Block>>value: (0 sites) 2 Number>>to:do: (1 sites) value: (index 20, offset 109) class hits: (Block 200000) 2 Undefined>>loopBenchmark (1 sites) to:do: (index 15, offset 73) class hits: (SmallInt 2) 2 Block>>value (0 sites) Patching active methods that have hot call sites Recompiling method for patching: Number>>to:do: Patching Number>>to:do: ...done. Verifying ...done. Recompiling method for patching: Undefined>>loopBenchmark Patching Undefined>>loopBenchmark ...done. Verifying ...done. Optimizing Number>>to:do: ...done. Verifying ...done. Optimizing Undefined>>loopBenchmark ...done. Verifying ...done. Compiling machine code for Number>>to:do: ...done. Compiling machine code for Undefined>>loopBenchmark ...done. All is done. Patched cold jit run: 12 Patched hot jit run: 9 JIT Runtime stat: Messages dispatched: 200010 Objects allocated: 400008 Blocks invoked: 400004 Block cache hits: 399998 misses 6 ratio 100.00 % Message cache hits: 400006 misses 10 ratio 100.00 % Hot methods: Hit count Method name 200000 Block>>value: (0 sites) 4 Block>>value (0 sites) 2 Undefined>>loopBenchmark (0 sites) 2 Number>>to:do: (1 sites) value: (index 20, offset 109) class hits: (Block 200000) 2 Undefined>>loopBenchmark (1 sites) to:do: (index 15, offset 73) class hits: (SmallInt 2) ===-------------------------------------------------------------------------=== ... Statistics Collected ... ===-------------------------------------------------------------------------=== 2 adce - Number of instructions removed 2 branchfolding - Number of block tails merged 2 branchfolding - Number of dead blocks removed 1 cgscc-passmgr - Maximum CGSCCPassMgr iterations on one SCC 31 codegen-dce - Number of dead instructions deleted 63 codegenprepare - Number of GEPs converted to casts 9 codegenprepare - Number of blocks eliminated 114 codegenprepare - Number of memory instructions whose address computations were sunk 47 codegenprepare - Number of uses of Cast expressions replaced with uses of sunken Casts 313 dagcombine - Number of dag nodes combined 0 dse - Number of other instrs removed 12 dse - Number of stores deleted 54 gvn - Number of blocks merged 2 gvn - Number of instructions PRE'd 125 gvn - Number of instructions deleted 2 gvn - Number of loads PRE'd 37 gvn - Number of loads deleted 265 inline - Number of functions inlined 271 inline-cost - Number of call sites analyzed 263 instcombine - Number of dead inst eliminated 1 instcombine - Number of dead stores eliminated 67 instcombine - Number of instructions sunk 492 instcombine - Number of insts combined 159 isel - Number of blocks selected using DAG 7667 isel - Number of times dag isel has to try another path 101 jit - Number of bytes of global vars initialized 5310 jit - Number of bytes of machine code compiled 12 jit - Number of global vars initialized 239 jit - Number of relocations applied 3 jit - Number of slabs of memory allocated by the JIT 1 loop-simplify - Number of pre-header or exit blocks inserted 3 machine-licm - Number of hoisted machine instructions CSEed 11 machine-licm - Number of machine instructions hoisted out of loops 73 machine-sink - Number of machine instructions sunk 6 memdep - Number of block queries that were completely cached 11 memdep - Number of fully cached non-local ptr responses 43 memdep - Number of uncached non-local ptr responses 784 pei - Number of bytes used for stack in all functions 1 phi-opt - Number of dead PHI cycles 15 phielim - Number of atomic phis lowered 31 pre-RA-sched - Number of loads clustered together 48 reassociate - Number of insts reassociated 29 regalloc - Number of cross class joins performed 251 regalloc - Number of identity moves eliminated after coalescing 92 regalloc - Number of identity moves eliminated after rewriting 7 regalloc - Number of instructions deleted by DCE 4 regalloc - Number of instructions re-materialized 1 regalloc - Number of interferences evicted 251 regalloc - Number of interval joins performed 11 regalloc - Number of new live ranges queued 683 regalloc - Number of original intervals 369 regalloc - Number of registers assigned 1 regalloc - Number of registers unassigned 3 regalloc - Number of rematerialized defs for spilling 4 regalloc - Number of rematerialized defs for splitting 3 regalloc - Number of spilled live ranges 2 regalloc - Number of splits finished 4 simplifycfg - Number of blocks simplified 2 twoaddrinstr - Number of instructions aggressively commuted 2 twoaddrinstr - Number of instructions commuted to coalesce 4 twoaddrinstr - Number of instructions promoted to 3-address 30 twoaddrinstr - Number of two-address instructions 14 x86-codegen - Number of floating point instructions 1414 x86-emitter - Number of machine instructions emitted ->
рдпрд╣рд╛рдБ рдкрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ:
Soft run: 60 Cold jit run: 46 Hot jit run: 28 Patched cold jit run: 12 Patched hot jit run: 9
рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ VM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╣реИред рд╕рдмрд╕реЗ рдзреАрдорд╛ рддрд░реАрдХрд╛: рдХреЛрдИ рдЪрд╛рд▓ рдирд╣реАрдВ, рдХреЛрдб рдХреЛ рдмрд╣реБрдд рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдирд┐рд░реНрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢ред рдпрд╣ рдореЛрдб рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп рдЫрд╡рд┐ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рджреВрд╕рд░реА рд▓рд╛рдЗрди рдЬреЗрдЖрдИрдЯреА рдХреЛрд▓реНрдб рд░рди рд╣реИред рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдмрд░рд╛рдмрд░ рдЖрдИрдЖрд░ рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рди рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдХреЗ рд╕рдВрдХрд▓рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдХреБрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп рд╢реБрджреНрдз рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдХрдо рд╣реИред рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЕрдХреНрд╕рд░, рдЬрдЯрд┐рд▓ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП time 100 рдПрдордПрд╕ рдЕрдзрд┐рдХ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдореЗрдВ рд▓рд╛рдн рдорд┐рд▓рддрд╛ рд╣реИред рдЙрд╕реА рдореЛрдб рдореЗрдВ, рдХреЙрд▓ рдкрд░ рдЖрдВрдХрдбрд╝реЗ рдЬрдорд╛ рд╣реЛрддреЗ рд╣реИрдВ (рд╣рд░ рдмрд╛рд░ рдХреЙрд▓ рд╣реИрдВрдбрд▓рд░ рдХреЙрд▓, рдЬреЛ рд╕рдВрдХрд▓рд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ)ред
рддреАрд╕рд░реА рд▓рд╛рдЗрди рд╣реЙрдЯ рд░рди рд╣реИред рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреЗрдЖрдИрдЯреА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ рдЙрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддреИрдпрд╛рд░-рддреИрдпрд╛рд░, рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИред рдУрд╡рд░рд╣реЗрдб рдирд╣реАрдВ - рдмрд╕ рдХреИрд╢ рдореЗрдВ рддрд░реАрдХреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░реЗрдВред рдкрд░рд┐рдгрд╛рдо рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдЪреМрдереА рдкрдВрдХреНрддрд┐ рдкреИрдЪрд░ рдХрд╛ "рдХреЛрд▓реНрдб" рд░рди рдФрд░ рдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЙрд▓ (рдирд┐рд░реНрджреЗрд╢) рдХреА рдирд┐рдпреБрдХреНрддрд┐ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдВрдХрдбрд╝реЗ рдЗрд╕ рдШрдЯрдирд╛ рдХреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдпрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреВрд░реЗ рд╢рд░реАрд░ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рдкреИрдЪрд░ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдПрдХ рдкреВрд░реНрдг рдкреБрдирд░реНрд╕рдВрдпреЛрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкрдЪрд░ рдХреЛ рдирд┐рд░реНрджреЗрд╢ рдорд┐рд▓ рд╕рдХреЗ рдЬрд┐рд╕реЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкрд╛рд╕ рдХреЗ рдЕрдиреБрдХреВрд▓рди (рд╕рд╛рде рд╣реА рдЬреАрд╕реА рдХреЗ рд▓рд┐рдП рдХреЛрдб рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж), рд╡рд┐рдзрд┐ рдХрд╛ рд╢рд░реАрд░ рдорд╛рдиреНрдпрддрд╛ рд╕реЗ рдкрд░реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдЗрди рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рдЖрдИрдЖрд░ рдХреЛрдб рдХреЛ рдмрд╛рдж рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд╛рдВрдЪрд╡реАрдВ рдкрдВрдХреНрддрд┐ рдкреИрдЪреЗрдб рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рд╣реЙрдЯ рд░рди рд╣реИред рдлрд┐рд░, рдмрд╕ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪрд╛рд▓ рдХреЗ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рдпреЗ рдкреАрдЬрд╝ рд╣реИрдВ ... рдорд╛рдиреЛрдВ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реБрдП, рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдореЗрд░реА рдорд╢реАрди рдкрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓рдЧрднрдЧ 12 рдорд┐рд▓рд┐рдпрди рдмреНрд▓реЙрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╕реЗ рдЖрдк рд╕рдВрд╕рд╛рдзрд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред JIT рдХреЛрдб рдореЗрдВ
Number>>to:do:
рд╡рд┐рдзрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рддреАрди рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреЗ рд╣реИрдВ:
#to:do:
рдЕрдВрджрд░ <
рдХрд╛рдЙрдВрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рднреЗрдЬрдирд╛ #to:do:
(рд▓реВрдк рдХрдВрдбреАрд╢рди);#value:
рдмрдирд╛рдирд╛ #value:
рдПрдХ рдмреНрд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ (рдмреНрд▓реЙрдХ рдХреЙрд▓);sum
рдСрдмреНрдЬреЗрдХреНрдЯ (рд▓реВрдк рдмреЙрдбреА) рдХреЛ +
рднреЗрдЬрдирд╛ред
рд╣рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ 36 рдорд┐рд▓рд┐рдпрди рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдКрдкрд░ рд╕реЗ рдПрдХ рдореЛрдЯреЗ рдЕрдиреБрдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕реА рд╕рдордп, рдпрд╣ рдЧрддрд┐ рд╕реАрдорд╛ рд╕реЗ рджреВрд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рд╕рдордп-
whileTrue:
рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ
whileTrue:
loopBenchmark | sum | sum <- 0. [ sum < 1000000 ] whileTrue: [ sum <- sum + 1 ]. ^sum
рдлрд┐рд░ рдПрдХ
рд▓рд╛рдЦ рдкрд░ рд░рди рдХреЗ рдкрд░рд┐рдгрд╛рдо (рдПрдХ рд╕реМ рд╣рдЬрд╛рд░ рдХреЗ рдмрдЬрд╛рдп, рдирд┐рд░рдВрддрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ) рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдВрдЧреЗ:
Soft run: 197 Cold jit run: 13 Hot jit run: 4
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдореЗрдВ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб case 8.1 messages 10
8 рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рдпрд╛ 197/4, рдХрд╛ рддреНрд╡рд░рдг 50 рдЧреБрдирд╛ рдорд┐рд▓рддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛
рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдирд╣реАрдВ рд╣реИред
whileTrue:
рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдПрдХ рд░реИрдЦрд┐рдХ рд╕реЗрдЯ рдореЗрдВ рдлреИрд▓рддрд╛ рд╣реИ; рд╕рднреА рдСрдкрд░реЗрд╢рди рдЙрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рд╛рдЦрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реАрдзреЗ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдСрдкрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред
рдПрдХ рдкреИрдЪ рдХреЗ рд╕рд╛рде рдПрдХ рд░рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╣реЙрдЯ рдЬреЗрдЖрдИрдЯреА рд░рди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЛрдИ рдЖрдВрдХрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡реАрдПрдо рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреЙрд▓ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬреЗрдЖрдИрдЯреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдмреЗрд╢рдХ, рд╡реАрдПрдо рдкреНрд░рджрд░реНрд╢рди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд╛рд▓реЗ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЗрди рдирдВрдмрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдП рдЧрдП рдЕрдиреБрдХреВрд▓рди рдХреЗ рдореЛрдЯреЗ рдЖрдХрд▓рди рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐ рдФрд╕рддрди рдХреЛрдб рддреЗрдЬреА рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдмреЗрд╢рдХ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдЖрджрд░реНрд╢ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ: рд▓реВрдк рдФрд░ рдЕрдВрдХрдЧрдгрд┐рдд рдкреВрд░реЗ рдореВрд▓ рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реИрдВред рдкреНрд░рддреНрдпрдХреНрд╖ рд╢рд╛рдЦрд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╢рд╛рдЦрд╛ рднрд╡рд┐рд╖реНрдпрд╡рдХреНрддрд╛ рдХрд╛ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдХреИрд╢ рдереЛрдбрд╝рд╛ рдХрдо рдЫреВрдЯ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЧреИрд░-рдЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╣реИрдВрдбрд▓рд░-рд╕реНрдЯрдм рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреИрд╢ рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рд╕рдордЭреЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 99% рд╣рд┐рдЯ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдХреАрдорддреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдШрдбрд╝рд┐рдпреЛрдВ рдХреЛ рдЕрднреА рднреА рдЗрд╕ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЫрдВрдЯрдиреА рдкрд░реАрдХреНрд╖рдг рдЕрдзрд┐рдХ рдорд╛рдореВрд▓реА рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
Soft run: 48 Cold jit run: 140 Hot jit run: 25 Patched cold jit run: 7 Patched hot jit run: 6
рдкреВрд░реНрдг рдирд┐рд╖реНрдХрд░реНрд╖ Preparing test data ...done Soft run: 48 Cold jit run: 140 Hot jit run: 25 JIT Runtime stat: Messages dispatched: 210613 Objects allocated: 17746 Blocks invoked: 43006 Block cache hits: 43001 misses 5 ratio 99.99 % Message cache hits: 369520 misses 51704 ratio 87.73 % Hot methods: Hit count Method name 44061 Link>>next (0 sites) 35102 MetaObject>>in:at:put: (0 sites) 27775 Link>>value (0 sites) 25778 Block>>value:value: (0 sites) 17746 Class>>new (0 sites) 17356 MetaLink>>value:next: (3 sites) new (index 3, offset 7) class hits: (MetaLink 17356) in:at:put: (index 11, offset 31) class hits: (MetaLink 17356) in:at:put: (index 18, offset 72) class hits: (MetaLink 17356) 17226 Block>>value: (0 sites) 15619 List>>add: (1 sites) value:next: (index 5, offset 13) class hits: (MetaLink 15619) 1999 List>>isEmpty (1 sites) = (index 4, offset 9) class hits: (SmallInt 1999) 1999 SmallInt>>= (0 sites) 1867 List>>insert:onCondition: (10 sites) isEmpty (index 3, offset 7) class hits: (List 1867) add: (index 10, offset 27) class hits: (List 130) value (index 33, offset 166) class hits: (Link 10419) value:value: (index 40, offset 210) class hits: (Block 10419) next (index 48, offset 268) class hits: (Link 1481) value:next: (index 50, offset 286) class hits: (MetaLink 1481) value:next: (index 57, offset 21) class hits: (Link 1481) next (index 68, offset 8) class hits: (Link 8938) value:next: (index 81, offset 24) class hits: (MetaLink 256) next: (index 83, offset 9) class hits: (Link 256) 1481 Link>>value:next: (0 sites) 392 List>>size (0 sites) 390 MetaList>>new (2 sites) new (index 4, offset 9) class hits: (MetaCollection 390) in:at:put: (index 12, offset 34) class hits: (MetaList 390) 384 Link>>next: (0 sites) 262 Collection>>sort: (13 sites) size (index 3, offset 7) class hits: (List 262) insertSort: (index 12, offset 34) class hits: (List 132) popFirst (index 21, offset 88) class hits: (List 130) new (index 26, offset 126) class hits: (MetaList 130) new (index 31, offset 158) class hits: (MetaList 130) value:value: (index 42, offset 219) class hits: (Block 15359) add: (index 49, offset 279) class hits: (List 8207) add: (index 56, offset 12) class hits: (List 7152) do: (index 59, offset 31) class hits: (List 130) sort: (index 64, offset 64) class hits: (List 130) sort: (index 70, offset 19) class hits: (List 130) add: (index 76, offset 4) class hits: (List 130) appendList: (index 81, offset 24) class hits: (List 130) 260 Link>>do: (2 sites) value (index 18, offset 72) class hits: (Link 260) value: (index 20, offset 82) class hits: (Block 260) 260 List>>do: (1 sites) do: (index 9, offset 25) class hits: (Link 260) 132 Collection>>insertSort: (4 sites) isEmpty (index 3, offset 7) class hits: (List 132) new (index 16, offset 55) class hits: (MetaList 130) insert:onCondition: (index 27, offset 130) class hits: (List 1867) do: (index 30, offset 143) class hits: (List 130) 130 List>>popFirst (3 sites) value (index 14, offset 43) class hits: (Link 130) next (index 19, offset 76) class hits: (Link 130) - (index 25, offset 111) class hits: (SmallInt 130) 130 SmallInt>>- (0 sites) 130 List>>appendList: (7 sites) firstLink (index 8, offset 21) class hits: (List 2) size (index 13, offset 40) class hits: (List 2) next (index 36, offset 181) class hits: (Link 8207) next (index 43, offset 234) class hits: (Link 8079) firstLink (index 54, offset 3) class hits: (List 128) next: (index 56, offset 12) class hits: (Link 128) size (index 61, offset 49) class hits: (List 128) 130 List>>firstLink (0 sites) 2 Collection>>sort (1 sites) sort: (index 10, offset 27) class hits: (List 2) 2 Block>>value (0 sites) ===-------------------------------------------------------------------------=== ... Statistics Collected ... ===-------------------------------------------------------------------------=== 2 adce - Number of instructions removed 14 branchfolding - Number of block tails merged 6 branchfolding - Number of branches optimized 5 branchfolding - Number of dead blocks removed 1 cgscc-passmgr - Maximum CGSCCPassMgr iterations on one SCC 38 codegen-dce - Number of dead instructions deleted 220 codegenprepare - Number of GEPs converted to casts 2 codegenprepare - Number of blocks eliminated 151 codegenprepare - Number of memory instructions whose address computations were sunk 123 codegenprepare - Number of uses of Cast expressions replaced with uses of sunken Casts 854 dagcombine - Number of dag nodes combined 250 dce - Number of insts removed 194 dse - Number of other instrs removed 158 dse - Number of stores deleted 51 gvn - Number of blocks merged 353 gvn - Number of instructions deleted 6 gvn - Number of loads PRE'd 277 gvn - Number of loads deleted 862 inline - Number of functions inlined 862 inline-cost - Number of call sites analyzed 1085 instcombine - Number of dead inst eliminated 69 instcombine - Number of instructions sunk 2540 instcombine - Number of insts combined 194 isel - Number of blocks selected using DAG 18193 isel - Number of times dag isel has to try another path 461 jit - Number of bytes of global vars initialized 12042 jit - Number of bytes of machine code compiled 25 jit - Number of global vars initialized 375 jit - Number of relocations applied 2 jit - Number of slabs of memory allocated by the JIT 15 llst - Number of removed loads from gc.root protected pointers <<<<<< 222 llst - Number of removed roots <<<<<< 4 machine-cse - Number of common subexpression eliminated 1 machine-licm - Number of hoisted machine instructions CSEed 14 machine-licm - Number of machine instructions hoisted out of loops 71 machine-sink - Number of machine instructions sunk 10 memdep - Number of block queries that were completely cached 81 memdep - Number of fully cached non-local ptr responses 84 memdep - Number of uncached non-local ptr responses 2792 pei - Number of bytes used for stack in all functions 9 phielim - Number of atomic phis lowered 2 phielim - Number of critical edges split 36 pre-RA-sched - Number of loads clustered together 23 reassociate - Number of insts reassociated 21 regalloc - Number of cross class joins performed 250 regalloc - Number of identity moves eliminated after coalescing 124 regalloc - Number of identity moves eliminated after rewriting 6 regalloc - Number of instructions deleted by DCE 1 regalloc - Number of interferences evicted 248 regalloc - Number of interval joins performed 21 regalloc - Number of new live ranges queued 1240 regalloc - Number of original intervals 891 regalloc - Number of registers assigned 1 regalloc - Number of registers unassigned 6 regalloc - Number of rematerialized defs for spilling 4 regalloc - Number of rematerialized defs for splitting 6 regalloc - Number of spilled live ranges 4 regalloc - Number of splits finished 13 simplifycfg - Number of blocks simplified 3 twoaddrinstr - Number of instructions re-materialized 43 twoaddrinstr - Number of two-address instructions 40 x86-codegen - Number of floating point instructions 2697 x86-emitter - Number of machine instructions emitted Patching active methods that have hot call sites Recompiling method for patching: MetaLink>>value:next: Patching MetaLink>>value:next: ...done. Verifying ...done. Recompiling method for patching: List>>add: Patching List>>add: ...done. Verifying ...done. Recompiling method for patching: List>>isEmpty Patching List>>isEmpty ...done. Verifying ...done. Recompiling method for patching: List>>insert:onCondition: Patching List>>insert:onCondition: ...done. Verifying ...done. Recompiling method for patching: MetaList>>new Patching MetaList>>new ...done. Verifying ...done. Recompiling method for patching: Collection>>sort: Patching Collection>>sort: ...done. Verifying ...done. Recompiling method for patching: Link>>do: Patching Link>>do: ...done. Verifying ...done. Recompiling method for patching: List>>do: Patching List>>do: ...done. Verifying ...done. Recompiling method for patching: Collection>>insertSort: Patching Collection>>insertSort: ...done. Verifying ...done. Recompiling method for patching: List>>popFirst Patching List>>popFirst ...done. Verifying ...done. Recompiling method for patching: List>>appendList: Patching List>>appendList: ...done. Verifying ...done. Recompiling method for patching: Collection>>sort Patching Collection>>sort ...done. Verifying ...done. Optimizing MetaLink>>value:next: ...done. Verifying ...done. Optimizing List>>add: ...done. Verifying ...done. Optimizing List>>isEmpty ...done. Verifying ...done. Optimizing List>>insert:onCondition: ...done. Verifying ...done. Optimizing MetaList>>new ...done. Verifying ...done. Optimizing Collection>>sort: ...done. Verifying ...done. Optimizing Link>>do: ...done. Verifying ...done. Optimizing List>>do: ...done. Verifying ...done. Optimizing Collection>>insertSort: ...done. Verifying ...done. Optimizing List>>popFirst ...done. Verifying ...done. Optimizing List>>appendList: ...done. Verifying ...done. Optimizing Collection>>sort ...done. Verifying ...done. Compiling machine code for MetaLink>>value:next: ...done. Compiling machine code for List>>add: ...done. Compiling machine code for List>>isEmpty ...done. Compiling machine code for List>>insert:onCondition: ...done. Compiling machine code for MetaList>>new ...done. Compiling machine code for Collection>>sort: ...done. Compiling machine code for Link>>do: ...done. Compiling machine code for List>>do: ...done. Compiling machine code for Collection>>insertSort: ...done. Compiling machine code for List>>popFirst ...done. Compiling machine code for List>>appendList: ...done. Compiling machine code for Collection>>sort ...done. All is done. Patched cold jit run: 7 Patched hot jit run: 6
рдпрд╣рд╛рдВ рдореБрдЭреЗ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХреЛ рдХрд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдФрд░ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдм рдкреИрдЪрд░ рдХреЗрд╡рд▓ рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдмреНрд▓реЙрдХ рдЕрдирдзрд┐рдХреГрдд рдмрдиреЗ рд╣реБрдП рд╣реИрдВред рджреВрд╕рд░реЗ, рдСрдкрд░реЗрд╢рди рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП
Array
рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЗ рддрд░реНрдХ рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рднреА рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЕрдм рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ) рдФрд░ рдХреБрдЫ рддреБрдЪреНрдЫ рдирд┐рд░реНрдорд╛рдгред рдпрд╣ рд╕рдм рд╣рдореЗрдВ рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдЧреЗ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИред
рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдХреА рдЖрдВрддрд░рд┐рдХ рд░рд╕реЛрдИ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдм рд╣рдо рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗред
рд╕реНрдорд╛рд▓рдЯрд╛рдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди
рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмреАрдЪ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдкреАрдЫреЗ рдХреВрдбрд╝рд╛ рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдЬреЛ рдПрдХрдорд╛рддреНрд░ рдЧрдВрднреАрд░ рдСрдкрд░реЗрд╢рди рдХрд░рддреА рд╣реИ, рд╡рд╣ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреА рд╣реИред рд╕рдм рдХреБрдЫ, рдПрдХ рд░рд╛рд╕реНрддрд╛ рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп, рдЙрд╕реА рдЖрдзрд╛рд░ рдкрд░ рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИредрдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдХ рдорд╢реАрди рдХреИрд╕реЗ рдХрд░рддреА рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реНрдореЙрд▓рдЯрд╛рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрдпрд╛ рд╣реИредрд╡рд╕реНрддреБрдПрдВ
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: struct TObject { TSize size; TClass* klass; union { TObject* fields[0]; uint8_t bytes[0]; }; };
рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╣реЗрдбрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдФрд░ рдЙрд╕рдХреА рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреА рдУрд░ рд╕рдВрдХреЗрдд рдХрд░рддреА рд╣реИрдВред рдмреЗрд╢рдХ, рджреЛрдиреЛрдВ рд╡рд░реНрдЧ рдФрд░ рдХреНрд╖реЗрддреНрд░ рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЧрдП рд╣реИрдВредрд╕реНрдорд╛рд▓рдЯрд╛рдХ рдореЗрдВ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ 4 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВред рдпрд╣ рдЖрдХрд╛рд░ рд╢реВрдиреНрдп рдСрдлрд╕реЗрдЯ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдо рджреЛ рдмрд┐рдЯреНрд╕ рдПрдХ рд╡рд┐рд╢реЗрд╖ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддреЗ рд╣реИрдВ - рд╡реЗ рдмрд╛рдЗрдирд░реА ( рдмреА ) рдФрд░ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ ( рдЖрдИ ) рдЭрдВрдбреЗ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ ред рдлреНрд▓реИрдЧ рдмреА рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрд╛рдЗрдирд░реА рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рд╕рд╛рдзрд╛рд░рдг рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдЬрдЧрд╣ рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдХрдЪреНрдЪрд╛ рд╕реЗрдЯ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрдиреЗрдВ (рдЙрджрд╛рд╣рд░рдг String
)ред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╡рд┐рдзрд┐ рдмрд╛рдпреЛрдЯреЗрдХреНрд╕ByteArray
, рдЬреЛ рдмрд╛рдЗрдирд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рд╣реИрдВред рдмрд╛рдЗрдирд░реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╣рдореЗрд╢рд╛ рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдХрдИ рд▓рдВрдмрд╛рдИ рддрдХ рдЧрджреНрджреЗрджрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред рдлреНрд▓реИрдЧ I рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдвреЗрд░ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реБрдП рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВредрдЗрд╕ рдкреНрд░рдХрд╛рд░, 30 рдмрд┐рдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдмрдиреЗ рд░рд╣рддреЗ рд╣реИрдВред рд╕рд╛рдзрд╛рд░рдг рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдЦреЗрддреЛрдВ рдореЗрдВ (4 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рдмрд╣реБ), рдмрд╛рдЗрдирд░реА рдХреЗ рд▓рд┐рдП - рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЪреВрдВрдХрд┐ рджреЛрдиреЛрдВ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕рдорд╛рди, рдкреНрд░рд╕рд┐рджреНрдз рд╢реАрд░реНрд╖рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдХреБрд▓ рд░рд╛рд╢рд┐ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредsMALLINT
рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ 4 рдмрд╛рдЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░реЗрдЦрд┐рдд рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрддреЗ рдХреЗ рдирд┐рдЪрд▓реЗ рджреЛ рдмрд┐рдЯреНрд╕ рд╣рдореЗрд╢рд╛ 0. рдирд┐рдХрд▓реЗред рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╕реАрдзреЗ 31 рдмрд┐рдЯреНрд╕ рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░рд┐рдХреЙрд░реНрдб рдХреА рдЧрдИ рд╕рдВрдЦреНрдпрд╛ 2 рд╕реЗ рдЧреБрдгрд╛ рдХреА рдЬрд╛рддреА рд╣реИ (1 рдмрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ), рдФрд░ рдирд┐рдореНрди-рдХреНрд░рдо рдмрд┐рдЯ рдореЗрдВ 1 рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рдЗрд╕ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╣рд╛рдВ рдЦреЗрддреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреЙрдЗрдВрдЯрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ рдпрд╛ рдирд╣реАрдВред , рдпрд╛ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПредрдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рдВрджреБ рдмрд╛рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИред рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛, рдХрд╣рд╛рдБ рдФрд░ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд┐рдЦрдирд╛ 1 class
рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдиреВрдиреА рд╣реЛрдЧрд╛SmallInt
, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЫрд╡рд┐ рдореЗрдВ рдЗрд╕ рдЗрдХрд╛рдИ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдРрд╕реЗ "рдСрдмреНрдЬреЗрдХреНрдЯ" рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ SmallInt
редрдпрд╣ рдЫреЛрдЯреА рдЪрд╛рд▓ рдХрд╛рдлреА рдЦрдкрдд рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рдЗрдирд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 1 рдмрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдмреЙрдХреНрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рддреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯ рдкреЙрдЗрдВрдЯрд░ рдХреЗ 4 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣реЗрдбрд░ рдХреЗ 8 рдмрд╛рдЗрдЯреНрд╕ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдХреЗ 4 рдФрд░ рдмрд╛рдЗрдЯреНрд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИредрд╕рдВрджреЗрд╢реЛрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рд╕рдВрджреЗрд╢ рдПрдХ рд░рд┐рд╕реАрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ, рдкреНрд▓рд╕ рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛, рд╕рд╛рде рд╣реА рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдХреНрд╖рдг рддрдХ рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреМрди рдХрд░реЗрдЧрд╛ред рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреНрдЮрд╛рдд рд╣реИ - рд╕рдВрджреЗрд╢ рдХрд╛ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛редрдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдПрдХ рдЦреЛрдЬ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред рдЦреЛрдЬ рд╡рд╕реНрддреБ рдХреЗ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╡рд░реНрдЧ рд╕реЗ, рдкрджрд╛рдиреБрдХреНрд░рдо рддрдХ, рддрдХ рдХреА рдЬрд╛рддреА рд╣реИObject
ред рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреА рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рдХреИрд╢ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдкреВрд░реНрдг рдЦреЛрдЬ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣реА рдХреА рдЬрд╛рдиреА рд╣реИред рд╡рд┐рдзрд┐ рдХреИрд╢ рдХреЗрд╡рд▓ рджреЛ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдлрд╝реНрд▓рд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЕрдЧрд▓реЗ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рджреМрд░рд╛рди (рд╡рд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рдЬрдм рдЕрдЧрд▓рд╛ рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ / рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ (рдпрд╣ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рджреМрд░рд╛рди рдХреИрд╢ рдХреА рдирд┐рдпрдорд┐рдд рд╕рдлрд╛рдИ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╣рд┐рдЯ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рдмрд╣реБрдд рдЕрдзрд┐рдХ (рд▓рдЧрднрдЧ 99%) рд░рд╣рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рд╕рдордп рдФрд╕рдд рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рд╣реАрди рдорд╛рдирд╛ рдЬрд╛ рд╕рдХреЗредрдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ 'Hello world'
(рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг String
) рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЦреЛрдЬ рдХреИрд╕реЗ рд╣реЛрддреА рд╣реИ #isNil
редрдЦреЛрдЬ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдПрдЧреА:- hash(String, #isNil);
- , ;
- ,
String
: - methods , (
Dictionary
) .
: ;
; - ;
- , , , ; ;
- , :
- ( nil ), 4;
- , .
рдпрджрд┐ рд╡рд┐рдзрд┐ рд╢реНрд░реЗрдгреА рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓реА, рддреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреА #doesNotUnderstand:
рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рдПрдЧреА (рдХрдо рд╕реЗ рдХрдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЗрдВ Object
)ред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрдХреНрд╖рд╛рдПрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рд░реЛрдХрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реЙрдХреНрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рддрдм рдПрдХ рд╡реИрдз рдкрддреЗ рдкрд░ рд╕рдВрджреЗрд╢ рдкрд╣реБрдВрдЪрд╛рддреЗ рд╣реИрдВредрдЙрдкрд░реЛрдХреНрдд рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП, String>>isNil
рдЦреЛрдЬ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реЛрдЧреА:String
тЖТ Array
тЖТ Collection
тЖТ Magnitude
тЖТ тЖТ Object
редрд╡рд┐рдзрд┐ рдкрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИредрдкреНрд░рд╕рдВрдЧ
рд╕рдВрджрд░реНрдн рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЕрдЯреВрдЯ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИредX86 рдЬреИрд╕реЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ, рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдореМрдЬреВрдж рд╣реИ ред рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд░рдорд╢рдГ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рд╕реЗ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреИрдХ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдореЗрдВ рдереНрд░реЗрдб рдкреНрд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдХреЗ рдХреНрд╖рдгреЛрдВ рд╕реЗ рд╕рдВрдХреНрд░рдордг рдХрд╛ рд╕рдВрдкреВрд░реНрдг "рдкрджрд╛рдиреБрдХреНрд░рдо" рдирд┐рд╣рд┐рдд рд╣реИредрд╕реНрдорд╛рд▓рдЯрд╛рдХ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рднреА рдХреЙрд▓ рд╕реНрдЯреИрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╕рдВрджреЗрд╢ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдПрдХ рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред, рдЬреЛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдкреИрдХреЗрдЬ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрдЪреБрдЕрд▓ рдмреЙрдбреА рджреНрд╡рд╛рд░рд╛ рдЙрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдореЗрдердб рдмреЙрдбреА рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ: struct TContext : public TObject { TMethod* method; TObjectArray* arguments; TObjectArray* temporaries; TObjectArray* stack; TInteger bytePointer; TInteger stackTop; TContext* previousContext; };
- рд╡рд┐рдзрд┐ - рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдпрд╣рд╛рдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
- рддрд░реНрдХ - рджреНрд░рд╡реНрдпрдорд╛рди (рдЙрджрд╛рд╣рд░рдг
Array
) рдХреЗ рд╕реВрдЪрдХ рдХреЛ рдпрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬрд╣рд╛рдВ рдкрд╛рд░рд┐рдд рддрд░реНрдХ рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВред - рдЕрд╕реНрдерд╛рдпреА - рдЕрд╕реНрдерд╛рдпреА рд╡рд┐рдзрд┐ рдЪрд░ рдХрд╛ рднрдВрдбрд╛рд░рдгред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡реЗ рдЬреЛ
| |
рд╡рд┐рдзрд┐ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреЗ рдмреАрдЪ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ ред - stack тАФ . . . , . .
- bytePointer тАФ ; IP . . .
- stackTop тАФ .
- рдкрд┐рдЫрд▓рд╛ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ - рдФрд░ рдпрд╣рд╛рдБ рдЕрднрд┐рднрд╛рд╡рдХ рдкреНрд░рд╕рдВрдЧ рдХреЛ рдХреЗрд╡рд▓ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕ рд╡рд┐рдзрд┐ рд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрдм рдЖрдк рд╡рд░реНрддрдорд╛рди рд╡рд┐рдзрд┐ рд╕реЗ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдореВрд▓ рд╕реНрдЯреИрдХ рдХреЗ рдКрдкрд░ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдордп рдкрд░ рд╣рд░ рдкрд▓, рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрд╛рдзрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рдЧрдП рдЯрд┐рдХреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдмрд╛рдж), рдФрд░ рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреЗ рд╣реИрдВред рдЕрднреА рднреА рд╡рд┐рджреЗрд╢реА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░рдВрддрд░рддрд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди редрддрд░реАрдХреЛрдВ
рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд┐рдореНрди рд░реВрдк рдХреА рд╡рд╕реНрддреБрдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: struct TMethod : public TObject { TSymbol* name; TByteObject* byteCodes; TSymbolArray* literals; TInteger stackSize; TInteger temporarySize; TClass* klass; TString* text; TObject* package; };
- рдирд╛рдо - рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд╛рдо, рдпрд╛ рдЗрд╕ рдирд╛рдо рдХреЗ рдкреНрд░рддреАрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХред
- byteCodes тАФ
ByteArray
, - . - literals тАФ . : , , . , .
- stackSize тАФ (. TContext::stack), .
- temporarySize тАФ , . .
- klass тАФ , .
- text тАФ .
- рдкреИрдХреЗрдЬ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреА рд╢реНрд░реЗрдгреА рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рд╡рд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдм рдмрдирддреЗ рд╣реИрдВ рдЬрдм рдкреНрд░рд╛рдердорд┐рдХ рдЫрд╡рд┐ рд╕реНрд░реЛрдд ImageSource.st рд╕реЗ ImageBuilder рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдореА рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреА рдЬрд╛рддреА рд╣реИред рд╕рд╛рде рд╣реА, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдмрд╛рд░ рдХрд╛ рддрд░реАрдХрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд╛рда рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рдХрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ Undefined>>main
рдХреЛрдб рд╣реИ : [ command <- String readline: '->'. command notNil ] whileTrue: [ command isEmpty ifFalse: [ command doIt printNl ] ]
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд░реАрдбрд▓рд╛рдЗрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдорд┐рд▓рддреА рд╣реИред рдлрд┐рд░ рдПрдХ рд╕рдВрджреЗрд╢ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ #doIt
, рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рдзрд┐ #doIt
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: doIt | method | method <- Undefined parseMethod: 'doItCommand ^ ' + self. ^ method notNil ifTrue: [ ^ Context new perform: method withArguments: (Array new: 1) ]
рд╕рднреА рдореИрдЬрд┐рдХ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЗрдореЗрдЬ рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдпрд╣рд╛рдВ рд▓рд╛рдЧреВ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Undefined>>parseMethod:
рд╕реЛрд░реНрд╕ рдЯреЗрдХреНрд╕реНрдЯ #doItCommand
рд╕реЗ рдореЗрдердб рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕реНрдореЙрд▓рдЯрд╛рдХ рдЦреБрдж рд╕реНрдореЙрд▓рдЯрд╛рдХ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЫрд╡рд┐ рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдкрд▓ рдХрд╛рдлреА рдордЬреЗрджрд╛рд░ рд▓рдЧрддрд╛ рд╣реИредрд╡рд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИред рдЪреВрдВрдХрд┐ рдирдИ рдкрджреНрдзрддрд┐ рдХреЛ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХреА рд╡рд┐рдзрд┐ рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЕрдЧрд▓реЗ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рддрдХ) рдХреЗ рд╕рдордп рд╣реА рдореМрдЬреВрдж рд╣реЛрдЧрд╛редрд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдирд┐рд░реНрджреЗрд╢
рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗрд╡рд▓ рддрд░реАрдХреЛрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рдмрд╛рд╣рд░ рдХреЛрдб рдХреЗ рддрд░реАрдХреЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред рдирд┐рд░реНрджреЗрд╢ рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рдЗрдЯрдХреЛрдбреНрд╕ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ Method
ред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдКрдкрд░ рджреЗрдЦреЗрдВ)редрдЪреВрдВрдХрд┐ рд▓реЗрдЦ рдкрд╣рд▓реЗ рд╣реА рдмрд╣реБрдд рдмрдврд╝ рдЪреБрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣рд╛рдВ рдмрд╛рдИрдЯрдХреЛрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдПрдХ рдпрд╛ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИредрдореВрд▓реНрдп рдвреЗрд░ рдирд┐рд░реНрджреЗрд╢
рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрд┐рд╕реА рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрд╢ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рднреА рд╣реИрдВ ред рдирд┐рд░реНрджреЗрд╢ рдХреЛрдб рдХреЗ рд╕рд╛рде, рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рддреА рд╣реИ:- pushArgument - рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рдПрдХ рддрд░реНрдХ рд╕реЗ рдПрдХ рддрд░реНрдХред
- pushInstance - рд╡рд░реНрддрдорд╛рди рд╡рд╕реНрддреБ рдХрд╛ рдХреНрд╖реЗрддреНрд░ред
- pushTemporary - рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдХреЗ рдЪрд░ рдХреА рдПрдХ рд╕рд░рдгреА рд╕реЗ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ред
- pushLiteral - рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдПрдХ рдирд┐рд░рдВрддрд░ рд╕рд░рдгреА рд╕реЗ рдПрдХ рд╢рд╛рдмреНрджрд┐рдХред
рджреЛ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖ рдкреБрд╢ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ рдЬреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:- pushConstant тАФ :
SmallInt
, 0-9 , nil , true false , Undefined
, True
False
. - pushBlock тАФ
Block
, - , . bytePointer .
рдХрдИ рдЙрд▓реНрдЯреЗ рдСрдкрд░реЗрд╢рди рднреА рд╣реЛрддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдСрдкрд░реЗрд╢рди рдЖрдкрдХреЛ рд╕реНрдЯреИрдХ рд╕реЗ рдорд╛рдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдлрд╝реАрд▓реНрдб рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ ред рдлрд╝реАрд▓реНрдб рдФрд░ рдЪрд░ рднреА рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреВрд░реНрдгрд╛рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред- рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ - рд╡рд░реНрддрдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдХреЛ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИред
- рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ - рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдХреЛ рдПрдХ рдорд╛рди рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред
рдЪреВрдВрдХрд┐ рджреЛрдиреЛрдВ рддрд░реНрдХ рдФрд░ рд╢рд╛рдмреНрджрд┐рдХ рдЕрд░реНрдереЛрдВ рдХреЛ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕рдВрдЪрд╛рд▓рди рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рд╕реНрдЯреИрдХ рд╕реЗ рдорд╛рди рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рдСрдкрд░реЗрд╢рди ( рдкреЙрдкрдЯреЙрдк ) рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬрд┐рд╕реЗ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАредрд╕рдВрдХреНрд░рдордг рдирд┐рд░реНрджреЗрд╢
рдмреЗрд╢рдХ, рд╕рдВрдХреНрд░рдордг рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ:- branchIfTrue тАФ bytePointer , true .
- branchIfFalse тАФ , false .
- branch тАФ .
рдпрджреНрдпрдкрд┐ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рд░ рдЬрдЧрд╣ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдпреВрдиреАрд░реА рдФрд░ рдмрд╛рдЗрдирд░реА рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рд╣реИрдВред рдЙрдирдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реЗрдВрдбрдпреВрд░реА рдФрд░ рд╕реЗрдВрдбрдмрд┐рдирд░реА рдирд┐рд░реНрджреЗрд╢ рджрд┐рдП рдЧрдП рд╣реИрдВ ред рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рдВрджреЗрд╢ sendMessage рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ редрд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп, рддрд░реНрдХ рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж markArguments N рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣ рд╕реНрдЯреИрдХ рд╕реЗ рдПрди рдорд╛рди рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдЙрдирд╕реЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ Array
ред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреЙрдЗрдВрдЯрд░ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓реМрдЯрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрдорд┐рдд рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ редрд╡рд╛рдкрд╕реА рдХреЗ рдирд┐рд░реНрджреЗрд╢
рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рдХрд┐рд╕реА рддрд░рд╣ рддрд░реАрдХреЛрдВ рд╕реЗ рд╡рд╛рдкрд╕ рдЖрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рдпрд╣ рд░рд┐рдЯрд░реНрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЦреНрдп рдПрдХ рд╕реНрдЯреИрдХрд░рдЯрд░реНрди рд╣реИ , рдЬреЛ рд╕реНрдЯреИрдХ рд╕реЗ рдореВрд▓реНрдп рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╡рд┐рдзрд┐ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдХреЛ рд░реЛрдХрддрд╛ рд╣реИредрд╕реНрдореЙрд▓рдЯрд╛рдХ рдореЗрдВ рдПрдХ рдордирдорд╛рдирд╛ рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ , рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡- рд╡рд╛рдкрд╕реА рдХрд░рдирд╛ рдмрд╣реБрдд рдмрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЖрддреНрдо- рдмрдпрд╛рди рдмрдпрд╛рди рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ редрдЕрдВрддрд┐рдо рд░рд┐рдЯрд░реНрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдмреНрд▓реЙрдХ рд░реАрдЯрд░реНрди рд╣реИ, рдЬреЛ рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдореВрд▓ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдмреНрд▓реЙрдХ рдХреА рдШреЛрд╖рдгрд╛ рд╕реЗ рдпреБрдХреНрдд рд╡рд┐рдзрд┐ рдХреЗ рдореВрд▓ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рддреБрд▓рдирд╛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдлреЗрдВрдХрдиреЗ рд╡рд╛рд▓реЗ рддрдВрддреНрд░ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдХреЗрд╡рд▓ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреЛ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ "рд╕рд╛рдорд╛рдиреНрдп" рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдмреНрд▓реЙрдХрд░рдЯрд░реНрди рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдорд┐рдд рд╕рдВрдЪрд╛рд▓рди рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдкрд╛рда рд╣реИредCollection>>at:ifAbsent:
at: value ifAbsent: exceptionBlock self do: [ :element | element = value ifTrue: [ ^element ] ]. ^exceptionBlock value
^element
рдиреЗрд╕реНрдЯреЗрдб рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдмреНрд▓реЙрдХрд░рдЯрд░реНрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмреНрд▓реЙрдХ рдХреЛ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЧрд╣рд░рд╛ рд╣реИред рд╡рд┐рдзрд┐ рд╡рд┐рдзрд┐ рдХреЛ Collection>>at:ifAbsent:
рдХреЙрд▓ рдХрд░рддреА рд╣реИ Collection>>do:
, рдмрд╛рд╣рд░реА рдмреНрд▓реЙрдХ рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред рд╡рд┐рдзрд┐, Collection>>do:
рдмрджрд▓реЗ рдореЗрдВ, Block>>value:
рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧреА , рдЗрд╕реЗ рдмреНрд▓реЙрдХ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдЧреА ред рдФрд░ рдХреЗрд╡рд▓ рдЕрдВрджрд░ рд╣реА Block>>value:
рдЖрджрд┐рдо рд╕рдВрдЦреНрдпрд╛ 8 рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреНрд▓реЙрдХ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдХреЛрдб рдмреНрд▓реЙрдХ рдпрд╣ рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рдореВрд▓реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ element
, рдпрд╣ рдмреНрд▓реЙрдХ-рд░реАрдЯ рдЕрдиреБрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░реЗрдЧрд╛ , рдЬреЛ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдмрд╣реБрдд рдКрдкрд░, рдмрд╛рд╣рд░ рддрдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдЧрд╛Collection>>at:ifAbsent:
рд╕рдВрджреЗрд╢ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рди рд▓реМрдЯрд╛рддреЗ рд╣реБрдПредрдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ ^
рдмреНрд▓реЙрдХ рдХреЗ рдирд┐рдХрд╛рдп рдореЗрдВ рдЦрдбрд╝реЗ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдмреНрд▓реЙрдХрдЯрд░реНрди рд╡рд┐рд╡рд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ, рд╕рдВрдХрд▓рдХ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ: рдирд┐рд╖реНрдкрд╛рджрди рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдмреНрд▓реЙрдХ рдПрдореНрдмреЗрдб рдХрд░реЗрдВ рдФрд░ рд╕рд░рд▓ рдирд┐рд░реНрджреЗрд╢ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ рдХреА рдХреЙрд▓ рдХреЛ рдмрджрд▓реЗрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдмреНрд▓реЙрдХ рд░реАрдЯрд░реНрди рдХреЛ рд╕реНрдЯреИрдХрд░рдЯрд░реНрди рдпрд╛ рд╕реЗрд▓реНрдлрдЯрд░реНрди рд╕реЗ рднреА рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ редрд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрджреЗрд╢
рдЙрдкрд░реЛрдХреНрдд рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рд╕рд╣рд╛рдпрдХ рд╣реИрдВред рдпреЗ рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдорд┐рд▓ popTop рдФрд░ dup ред рдкрд╣рд▓реЗ рдмрд╕ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рд╕реЗ рдорд╛рди рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдкреБрд╢ рдирд┐рд░реНрджреЗрд╢ (рдпрд╛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрднрд╛рд╕реА рдорд╢реАрди рджреНрд╡рд╛рд░рд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╣рд╛рдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ ред рдЖрдорддреМрд░ рдкрд░, popTop рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдпрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХрд┐рд╕реА рд╕реНрдЯреИрдХ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдирд╛рдо рд╕реЗ рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдбреБрдкрдЕрдиреБрджреЗрд╢ , рд╕реНрдЯреИрдХ рдкрд░ рдореВрд▓реНрдп рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдареАрдХ рдЙрд╕реА рдХреЗ рдЖрдЧреЗред рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдореЙрд▓рдЯрд╛рдХ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рднрд╛рд╡реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрди
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрди рдПрдХ рд╕рдВрджрд░реНрдн рд╡рд╕реНрддреБ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд╣рд▓реЗ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдбреАрдХреЛрдб рдХрд░рддрд╛ рд╣реИред рддрдм рдорд╢реАрди рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╡рд╣ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдпрд╛ рдХреВрджрдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рджреЗрддреА рд╣реИред рдЬреИрд╕реЗ рд╣реА рд░рд┐рдЯрд░реНрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЖрддрд╛ рд╣реИ, рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИредрд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╕рдВрдЧреНрд░рд╣ рдЫрдБрдЯрд╛рдИ рд╡рд┐рдзрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдФрд░ JIT рд╕рдВрдХрд▓рдХ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВрдЧреЗ: ->Collection viewMethod: #sort: sort: criteria | left right mediane | (self size < 32) ifTrue: [ ^ self insertSort: criteria ]. mediane <- self popFirst. left <- List new. right <- List new. self do: [ :x | (criteria value: x value: mediane) ifTrue: [ left add: x ] ifFalse: [ right add: x ] ]. left <- left sort: criteria. right <- right sort: criteria. right add: mediane. ^ left appendList: right
рдРрд╕реА рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╢реАрдЯ рд╣реИред рдХрд╛рдо рдХреЗ рддрд░реНрдХ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЕрднреА рднреА рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╕ рдмрд╛рдЗрдЯ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рд╕рдордЭреЗрдВ рдХрд┐ рдХреМрди рд╕реЗ рднрд╛рдЧреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣рд╛рдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореВрд▓реНрдп рд╕реНрдЯреИрдХ рднрд╡рд┐рд╖реНрдп рдХреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдмрд╛рджреА рд╣реИ; рдлрд┐рд░, markArguments рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдЙрдирд╕реЗ рдПрдХ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦреИрд░, рд╕рдВрдХреНрд░рдордг рдирд┐рд░реНрджреЗрд╢ рдЗрд╕ рд╕рд╛рд░реА рдирд╛рд░рд╛рдЬрдЧреА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдзрд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрджреЗрд╢ рдмреНрд▓реЙрдХ рдХреЛ рд╣рд░рд╛ рджрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЯрд┐рдкреНрдкрдгреА рдкреНрд░рджрд╛рди рдХреА: ->Collection methods at: #sort:; disassemble 0000 PushArgument 0 0001 MarkArguments 1 0002 SendMessage size 0003 PushLiteral 1 0004 SendBinary < 0005 DoSpecial branchIfFalse 16 0008 PushArgument 0 0009 PushArgument 1 0010 MarkArguments 2 0011 SendMessage insertSort: 0012 DoSpecial stackReturn 0013 DoSpecial branch 17 0016 PushConstant nil 0017 DoSpecial popTop 0018 PushArgument 0 0019 MarkArguments 1 0020 SendMessage popFirst 0021 AssignTemporary 2 0022 DoSpecial popTop 0023 PushLiteral 4 0024 MarkArguments 1 0025 SendMessage new 0026 AssignTemporary 0 0027 DoSpecial popTop 0028 PushLiteral 6 0029 MarkArguments 1 0030 SendMessage new 0031 AssignTemporary 1 0032 DoSpecial popTop 0033 PushArgument 0 0034 PushBlock 0037 PushArgument 1 0038 PushTemporary 3 0039 PushTemporary 2 0040 MarkArguments 3 0041 SendMessage value:value: 0042 DoSpecial branchIfFalse 52 0045 PushTemporary 0 0046 PushTemporary 3 0047 MarkArguments 2 0048 SendMessage add: 0049 DoSpecial branch 56 0052 PushTemporary 1 0053 PushTemporary 3 0054 MarkArguments 2 0055 SendMessage add: 0056 DoSpecial stackReturn 0057 MarkArguments 2 0058 SendMessage do: 0059 DoSpecial popTop 0060 PushTemporary 0 0061 PushArgument 1 0062 MarkArguments 2 0063 SendMessage sort: 0064 AssignTemporary 0 0065 DoSpecial popTop 0066 PushTemporary 1 0067 PushArgument 1 0068 MarkArguments 2 0069 SendMessage sort: 0070 AssignTemporary 1 0071 DoSpecial popTop 0072 PushTemporary 1 0073 PushTemporary 2 0074 MarkArguments 2 0075 SendMessage add: 0076 DoSpecial popTop 0077 PushTemporary 0 0078 PushTemporary 1 0079 MarkArguments 2 0080 SendMessage appendList: 0081 DoSpecial stackReturn 0082 DoSpecial popTop 0083 DoSpecial selfReturn
рдирд┐рд╖реНрдХрд░реНрд╖
... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдм рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕реНрдореЙрд▓рдЯрд╛рдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдХрдерд╛ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдордзреНрдп рдореИрджрд╛рди рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛редрд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рд╡рд╕реНрддреБрдПрдВ рдПрдХ рд╕реНрдорд╛рд▓рдЯрд╛рдХ рдЫрд╡рд┐ рдореЗрдВ рдХреИрд╕реЗ рджрд┐рдЦрддреА рд╣реИрдВ, рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╡рд░реНрдЧ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдФрд░ рд╕реАрдЦрд╛ рдХрд┐ рдПрдХ рд╕рдВрджрд░реНрдн рд╡рд╕реНрддреБ рдХреНрдпрд╛ рд╣реИ; рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рдореВрд▓ рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдП, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рдЫрдБрдЯрд╛рдИ рд╡рд┐рдзрд┐ рдХреЗ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдЙрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдореЗрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ,рдПрд▓рдПрд▓рд╡реАрдПрдо рджреНрд╡рд╛рд░рд╛ рд╕рдордЭреЗ рдЧрдП рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдЖрдИрдЖрд░ рдХреЛрдб рдореЗрдВ рд╕реНрдореЙрд▓рдЯреЙрдХ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЬреЗрдЖрдИрдЯреА рдореБрджреНрджреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рдмрджрд▓реЗ рдореЗрдВ, рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рдЗрдЯрдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдФрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЖрдИрдЖрд░ рдореЗрдВ рдПрдХ рдЗрд╖реНрдЯрддрдо рддрд░реАрдХреЗ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредрдЕрдВрдд рдореЗрдВ, рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг: