Vlad-Shcherbina / icfpc2014-tbd

fourth place
Do What The F*ck You Want To Public License
4 stars 0 forks source link

TCO и прочие непонятные баги КП #24

Open manpages opened 10 years ago

manpages commented 10 years ago

вот это https://github.com/Vlad-Shcherbina/icfpc2014-tbd/blob/75788ae687ae511e86c812612c31b7d59a28ebfc/data/gcpy/nearest_pill_lm_ai.py транслируется вот в это — https://gist.github.com/manpages/e22342415a3e813cc517

Проблема описана в самом питоновом коде — фция new_seed_maybe_and_direction не получает значение, которое возвращается фцией new_seed_maybe_and_direction_do.

До этого путём чтения асма я понял, что тцо выкомпиливает рекурсию в new_seed_maybe_and_direction_do, что заворкараундил введением переменной no_tco_pls.

Надо сделать так, чтобы nearest pill работал ASAP, без работающего как часы компилятора хуй мы выиграем.

Отваливаюсь спать надолго.

manpages commented 10 years ago

PS Если будет править не @yole, рекомендуется вдохновляться его коммитами — https://github.com/Vlad-Shcherbina/icfpc2014-tbd/commits?author=yole

manpages commented 10 years ago

Тому, кто будет фиксить всячески рекомендуется использовать следующий документ для ознакомления с питоновым AST: http://greentreesnakes.readthedocs.org/en/latest/nodes.html#statements

yole commented 10 years ago

Я сделал опцию для выключения tail call optimization. program.emit(builder, disable_tco=True) или gcpy.py --no-tco

yole commented 10 years ago

Олсо реквестирую падающий integration test для любой баги в компиляторе, которая найдется. В этом примере я так и не смог понять, что именно и как именно не работает.