nxt_lvlhsh_init(&externals);
- if (njs_add_external(&externals, mcp, 0, ngx_http_js_externals,
- nxt_nitems(ngx_http_js_externals))
+ if (njs_vm_external_add(&externals, mcp, 0, ngx_http_js_externals,
+ nxt_nitems(ngx_http_js_externals))
!= NJS_OK)
{
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "could not add js externals");
if (function) {
ngx_str_set(&name, "$r");
- rc = njs_external_get(vm, NULL, &name, &js->args[0]);
+ rc = njs_vm_external(vm, NULL, &name, &js->args[0]);
if (rc != NXT_OK) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"could not get $r external");
ngx_str_set(&name, "response");
- rc = njs_external_get(vm, &js->args[0], &name, &js->args[1]);
+ rc = njs_vm_external(vm, &js->args[0], &name, &js->args[1]);
if (rc != NXT_OK) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"could not get $r.response external");
nxt_int_t
-njs_add_external(nxt_lvlhsh_t *hash, nxt_mem_cache_pool_t *mcp,
+njs_vm_external_add(nxt_lvlhsh_t *hash, nxt_mem_cache_pool_t *mcp,
uintptr_t object, njs_external_t *external, nxt_uint_t n)
{
nxt_int_t ret;
}
if (external->properties != NULL) {
- ret = njs_add_external(&ext->hash, mcp, object,
+ ret = njs_vm_external_add(&ext->hash, mcp, object,
external->properties, external->nproperties);
if (nxt_slow_path(ret != NXT_OK)) {
return ret;
nxt_int_t
-njs_external_get(njs_vm_t *vm, njs_opaque_value_t *obj, nxt_str_t *property,
+njs_vm_external(njs_vm_t *vm, njs_opaque_value_t *obj, nxt_str_t *property,
njs_opaque_value_t *value)
{
uint32_t (*key_hash)(const void *, size_t);
var = lhq.value;
- value = (njs_value_t *) ((u_char *) vm->scopes[NJS_SCOPE_GLOBAL]
- + njs_offset(var->index));
+ value = (njs_value_t *) ((u_char *) vm->global_scope
+ + njs_offset(var->index) - NJS_INDEX_GLOBAL_OFFSET);
return value->data.u.function;
}
nvm->variables_hash = vm->variables_hash;
nvm->values_hash = vm->values_hash;
+ nvm->externals_hash = vm->externals_hash;
nvm->retval = njs_value_void;
nvm->current = vm->current;
#define NJS_DONE NXT_DONE
-NXT_EXPORT nxt_int_t njs_add_external(nxt_lvlhsh_t *hash,
+NXT_EXPORT nxt_int_t njs_vm_external_add(nxt_lvlhsh_t *hash,
nxt_mem_cache_pool_t *mcp, uintptr_t object, njs_external_t *external,
nxt_uint_t n);
-NXT_EXPORT nxt_int_t njs_external_get(njs_vm_t *vm, njs_opaque_value_t *object,
+NXT_EXPORT nxt_int_t njs_vm_external(njs_vm_t *vm, njs_opaque_value_t *object,
nxt_str_t *property, njs_opaque_value_t *value);
NXT_EXPORT njs_vm_t *njs_vm_create(nxt_mem_cache_pool_t *mcp,
{
nxt_lvlhsh_init(externals);
- return njs_add_external(externals, mcp, 0, nxt_test_external,
- nxt_nitems(nxt_test_external));
+ return njs_vm_external_add(externals, mcp, 0, nxt_test_external,
+ nxt_nitems(nxt_test_external));
}
r_name.len = 2;
r_name.data = (u_char *) "$r";
- ret = njs_external_get(vm, NULL, &r_name, &value);
+ ret = njs_vm_external(nvm, NULL, &r_name, &value);
if (ret != NXT_OK) {
return NXT_ERROR;
}