Приветствую!
-- Вот это написано в комментарии к ProtoObject "ProtoObject has no instance variables, nor should any be added." При желании ничего не мешает мне создать в каком нибудь подклассе протообъекта переменные. однако предупреждение настораживает... Может быть это будет чревато какими то неприятными последствиями на длительной дистанции использования? Есть у кого-нибудь мысли по данному поводу? -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Привет. Причина довольно интересная: Проблема в том, что есть классы, к которым VM предъявляет определенные требования на набор и порядок переменных. Например, VM ожидает, что CompiledMethod это bytearray с переменным количеством слотов, где хранятся литералы. Но в то же время CompiledMethod - это еще и подвид Object и ProtoObject. И если добавить переменную в Object, то будет изменен формат всех методов в системе, что нарушит контракт с виртуалкой, и имидж сломается. Другой пример, это класс любого объекта. Виртуалка ожидает, что поля любого класса начинаются с superclass, methodDict и format. И поскольку классы это тоже объекты, то добавление переменой в Object так же нарушит контракт, и все сломается. Интересно было бы решить данную проблему. В Pharo сейчас добавлены first class layout для описания структуры экземпляров. И определенный тип layout-а вполне мог бы переопределять структуру экземпляров в обход наследования. 14 декабря 2017 г., 8:29 пользователь Александр <[hidden email]> написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Ага, ясно. Спасибо
-- четверг, 14 декабря 2017 г., 12:15:42 UTC+3 пользователь Denis Kudriashov написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
In reply to this post by Denis Kudriashov
Добрый день.
-- А что такое и можно ли подробнее разъяснить, что стоит за выражением "добавление переменой в Object так же нарушит контракт, и все сломается."? -- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
1 января 2018 г., 23:06 пользователь Vladimir Los <[hidden email]> написал:
--
Если сделать так: ProtoObject subclass: #Object instanceVariableNames: 'newVar' classVariableNames: 'DependentsFields' package: 'Kernel-Objects' Тогде у всех экземпляров CompiledMethod и Metaclass изменится порядок полей в памяти. Первым будет идти newVar (поля суперклассов идут первыми) вместо того, что ожидает виртуалка . В итоге все упадет. Например, чтобы искать метод для сообщения, виртуалка ожидает что получатель будет иметь экземпляр MethodDictionary в поле номер 2 в структуре объекта.
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Это интересно, чёрт возьми...
-- Жалко что документация сильно запаздывает, от чего некоторые вещи похожи на магию... ) ЗЫ. Завидую Вам белой завистью за Ваше понимание устройства ST и Фаро в частности... ЗЗЫ Задачи то я давно решил... Как всегда "костылями" (в этом я мастер ;) ), но всё-равно это далеко от полноценного владения ситуацией ) пятница, 5 января 2018 г., 18:20:30 UTC+3 пользователь Denis Kudriashov написал:
-- http://groups.google.ru/group/sugr --- Вы получили это сообщение, поскольку подписаны на группу "Russian Smalltalk User Group". Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес [hidden email]. Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout. |
Free forum by Nabble | Edit this page |