diff --git a/NEWS b/NEWS index e5487381..5267b83a 100644 --- a/NEWS +++ b/NEWS @@ -46,6 +46,8 @@ Miscellaneous: * enhancement: Add a new entry Link Info under Link main menu. * enhancement: New option protocol.http.compression. * enhancement: Indicate backgrounded downloads using an unused led. +* enhancement: Display the number of ECMAScript interpreters that have + been allocated for documents in the Resources dialog. ////////////////////////////////////////////////////////////////////// The following changes should be removed from NEWS before ELinks 0.13.0 diff --git a/src/dialogs/info.c b/src/dialogs/info.c index 77bbab4b..26981474 100644 --- a/src/dialogs/info.c +++ b/src/dialogs/info.c @@ -19,6 +19,7 @@ #include "config/options.h" #include "dialogs/info.h" #include "document/renderer.h" +#include "ecmascript/ecmascript.h" #include "intl/gettext/libintl.h" #include "main/select.h" #include "main/timer.h" @@ -231,6 +232,15 @@ get_resource_info(struct terminal *term, void *data) val_add(n_("%ld refreshing", "%ld refreshing", val, term)); add_to_string(&info, ".\n"); +#ifdef CONFIG_ECMASCRIPT + add_to_string(&info, _("ECMAScript", term)); + add_to_string(&info, ": "); + + val = ecmascript_get_interpreter_count(); + val_add(n_("%ld interpreter", "%ld interpreters", val, term)); + add_to_string(&info, ".\n"); +#endif + add_to_string(&info, _("Interlinking", term)); add_to_string(&info, ": "); if (term->master) diff --git a/src/ecmascript/ecmascript.c b/src/ecmascript/ecmascript.c index 690a2926..4b9d18f0 100644 --- a/src/ecmascript/ecmascript.c +++ b/src/ecmascript/ecmascript.c @@ -66,6 +66,8 @@ static struct option_info ecmascript_options[] = { NULL_OPTION_INFO, }; +static int interpreter_count; + struct ecmascript_interpreter * ecmascript_get_interpreter(struct view_state *vs) { @@ -77,6 +79,8 @@ ecmascript_get_interpreter(struct view_state *vs) if (!interpreter) return NULL; + ++interpreter_count; + interpreter->vs = vs; interpreter->vs->ecmascript_fragile = 0; init_list(interpreter->onload_snippets); @@ -85,6 +89,7 @@ ecmascript_get_interpreter(struct view_state *vs) #else spidermonkey_get_interpreter(interpreter); #endif + init_string(&interpreter->code); return interpreter; } @@ -111,6 +116,13 @@ ecmascript_put_interpreter(struct ecmascript_interpreter *interpreter) interpreter->vs->ecmascript = NULL; interpreter->vs->ecmascript_fragile = 1; mem_free(interpreter); + --interpreter_count; +} + +int +ecmascript_get_interpreter_count(void) +{ + return interpreter_count; } void diff --git a/src/ecmascript/ecmascript.h b/src/ecmascript/ecmascript.h index 5285ea41..2f1c052b 100644 --- a/src/ecmascript/ecmascript.h +++ b/src/ecmascript/ecmascript.h @@ -71,6 +71,7 @@ void ecmascript_free_urls(struct module *module); struct ecmascript_interpreter *ecmascript_get_interpreter(struct view_state*vs); void ecmascript_put_interpreter(struct ecmascript_interpreter *interpreter); +int ecmascript_get_interpreter_count(void); void ecmascript_detach_form_view(struct form_view *fv); void ecmascript_detach_form_state(struct form_state *fs);