return NGX_CONF_ERROR;
}
- rc = njs_vm_compile(jlcf->vm, &start, end, NULL, &export);
+ rc = njs_vm_compile(jlcf->vm, &start, end, &export);
if (rc != NJS_OK) {
njs_vm_exception(jlcf->vm, &text);
return NGX_CONF_ERROR;
}
- rc = njs_vm_compile(jscf->vm, &start, end, NULL, &export);
+ rc = njs_vm_compile(jscf->vm, &start, end, &export);
if (rc != NJS_OK) {
njs_vm_exception(jscf->vm, &text);
case NJS_TOKEN_END:
return njs_generate_stop_statement(vm, parser, node);
- case NJS_TOKEN_CALL:
- return njs_generate_children(vm, parser, node);
-
case NJS_TOKEN_COMMA:
return njs_generate_comma_expression(vm, parser, node);
node = parser->node;
- if (node != NULL && node->right != NULL) {
- if (node->right->token == NJS_TOKEN_FUNCTION) {
- node->token = NJS_TOKEN_CALL;
- node->scope = parser->scope;
- return node;
- }
-
- } else {
+ if (node == NULL) {
/* Empty string, just semicolons or variables declarations. */
node = njs_parser_node_alloc(vm);
NJS_TOKEN_ILLEGAL = 0,
NJS_TOKEN_END,
- NJS_TOKEN_CALL,
NJS_TOKEN_SPACE,
NJS_TOKEN_LINE_END,
nxt_int_t
-njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end,
- njs_function_t **function, nxt_str_t **export)
+njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end, nxt_str_t **export)
{
nxt_int_t ret;
njs_lexer_t *lexer;
njs_parser_t *parser;
- njs_variable_t *var;
njs_parser_node_t *node;
parser = nxt_mem_cache_zalloc(vm->mem_cache_pool, sizeof(njs_parser_t));
return NJS_ERROR;
}
- if (function != NULL) {
- if (node->token == NJS_TOKEN_CALL) {
- var = njs_variable_get(vm, node->right, NJS_NAME_DECLARATION);
- if (nxt_slow_path(var == NULL)) {
- return NJS_ERROR;
- }
-
- *function = var->value.data.u.function;
-
- } else {
- *function = NULL;
- }
- }
-
*start = parser->lexer->start;
ret = njs_generate_scope(vm, parser, node);
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,
- njs_function_t **function, nxt_str_t **export);
+ nxt_str_t **export);
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,
{ nxt_string("parseFloat('12345abc')"),
nxt_string("12345") },
- /* External interface. */
-
- { nxt_string("function f(req) { return req.uri }"),
- nxt_string("АБВ") },
-
/* Trick: number to boolean. */
{ nxt_string("var a = 0; !!a"),
u_char *start;
njs_vm_t *vm, *nvm;
nxt_int_t ret;
- nxt_str_t s, r_name, *export;
+ nxt_str_t s, *export;
nxt_uint_t i;
nxt_bool_t success;
nxt_lvlhsh_t externals;
- njs_function_t *function;
njs_vm_shared_t *shared;
njs_unit_test_req r;
- njs_opaque_value_t value;
nxt_mem_cache_pool_t *mcp;
/*
start = njs_test[i].script.start;
ret = njs_vm_compile(vm, &start, start + njs_test[i].script.length,
- &function, &export);
+ &export);
if (ret == NXT_OK) {
if (disassemble) {
r.uri.length = 6;
r.uri.start = (u_char *) "АБВ";
- if (function != NULL) {
- r_name.length = 2;
- r_name.start = (u_char *) "$r";
-
- ret = njs_vm_external(nvm, NULL, &r_name, &value);
- if (ret != NXT_OK) {
- return NXT_ERROR;
- }
-
- ret = njs_vm_call(nvm, function, &value, 1);
-
- } else {
- ret = njs_vm_run(nvm);
- }
+ ret = njs_vm_run(nvm);
if (ret == NXT_OK) {
if (njs_vm_retval(nvm, &s) != NXT_OK) {
start = script->start;
- ret = njs_vm_compile(vm, &start, start + script->length, NULL, &export);
+ ret = njs_vm_compile(vm, &start, start + script->length, &export);
if (ret != NXT_OK) {
return NXT_ERROR;
}
}
if (njs_vm_run(nvm) == NXT_OK) {
-
if (njs_vm_retval(nvm, &s) != NXT_OK) {
return NXT_ERROR;
}