Открыть проект компилятора
От: _nn_  
Дата: 01.12.10 15:08
Оценка: 11 (1)
Nemerle.Compiler.nproj не открывается студией из-за одного файла.
ncc\parsing\AST.n

А конкретно структура Location в этом файле.

Компилятор изрядно тормозит при компиляции этой структуры. (9 секунд компилирует файл)
Что конкретно там создает проблему пока не искал.

Тут самодостаточный n файл для проверки: http://pastebin.com/tFearpY9

P.S.
Временный воркэраунд.
Для файла AST.n задан тип Content , а не Compile.

P.P.S.
  Снимок (Большая картинка)
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Открыть проект компилятора
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.12.10 15:16
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Компилятор изрядно тормозит при компиляции этой структуры. (9 секунд компилирует файл)

__>Что конкретно там создает проблему пока не искал.

__>Тут самодостаточный n файл для проверки: http://pastebin.com/tFearpY9


Надо комментировать методы и выявлять те что приводят к тормозам. Методом двоичного поиска (сначала комментируем половину методов, потом половину половины и т.п.) можно довольно быстро найти проблемное место.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Открыть проект компилятора
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.12.10 15:19
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Nemerle.Compiler.nproj не открывается студией из-за одного файла.

__>ncc\parsing\AST.n

__>А конкретно структура Location в этом файле.


__>Компилятор изрядно тормозит при компиляции этой структуры. (9 секунд компилирует файл)

__>Что конкретно там создает проблему пока не искал.

__>Тут самодостаточный n файл для проверки: http://pastebin.com/tFearpY9


У меня этот файл скомпилировался за 1.6 секунды (в горячую и когда компилятор прекомпилирован джитом).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Открыть проект компилятора
От: _nn_  
Дата: 01.12.10 15:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _nn_, Вы писали:


__>>Компилятор изрядно тормозит при компиляции этой структуры. (9 секунд компилирует файл)

__>>Что конкретно там создает проблему пока не искал.

__>>Тут самодостаточный n файл для проверки: http://pastebin.com/tFearpY9


VD>Надо комментировать методы и выявлять те что приводят к тормозам. Методом двоичного поиска (сначала комментируем половину методов, потом половину половины и т.п.) можно довольно быстро найти проблемное место.


Если убрать все определения Location из файла, то работает.

А если добавить простое определение:
public class Location{}


То сразу зависает
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Открыть проект компилятора
От: _nn_  
Дата: 01.12.10 16:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Надо комментировать методы и выявлять те что приводят к тормозам. Методом двоичного поиска (сначала комментируем половину методов, потом половину половины и т.п.) можно довольно быстро найти проблемное место.


Если в AST.n изменить имя с Location скажем на AnotherLocation, то ничего не зависает
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Открыть проект компилятора
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.12.10 16:24
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Если в AST.n изменить имя с Location скажем на AnotherLocation, то ничего не зависает


Видимо клинч с типами из Nemerle.Compiler.dll. Это и раньше было. Лично я даже не пробовал открывать проекты компилятора в интеграции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Открыть проект компилятора
От: _nn_  
Дата: 01.12.10 17:02
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _nn_, Вы писали:


__>>Если в AST.n изменить имя с Location скажем на AnotherLocation, то ничего не зависает


VD>Видимо клинч с типами из Nemerle.Compiler.dll. Это и раньше было. Лично я даже не пробовал открывать проекты компилятора в интеграции.


Сообственно вопрос, как это решить ?

Все же править компилятор из интеграции гораздо приятнее, чем из блокнота.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[5]: Открыть проект компилятора
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.12.10 17:53
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Сообственно вопрос, как это решить?


Как и все остальное. Садиться и долго и упорно трахаться пока не решишь проблему. По другому никак.

__>Все же править компилятор из интеграции гораздо приятнее, чем из блокнота.


Я для этих целей создаю проект, подключаю к нему компиляторные сборки, создаю наследников нужных классов и копирую в них методы что нужно править. Далее те члены которые являются скрытыми так же копирую и добавляю к ним модификатор new. Далее редактирование идет с комплитом, блэкдеком и шлюхами. Единственный недостаток — копипэст постоянный (между реальными файлами и фалами этого фэйк-проекта).

Конечно было бы здорово если бы интеграция открывала бы компиляторе сборки, но что-то оно не взлетает. А тратить на это пол жизни тоже не хочется.

Вот в 2.0 это точно нужно будет обеспечить.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Открыть проект компилятора
От: _nn_  
Дата: 01.12.10 17:59
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Конечно было бы здорово если бы интеграция открывала бы компиляторе сборки, но что-то оно не взлетает. А тратить на это пол жизни тоже не хочется.


На самом деле можно сделать уже сейчас.
  • Открыть AST.n изменить struct Location на struct OtherLocation.
  • Открыть Nemerle-2008.sln
  • Изменить обратно на struct Location.
  • [!] Далее не открывать файл AST.n в студии если есть "struct Location".

    И все будет работать
  • http://rsdn.nemerleweb.com
    http://nemerleweb.com
    Re[7]: Открыть проект компилятора
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 01.12.10 18:25
    Оценка:
    Здравствуйте, _nn_, Вы писали:

    __>На самом деле можно сделать уже сейчас.

    __>
  • Открыть AST.n изменить struct Location на struct OtherLocation.
    __>
  • Открыть Nemerle-2008.sln
    __>
  • Изменить обратно на struct Location.
    __>
  • [!] Далее не открывать файл AST.n в студии если есть "struct Location".

    __>И все будет работать


    Это не работа, а набор приседаний с негарантированным результатом.
  • Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.