ngx_fd_t fd;
ngx_str_t *value, file;
nxt_int_t rc;
- nxt_str_t text, ext, *export;
+ nxt_str_t text, ext;
nxt_lvlhsh_t externals;
ngx_file_info_t fi;
njs_vm_shared_t *shared;
return NGX_CONF_ERROR;
}
- rc = njs_vm_compile(jlcf->vm, &start, end, &export);
+ rc = njs_vm_compile(jlcf->vm, &start, end);
if (rc != NJS_OK) {
njs_vm_exception(jlcf->vm, &text);
ngx_fd_t fd;
ngx_str_t *value, file;
nxt_int_t rc;
- nxt_str_t text, ext, *export;
+ nxt_str_t text, ext;
nxt_lvlhsh_t externals;
ngx_file_info_t fi;
njs_vm_shared_t *shared;
return NGX_CONF_ERROR;
}
- rc = njs_vm_compile(jscf->vm, &start, end, &export);
+ rc = njs_vm_compile(jscf->vm, &start, end);
if (rc != NJS_OK) {
njs_vm_exception(jscf->vm, &text);
}
-nxt_str_t *
-njs_vm_export_functions(njs_vm_t *vm)
-{
- size_t n;
- nxt_str_t *ex, *export;
- njs_value_t *value;
- njs_variable_t *var;
- nxt_lvlhsh_each_t lhe;
-
- n = 1;
-
- nxt_lvlhsh_each_init(&lhe, &njs_variables_hash_proto);
-
- for ( ;; ) {
- var = nxt_lvlhsh_each(&vm->variables_hash, &lhe);
- if (var == NULL) {
- break;
- }
-
- value = njs_global_variable_value(vm, var);
-
- if (njs_is_function(value) && !value->data.u.function->native) {
- n++;
- }
- }
-
- export = nxt_mem_cache_alloc(vm->mem_cache_pool, n * sizeof(nxt_str_t));
- if (nxt_slow_path(export == NULL)) {
- return NULL;
- }
-
- nxt_lvlhsh_each_init(&lhe, &njs_variables_hash_proto);
-
- ex = export;
-
- for ( ;; ) {
- var = nxt_lvlhsh_each(&vm->variables_hash, &lhe);
- if (var == NULL) {
- break;
- }
-
- value = njs_global_variable_value(vm, var);
-
- if (njs_is_function(value) && !value->data.u.function->native) {
- *ex = var->name;
- ex++;
- }
- }
-
- ex->length = 0;
- ex->start = NULL;
-
- return export;
-}
-
-
njs_function_t *
njs_vm_function(njs_vm_t *vm, nxt_str_t *name)
{
njs_parser_scope_t *scope);
njs_ret_t njs_name_copy(njs_vm_t *vm, nxt_str_t *dst, nxt_str_t *src);
-nxt_str_t *njs_vm_export_functions(njs_vm_t *vm);
-
extern const nxt_lvlhsh_proto_t njs_variables_hash_proto;
nxt_int_t
-njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end, nxt_str_t **export)
+njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end)
{
nxt_int_t ret;
njs_lexer_t *lexer;
vm->parser = NULL;
- *export = njs_vm_export_functions(vm);
- if (nxt_slow_path(*export == NULL)) {
- return NJS_ERROR;
- }
-
return NJS_OK;
}
njs_vm_shared_t **shared, nxt_lvlhsh_t *externals);
NXT_EXPORT void njs_vm_destroy(njs_vm_t *vm);
-NXT_EXPORT nxt_int_t njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end,
- nxt_str_t **export);
+NXT_EXPORT nxt_int_t njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end);
NXT_EXPORT njs_vm_t *njs_vm_clone(njs_vm_t *vm, nxt_mem_cache_pool_t *mcp,
void **external);
NXT_EXPORT nxt_int_t njs_vm_call(njs_vm_t *vm, njs_function_t *function,
u_char *start;
njs_vm_t *vm, *nvm;
nxt_int_t ret;
- nxt_str_t s, *export;
+ nxt_str_t s;
nxt_uint_t i;
nxt_bool_t success;
nxt_lvlhsh_t externals;
start = njs_test[i].script.start;
- ret = njs_vm_compile(vm, &start, start + njs_test[i].script.length,
- &export);
+ ret = njs_vm_compile(vm, &start, start + njs_test[i].script.length);
if (ret == NXT_OK) {
if (disassemble) {
njs_vm_t *vm, *nvm;
uint64_t us;
nxt_int_t ret;
- nxt_str_t s, *export;
+ nxt_str_t s;
nxt_uint_t i;
nxt_bool_t success;
nxt_lvlhsh_t externals;
start = script->start;
- ret = njs_vm_compile(vm, &start, start + script->length, &export);
+ ret = njs_vm_compile(vm, &start, start + script->length);
if (ret != NXT_OK) {
return NXT_ERROR;
}