Очистка контекста в Mozilla's JavaScript
От: Antonidze Россия  
Дата: 26.07.05 12:40
Оценка:
Добрый день!
Извиняюсь, что сообщение наверняка не в ту ветку — нужной не нашёл...
Вопрос первый: подскажите, пожалуйста, если кто знает, где найти информацию по использованию Мозилловского движка SpiderMonkey JavaScript (кроме официальной документации). STFW не помогает — то ли все ресурсы активно от меня прячутся, то ли их вообще нет

Основной вопрос:
После некоторой работы с контекстом: создания объектов, объявления переменных, выполнения скриптов, и т.п. хочется каким-то образом удалить из него все созданные сущности. В интерфейсе не видно функций, предназначенных для этого...
Re: Очистка контекста в Mozilla's JavaScript
От: degor Россия  
Дата: 26.07.05 15:20
Оценка:
Здравствуйте, Antonidze, Вы писали:

A>Вопрос первый: подскажите, пожалуйста, если кто знает, где найти информацию по использованию Мозилловского движка SpiderMonkey JavaScript (кроме официальной документации). STFW не помогает — то ли все ресурсы активно от меня прячутся, то ли их вообще нет


Плохо у них с документацией. Подпишись на netscape.public.mozilla.jseng на news.mozilla.org. Можно в ней же на google groups поискать.

A>Основной вопрос:

A>После некоторой работы с контекстом: создания объектов, объявления переменных, выполнения скриптов, и т.п. хочется каким-то образом удалить из него все созданные сущности. В интерфейсе не видно функций, предназначенных для этого...

Или я чего-то не понимаю, или все неиспользуемые объекты должен убить GC. Может, JS_GC надо потрясти, предварительно отпустив все, что прижато? Я бы еще в сторону JSRuntime посмотрел бы. Чистое IMHO.
Re[2]: Очистка контекста в Mozilla's JavaScript
От: belf Meta
Дата: 26.07.05 18:55
Оценка:
Здравствуйте, degor, Вы писали:

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


A>>Вопрос первый: подскажите, пожалуйста, если кто знает, где найти информацию по использованию Мозилловского движка SpiderMonkey JavaScript (кроме официальной документации). STFW не помогает — то ли все ресурсы активно от меня прячутся, то ли их вообще нет


D>Плохо у них с документацией. Подпишись на netscape.public.mozilla.jseng на news.mozilla.org. Можно в ней же на google groups поискать.


http://www.mozilla.org/js/spidermonkey/apidoc/sparse-frameset.html — JavaScript-1.5 Reference. Далеко не полная, но хоть что-то
http://www.mozilla.org/js/spidermonkey/ — home page. Я думаю вам известна.

Достаточно полезно посмотреть как с этим энжином работают другие
http://wwwsearch.sourceforge.net/python-spidermonkey/
http://users.skynet.be/saw/SpiderMonkey.htm
http://www.cs.unm.edu/~cello/jsgen/
http://www.jsdb.org/embedding.html
Посмотрите также language binding тему, C++ и JavaScript в форуме boost.langbinding

A>>Основной вопрос:

A>>После некоторой работы с контекстом: создания объектов, объявления переменных, выполнения скриптов, и т.п. хочется каким-то образом удалить из него все созданные сущности. В интерфейсе не видно функций, предназначенных для этого...

D>Или я чего-то не понимаю, или все неиспользуемые объекты должен убить GC. Может, JS_GC надо потрясти, предварительно отпустив все, что прижато? Я бы еще в сторону JSRuntime посмотрел бы. Чистое IMHO.


Я использую такую комбинацию
// creating
JSContext* cx = JS_NewContext(
          fRuntime
        , kStackSize
        );
JSObject* scope = JS_NewObject( cx, &sGlobalClass, NULL, NULL );

...

// cleanup
JS_ClearScope(cx, scope);
JS_GC(cx);


Best regards,
Aleksey Chernoraenko
Re[3]: Очистка контекста в Mozilla's JavaScript
От: Antonidze Россия  
Дата: 27.07.05 04:08
Оценка:
Спасибо за ссылки.
Всё-таки жаль, что нет специализированного форума, на котором можно найти ответы на всякие глупые вопросы

B>Я использую такую комбинацию

B>
B>// creating
B>JSContext* cx = JS_NewContext(
B>          fRuntime
B>        , kStackSize
B>        );
B>JSObject* scope = JS_NewObject( cx, &sGlobalClass, NULL, NULL );

B>...

B>// cleanup
B>JS_ClearScope(cx, scope);
B>JS_GC(cx);
B>

B>Best regards,
B>Aleksey Chernoraenko

Н-да, я жутко стормозил... Спасибо!
Только вот ещё такой вопрос: а можно как-нибудь почистить контекст, не удаляя scope?
Поясню, чего я добиваюсь: было замечено, что функция JS_InitStandardClasses выполняется ну очень уж медленно по сравнению со всей остальной работой с JS. Поэтому хочется иметь возможность переиспользовать один и тот же контекст с созданным корневым объектом (scope) и проинициализированными для него стандартными классами.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.