The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Утечка исходных текстов браузера Opera 12.15"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Утечка исходных текстов браузера Opera 12.15" +1 +/
Сообщение от arisu (ok), 22-Янв-17, 03:47 
кажется, я мало‐мало идиот. всё‐таки стек «запомненых» переменных должен быть решением. зачем try/finally, если при исключении всё равно без разницы, какие там значения у переменных были, а дальше их восстановит outer code block? ну ладно, придётся хачить break/continue — не самое страшное в жизни.

реализовал, кстати, «псевдоскопы» с with — так, чисто проверить концепт. то есть, примерно такую трансформацию:
  {
    print(v);
    let v = 69;
    print(v);
  }

в:
  var __tmp__ = {};
  with (__tmp__) {
    print(v);
    __tmp__.v = 69;
    print(v);
  }

почти работает (падает со вложеными функциями, потому что где‐то я пропустил момент установки флага «внутри with» — он из парзера устанавливается, зараза, а я трансформации уже в компиляторе делаю. но это так, крайний случай — медленно же до ужаса. попробую всё‐таки сделать вот это:
  {
    print(v);
    {
      var __old_v__ = v;
      v = 69;
      print(v);
      v = __old_v__;
    }
  }
это будет значительно быстрее, можно будет потом оптимизировать для случая «let никого не перекрывает» (вообще, если нет замыканий, то можно смело делать «let lifting», повышая все let-ы до var-ов), да вдобавок — в отличие от with — это не убивает value tracking (aka оптимизатор). придётся только захачивать в break/continue вместо простого jmp восстановление.

кто удивился, откуда выше взялся вложеный кодовый блок — неявно добавился анализатором. чтобы границы запоминания‐восстановления были чётко по границам блоков, так проще. а кодогенератору без разницы, есть там блок или нет, он на переходы смотрит.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Утечка исходных текстов браузера Opera 12.15, opennews, 14-Янв-17, 00:58  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру