Хук на компиляцию слова

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Хук на компиляцию слова

azekeprofit
Administrator
Предлагаю внести в ядро вектор на компиляцию слова в виде:

VECT ON_COMPILE ( xt -- )

Положить вектор в начало COMPILE, или _COMPILE, (это тоже вопрос обсуждения).

Применения:

Повышение контроля над строптивым оптимизатором (когда он начинает умничать или когда делаем нечто нетривиальное, см. http://fforum.winglion.ru//viewtopic.php?t=438 )
Возможность переносить в spfhelp.xml не только определения слов, и но и зависимости их друг от друга (т.е. становится можно отмечать что в слово AAA скомпилировано слово BBB)
Ну и у меня из-за этого дофига конфликтов разрешится (closures, sequences и т.д.)
Reply | Threaded
Open this post in threaded view
|

Re: Хук на компиляцию слова

Andrey Cherezov
Добрый день, azekeProfit!

Ваше сообщение от 19.10.2007 8:49:

> Предлагаю внести в ядро вектор на компиляцию слова в виде:
>
> VECT ON_COMPILE ( xt -- )
>
> Положить вектор в начало COMPILE, или _COMPILE, (это тоже вопрос
> обсуждения).
>
> Применения:
>
> Повышение контроля над строптивым оптимизатором (когда он начинает умничать
> или когда делаем нечто нетривиальное, см.
> http://fforum.winglion.ru//viewtopic.php?t=438 )
>  
Там слишкоммногобукф :) В чем основная идея топика - в "компиляции в хип"?
В чем преимущества перед тем способом, как это сделал Рувим (его
storages и безопасная
полнофункциональная многопоточная компиляция во временные словари)?
> Возможность переносить в spfhelp.xml не только определения слов, и но и
> зависимости их друг от друга (т.е. становится можно отмечать что в слово AAA
> скомпилировано слово BBB)
> Ну и у меня из-за этого дофига конфликтов разрешится (closures, sequences и
> т.д.)
>  
Это хорошие эффекты от мелкого исправления. Я не возражаю. Только если
это не
дублирует ранее сделанную работу Рувима. Чтоб нам не получить два
способа для одного
и того же.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Хук на компиляцию слова

Ruvim Pinka
In reply to this post by azekeprofit
On 10/19/07, azekeProfit <[hidden email]> wrote:

Предлагаю внести в ядро вектор на компиляцию слова в виде:

VECT ON_COMPILE ( xt -- )

Точку привязки к событию лучше делать в виде SCD:
: AT-COMPILE ( xt -- xt ) ... ;
или, чтобы было понятно, что это событие перед откладыванием:
: AT-COMPILE-BEFORE ( xt -- xt ) ... ;
 
Применения:
Повышение контроля над строптивым оптимизатором (когда он начинает умничать

Дай пожалуйста пример кода, как данный отлов события позволит контролировать оптимизатор? 

[...]
Ну и у меня из-за этого дофига конфликтов разрешится (closures, sequences и т.д.)

В таких случаях я конфликты разрешаю сразу, делая патч на слово из ядра и более мнее ровный код расширений. Если приживается, то делается интерфейс в ядре и патч трансформируется в коннект через интерфейс (скажем, в ядро добавляется вектор на какое-то слово). Например, в storage.f меняется VOC-LIST уже через интерфейс-вектор, а вот DP все еще патчем.

--
Ruvim
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Хук на компиляцию слова

Ruvim Pinka
In reply to this post by Andrey Cherezov
On 10/19/07, Andrey Cherezov <[hidden email]> wrote:
В чем основная идея топика - в "компиляции в хип"?
В чем преимущества перед тем способом, как это сделал Рувим (его storages

Модуль compile2Heap.f позволяет отложить в хип очень большое анонимное определение (например, на десятки мегабайт), память берет кусками, а код связывает иструкцией JMP.
А storage.f дает лишь пространство данных заданного фиксированного размера и не контролирует исчерпание; хотя, позволяет создавать в нем словари, именованные определения и другие данные обычным способом.

--
Ruvim
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Хук на компиляцию слова

Andrey Cherezov
Добрый день!

Ваше сообщение от 20.10.2007 20:59:
On 10/19/07, Andrey Cherezov <[hidden email]> wrote:
В чем основная идея топика - в "компиляции в хип"?
В чем преимущества перед тем способом, как это сделал Рувим (его storages

Модуль compile2Heap.f позволяет отложить в хип очень большое анонимное определение (например, на десятки мегабайт), память берет кусками, а код связывает иструкцией JMP.
Понял. Значит новый вектор в ядре имеет смысл.

> а вот DP все еще патчем.
И твой патч к DP давай легализуем заодно.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Хук на компиляцию слова

azekeprofit
Administrator
In reply to this post by Ruvim Pinka

Ruvim Pinka wrote
On 10/19/07, azekeProfit <azekeprofit@gmail.com> wrote:
>
>
> Предлагаю внести в ядро вектор на компиляцию слова в виде:
>
> VECT ON_COMPILE ( xt -- )


Точку привязки к событию лучше делать в виде SCD:
: AT-COMPILE ( xt -- xt ) ... ;
или, чтобы было понятно, что это событие перед откладыванием:
: AT-COMPILE-BEFORE ( xt -- xt ) ... ;
Scattered Colon сложновато получается из-за того что когда его до-определяешь (через ..: ;.. ) то включается он сам, но на этом этапе он незакончен и всё рушится. Можно и обработку какую-нибудь придумать, но это становится уже сложно.

Поэтому сделан обычный вектор -- что тоже не бесспорно, но работает.

На данный момент на CVS (compile2heap.f, bac4th-closures.f) находится версии патченые "в частном порядке", без залезания в ядро, как посоветовал Рувим.

Обработчик был вставлен как в слово COMPILE, так и в INLINE, (последнее нужно для контроля
оптимизатора там где не используется COMPILE, -- это циклы DO-LOOP и числовые литералы). В результате получилось даже сохранить работу оптимизатора (хотя и нужность его в генерируемом кода не очень оправданна). Эта версия и оптимизатор гораздо больше дружелюбны друг к другу и стало возможным убрать высокоуровневые циклы DO-LOOP (~profit/~moleg/do-loop.f) и использовать родные.

Позднее нашёлся глюк который пусть и не мешает генерации кода, но портит использование такого обработчика для регистрации относительных зависимостей слов (какое слово вкомпилировывается в какое) в spfhelp.xml например -- в некоторых случаях ON_COMPILE-START вызывается дважды во время одной и той же компиляции.