Цитата: Python от февраля 23, 2012, 03:25Я же говорю про deployment, то есть конечный продукт, подаваемый пользователю. Там не предполагается, что байткод будет изменяться. JIT по идее нужен только в динамических сценариях, когда невозможно узнать заранее, какие типы будут использоваться (в C# это generic types и System.Reflection.Emit).
сли файл с байт-кодом изменился после последней компиляция, производится повторная компиляция байт-кода в машинный код.
ЦитироватьПолная прекомпиляция.Я бы предпочел не прекомпиляцию при установке (тем более, не всегда есть необходимость в этом ритуале), а JIT-компиляцию с кешированием результатов (кеш хранится на диске, программа, один раз откомпилированная, в следующий раз подгружается из него. Если файл с байт-кодом изменился после последней компиляция, производится повторная компиляция байт-кода в машинный код. Также кеш можно очистить вручную).
@Constructor
public void init() { }
@PropertyGetter("x")
public int getX() { return x; }
Цитата: Python от февраля 14, 2012, 00:14Согласен, так и предполагается в моей VM, однако минималистическая VM типа моей не должна иметь специальных unsigned-операций. Вы правильно сказали, что это забота языка, поэтому именно язык, поддерживающий unsigned-значения, должен эмулировать unsigned-поведение (имеющимся ограниченным набором байткод-инструкций), а не VM должна иметь особые add.unsigned и add.signed.
Я бы вынес абстракцию знака за пределы базовых примитивных типов, просто добавив отдельные операции для знакового и беззнакового сравнения и некоторые другие действия. Разграничение типов по знаковости — забота не VM, а языка. Так же, как и разграничение символов и чисел.
Цитата: Python от февраля 14, 2012, 00:08Потому что си слабо типизированный. В современном языке использовать всё что угодно в качестве boolean logic — моветон. Байткод и метаданные должны иметь чётко определённые логические операции и интерфейсы, для простоты и изящества. Мне так кажется. Если у вас есть серьёзные аргументы против, то всегда можно использовать typedef'ы (уже вне ядра, правда будет проблема с ExtendedTypes
В сишнике как-то обходились без.
Цитата: Python от февраля 14, 2012, 00:10Да не очень. В Java, например, все вызовы ByteBuffer.put/ByteBuffer.get суть intrinsic и компилируются в простые машинные инструкции чтения/записи в память. Правда, у меня такого не получится (ByteBuffer живёт вне ядра и недосягаем для таких оптимизаций), но для современных систем не беда заинлайнить подобные вызовы: ведь что такое ByteBuffer.get? Это просто нахождение нужного int и немного bit shuffling-магии.
Тяжеловато получится, мне кажется.
ЦитироватьБолее того, в Java тип byte - знаковый, что является полным маразмом и дискредитацией наличия этого типа в системе типов.Я бы вынес абстракцию знака за пределы базовых примитивных типов, просто добавив отдельные операции для знакового и беззнакового сравнения и некоторые другие действия. Разграничение типов по знаковости — забота не VM, а языка. Так же, как и разграничение символов и чисел.
Страница создана за 0.067 сек. Запросов: 22.