Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.56 KB | None | 0 0
  1. # HG changeset patch
  2. # User Dmitry Volyntsev <xeioex@nginx.com>
  3. # Date 1550668590 -10800
  4. # Wed Feb 20 16:16:30 2019 +0300
  5. # Node ID 8250061df72a46278714165f835adc52f432056a
  6. # Parent 8c422e42448e23eeacf85cad5f559941fd64a0ca
  7. Introduced nxt_file_basename() and nxt_file_dirname().
  8.  
  9. diff --git a/njs/njs_shell.c b/njs/njs_shell.c
  10. --- a/njs/njs_shell.c
  11. +++ b/njs/njs_shell.c
  12. @@ -216,7 +216,9 @@ main(int argc, char **argv)
  13.  
  14. if (!opts.quiet) {
  15. if (opts.file != NULL) {
  16. - nxt_file_name(&vm_options.file, opts.file);
  17. + vm_options.file.start = (u_char *) opts.file;
  18. + vm_options.file.length = strlen(opts.file);
  19. + nxt_file_basename(&vm_options.file, &vm_options.file);
  20.  
  21. } else {
  22. vm_options.file = nxt_string_value("shell");
  23. diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c
  24. --- a/njs/test/njs_unit_test.c
  25. +++ b/njs/test/njs_unit_test.c
  26. @@ -11994,6 +11994,97 @@ njs_vm_object_alloc_test(njs_vm_t * vm,
  27. }
  28.  
  29.  
  30. +static nxt_int_t
  31. +nxt_file_basename_test(njs_vm_t * vm, nxt_bool_t disassemble,
  32. + nxt_bool_t verbose)
  33. +{
  34. + nxt_str_t name;
  35. + nxt_bool_t success;
  36. + nxt_uint_t i;
  37. +
  38. + static const struct {
  39. + nxt_str_t path;
  40. + nxt_str_t expected;
  41. + } tests[] = {
  42. + { nxt_string(""), nxt_string("") },
  43. + { nxt_string("/"), nxt_string("") },
  44. + { nxt_string("/a"), nxt_string("a") },
  45. + { nxt_string("///"), nxt_string("") },
  46. + { nxt_string("///a"), nxt_string("a") },
  47. + { nxt_string("///a/"), nxt_string("") },
  48. + { nxt_string("a"), nxt_string("a") },
  49. + { nxt_string("a/"), nxt_string("") },
  50. + { nxt_string("a//"), nxt_string("") },
  51. + { nxt_string("path/name"), nxt_string("name") },
  52. + { nxt_string("/path/name"), nxt_string("name") },
  53. + { nxt_string("/path/name/"), nxt_string("") },
  54. + };
  55. +
  56. + for (i = 0; i < nxt_nitems(tests); i++) {
  57. + nxt_file_basename(&tests[i].path, &name);
  58. +
  59. + success = nxt_strstr_eq(&tests[i].expected, &name);
  60. +
  61. + if (!success) {
  62. + printf("nxt_file_basename_test(\"%.*s\"):\n"
  63. + "expected: \"%.*s\"\n got: \"%.*s\"\n",
  64. + (int) tests[i].path.length, tests[i].path.start,
  65. + (int) tests[i].expected.length, tests[i].expected.start,
  66. + (int) name.length, name.start);
  67. + return NXT_ERROR;
  68. + }
  69. + }
  70. +
  71. + return NXT_OK;
  72. +}
  73. +
  74. +
  75. +static nxt_int_t
  76. +nxt_file_dirname_test(njs_vm_t * vm, nxt_bool_t disassemble,
  77. + nxt_bool_t verbose)
  78. +{
  79. + nxt_str_t name;
  80. + nxt_bool_t success;
  81. + nxt_uint_t i;
  82. +
  83. + static const struct {
  84. + nxt_str_t path;
  85. + nxt_str_t expected;
  86. + } tests[] = {
  87. + { nxt_string(""), nxt_string("") },
  88. + { nxt_string("/"), nxt_string("/") },
  89. + { nxt_string("/a"), nxt_string("/") },
  90. + { nxt_string("///"), nxt_string("///") },
  91. + { nxt_string("///a"), nxt_string("///") },
  92. + { nxt_string("///a/"), nxt_string("///a") },
  93. + { nxt_string("a"), nxt_string("") },
  94. + { nxt_string("a/"), nxt_string("a") },
  95. + { nxt_string("a//"), nxt_string("a") },
  96. + { nxt_string("p1/p2/name"), nxt_string("p1/p2") },
  97. + { nxt_string("/p1/p2/name"), nxt_string("/p1/p2") },
  98. + { nxt_string("/p1/p2///name"), nxt_string("/p1/p2") },
  99. + { nxt_string("/p1/p2/name/"), nxt_string("/p1/p2/name") },
  100. + };
  101. +
  102. + for (i = 0; i < nxt_nitems(tests); i++) {
  103. + nxt_file_dirname(&tests[i].path, &name);
  104. +
  105. + success = nxt_strstr_eq(&tests[i].expected, &name);
  106. +
  107. + if (!success) {
  108. + printf("nxt_file_dirname_test(\"%.*s\"):\n"
  109. + "expected: \"%.*s\"\n got: \"%.*s\"\n",
  110. + (int) tests[i].path.length, tests[i].path.start,
  111. + (int) tests[i].expected.length, tests[i].expected.start,
  112. + (int) name.length, name.start);
  113. + return NXT_ERROR;
  114. + }
  115. + }
  116. +
  117. + return NXT_OK;
  118. +}
  119. +
  120. +
  121. typedef struct {
  122. nxt_int_t (*test)(njs_vm_t *, nxt_bool_t, nxt_bool_t);
  123. nxt_str_t name;
  124. @@ -12009,10 +12100,13 @@ njs_api_test(nxt_bool_t disassemble, nxt
  125. njs_vm_opt_t options;
  126. njs_api_test_t *test;
  127.  
  128. - static njs_api_test_t njs_api_test[] =
  129. - {
  130. + static njs_api_test_t njs_api_test[] = {
  131. { njs_vm_object_alloc_test,
  132. - nxt_string("njs_vm_object_alloc_test") }
  133. + nxt_string("njs_vm_object_alloc_test") },
  134. + { nxt_file_basename_test,
  135. + nxt_string("nxt_file_basename_test") },
  136. + { nxt_file_dirname_test,
  137. + nxt_string("nxt_file_dirname_test") },
  138. };
  139.  
  140. rc = NXT_ERROR;
  141. diff --git a/nxt/nxt_file.c b/nxt/nxt_file.c
  142. --- a/nxt/nxt_file.c
  143. +++ b/nxt/nxt_file.c
  144. @@ -14,20 +14,57 @@
  145.  
  146.  
  147. void
  148. -nxt_file_name(nxt_str_t *name, char *path)
  149. +nxt_file_basename(const nxt_str_t *path, nxt_str_t *name)
  150. {
  151. - char *p;
  152. - size_t length;
  153. + const u_char *p, *end;
  154.  
  155. - length = strlen(path);
  156. + end = path->start + path->length;
  157. + p = end - 1;
  158.  
  159. - for (p = path + length; p >= path; p--) {
  160. - if (*p == '/') {
  161. - p++;
  162. - break;
  163. - }
  164. + /* Stripping dir prefix. */
  165. +
  166. + while (p >= path->start && *p != '/') { p--; }
  167. +
  168. + p++;
  169. +
  170. + name->start = (u_char *) p;
  171. + name->length = end - p;
  172. +}
  173. +
  174. +
  175. +void
  176. +nxt_file_dirname(const nxt_str_t *path, nxt_str_t *name)
  177. +{
  178. + const u_char *p, *end;
  179. +
  180. + if (path->length == 0) {
  181. + *name = nxt_string_value("");
  182. + return;
  183. }
  184.  
  185. - name->start = (u_char *) p;
  186. - name->length = length - (p - path);
  187. + p = path->start + path->length - 1;
  188. +
  189. + /* Stripping basename. */
  190. +
  191. + while (p >= path->start && *p != '/') { p--; }
  192. +
  193. + end = p + 1;
  194. +
  195. + if (end == path->start) {
  196. + *name = nxt_string_value("");
  197. + return;
  198. + }
  199. +
  200. + /* Stripping trailing slashes. */
  201. +
  202. + while (p >= path->start && *p == '/') { p--; }
  203. +
  204. + p++;
  205. +
  206. + if (p == path->start) {
  207. + p = end;
  208. + }
  209. +
  210. + name->start = path->start;
  211. + name->length = p - path->start;
  212. }
  213. diff --git a/nxt/nxt_file.h b/nxt/nxt_file.h
  214. --- a/nxt/nxt_file.h
  215. +++ b/nxt/nxt_file.h
  216. @@ -8,7 +8,8 @@
  217. #define _NXT_FILE_H_INCLUDED_
  218.  
  219.  
  220. -void nxt_file_name(nxt_str_t *name, char *path);
  221. +void nxt_file_basename(const nxt_str_t *path, nxt_str_t *name);
  222. +void nxt_file_dirname(const nxt_str_t *path, nxt_str_t *name);
  223.  
  224.  
  225. #endif /* _NXT_FILE_H_INCLUDED_ */
  226. # HG changeset patch
  227. # User hongzhidao <hongzhidao@gmail.com>
  228. # Date 1550330323 -28800
  229. # Sat Feb 16 23:18:43 2019 +0800
  230. # Node ID 64278ad1e14ccf9e6414d531fdea15d465d3167e
  231. # Parent 8250061df72a46278714165f835adc52f432056a
  232. Introduced njs_parser_global_scope().
  233.  
  234. diff --git a/njs/njs_parser.c b/njs/njs_parser.c
  235. --- a/njs/njs_parser.c
  236. +++ b/njs/njs_parser.c
  237. @@ -2178,11 +2178,7 @@ njs_parser_builtin(njs_vm_t *vm, njs_par
  238. njs_variable_t *var;
  239. njs_parser_scope_t *scope;
  240.  
  241. - scope = parser->scope;
  242. -
  243. - while (scope->type != NJS_SCOPE_GLOBAL) {
  244. - scope = scope->parent;
  245. - }
  246. + scope = njs_parser_global_scope(vm);
  247.  
  248. var = njs_variable_add(vm, scope, name, hash, NJS_VARIABLE_VAR);
  249. if (nxt_slow_path(var == NULL)) {
  250. diff --git a/njs/njs_parser.h b/njs/njs_parser.h
  251. --- a/njs/njs_parser.h
  252. +++ b/njs/njs_parser.h
  253. @@ -360,6 +360,21 @@ njs_parser_node_new(njs_vm_t *vm, njs_pa
  254. }
  255.  
  256.  
  257. +nxt_inline njs_parser_scope_t *
  258. +njs_parser_global_scope(njs_vm_t *vm)
  259. +{
  260. + njs_parser_scope_t *scope;
  261. +
  262. + scope = vm->parser->scope;
  263. +
  264. + while (scope->type != NJS_SCOPE_GLOBAL) {
  265. + scope = scope->parent;
  266. + }
  267. +
  268. + return scope;
  269. +}
  270. +
  271. +
  272. extern const nxt_lvlhsh_proto_t njs_keyword_hash_proto;
  273.  
  274.  
  275. diff --git a/njs/njs_variable.c b/njs/njs_variable.c
  276. --- a/njs/njs_variable.c
  277. +++ b/njs/njs_variable.c
  278. @@ -356,7 +356,7 @@ njs_variable_reference_resolve(njs_vm_t
  279. njs_parser_scope_t *node_scope)
  280. {
  281. nxt_lvlhsh_query_t lhq;
  282. - njs_parser_scope_t *scope, *parent, *previous;
  283. + njs_parser_scope_t *scope, *previous;
  284.  
  285. lhq.key_hash = vr->hash;
  286. lhq.key = vr->name;
  287. @@ -395,9 +395,7 @@ njs_variable_reference_resolve(njs_vm_t
  288. return NXT_OK;
  289. }
  290.  
  291. - parent = scope->parent;
  292. -
  293. - if (parent == NULL) {
  294. + if (scope->parent == NULL) {
  295. /* A global scope. */
  296. vr->scope = scope;
  297.  
  298. @@ -405,7 +403,7 @@ njs_variable_reference_resolve(njs_vm_t
  299. }
  300.  
  301. previous = scope;
  302. - scope = parent;
  303. + scope = scope->parent;
  304. }
  305. }
  306.  
  307. # HG changeset patch
  308. # User hongzhidao <hongzhidao@gmail.com>
  309. # Date 1550330323 -28800
  310. # Sat Feb 16 23:18:43 2019 +0800
  311. # Node ID b23c0a90e37f71c6a30921593c0d547aab90b4b3
  312. # Parent 64278ad1e14ccf9e6414d531fdea15d465d3167e
  313. Making njs_vm_invoke() public.
  314.  
  315. diff --git a/njs/njs.c b/njs/njs.c
  316. --- a/njs/njs.c
  317. +++ b/njs/njs.c
  318. @@ -10,8 +10,6 @@
  319.  
  320.  
  321. static nxt_int_t njs_vm_init(njs_vm_t *vm);
  322. -static nxt_int_t njs_vm_invoke(njs_vm_t *vm, njs_function_t *function,
  323. - const njs_value_t *args, nxt_uint_t nargs, njs_index_t retval);
  324. static nxt_int_t njs_vm_handle_events(njs_vm_t *vm);
  325.  
  326.  
  327. @@ -458,11 +456,11 @@ nxt_int_t
  328. njs_vm_call(njs_vm_t *vm, njs_function_t *function, const njs_value_t *args,
  329. nxt_uint_t nargs)
  330. {
  331. - return njs_vm_invoke(vm, function, args, nargs, NJS_INDEX_GLOBAL_RETVAL);
  332. + return njs_vm_invoke(vm, function, args, nargs, NJS_INDEX_GLOBAL_RETVAL);
  333. }
  334.  
  335.  
  336. -static nxt_int_t
  337. +nxt_int_t
  338. njs_vm_invoke(njs_vm_t *vm, njs_function_t *function, const njs_value_t *args,
  339. nxt_uint_t nargs, njs_index_t retval)
  340. {
  341. diff --git a/njs/njs.h b/njs/njs.h
  342. --- a/njs/njs.h
  343. +++ b/njs/njs.h
  344. @@ -193,6 +193,8 @@ NXT_EXPORT nxt_int_t njs_vm_posted(njs_v
  345. */
  346. NXT_EXPORT nxt_int_t njs_vm_call(njs_vm_t *vm, njs_function_t *function,
  347. const njs_value_t *args, nxt_uint_t nargs);
  348. +NXT_EXPORT nxt_int_t njs_vm_invoke(njs_vm_t *vm, njs_function_t *function,
  349. + const njs_value_t *args, nxt_uint_t nargs, njs_index_t retval);
  350.  
  351. /*
  352. * Runs posted events.
  353. # HG changeset patch
  354. # User hongzhidao <hongzhidao@gmail.com>
  355. # Date 1550330323 -28800
  356. # Sat Feb 16 23:18:43 2019 +0800
  357. # Node ID 68e7119e97fe4ff75d52f6055d9e3a2b873d903d
  358. # Parent b23c0a90e37f71c6a30921593c0d547aab90b4b3
  359. Allocating njs_generator_t on stack.
  360.  
  361. diff --git a/njs/njs.c b/njs/njs.c
  362. --- a/njs/njs.c
  363. +++ b/njs/njs.c
  364. @@ -216,20 +216,20 @@ njs_vm_destroy(njs_vm_t *vm)
  365. nxt_int_t
  366. njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end)
  367. {
  368. - nxt_int_t ret;
  369. + nxt_int_t ret;
  370. njs_lexer_t *lexer;
  371. njs_parser_t *parser, *prev;
  372. - njs_generator_t *generator;
  373. + njs_generator_t generator;
  374. +
  375. + if (vm->parser != NULL && !vm->options.accumulative) {
  376. + return NJS_ERROR;
  377. + }
  378.  
  379. parser = nxt_mp_zalloc(vm->mem_pool, sizeof(njs_parser_t));
  380. if (nxt_slow_path(parser == NULL)) {
  381. return NJS_ERROR;
  382. }
  383.  
  384. - if (vm->parser != NULL && !vm->options.accumulative) {
  385. - return NJS_ERROR;
  386. - }
  387. -
  388. prev = vm->parser;
  389. vm->parser = parser;
  390.  
  391. @@ -269,24 +269,16 @@ njs_vm_compile(njs_vm_t *vm, u_char **st
  392. */
  393. vm->code = NULL;
  394.  
  395. - generator = nxt_mp_align(vm->mem_pool, sizeof(njs_value_t),
  396. - sizeof(njs_generator_t));
  397. + nxt_memzero(&generator, sizeof(njs_generator_t));
  398.  
  399. - if (nxt_slow_path(generator == NULL)) {
  400. - goto fail;
  401. - }
  402. -
  403. - nxt_memzero(generator, sizeof(njs_generator_t));
  404. -
  405. - ret = njs_generate_scope(vm, generator, parser->scope);
  406. + ret = njs_generate_scope(vm, &generator, parser->scope);
  407. if (nxt_slow_path(ret != NXT_OK)) {
  408. goto fail;
  409. }
  410.  
  411. - vm->current = generator->code_start;
  412. -
  413. - vm->global_scope = generator->local_scope;
  414. - vm->scope_size = generator->scope_size;
  415. + vm->current = generator.code_start;
  416. + vm->global_scope = generator.local_scope;
  417. + vm->scope_size = generator.scope_size;
  418.  
  419. vm->variables_hash = parser->scope->variables;
  420.  
  421. diff --git a/njs/njs_generator.c b/njs/njs_generator.c
  422. --- a/njs/njs_generator.c
  423. +++ b/njs/njs_generator.c
  424. @@ -2282,19 +2282,13 @@ njs_generate_function_scope(njs_vm_t *vm
  425. size_t size;
  426. nxt_int_t ret;
  427. nxt_array_t *closure;
  428. - njs_generator_t *generator;
  429. -
  430. - generator = nxt_mp_align(vm->mem_pool, sizeof(njs_value_t),
  431. - sizeof(njs_generator_t));
  432. - if (nxt_slow_path(generator == NULL)) {
  433. - return NXT_ERROR;
  434. - }
  435. -
  436. - nxt_memzero(generator, sizeof(njs_generator_t));
  437. + njs_generator_t generator;
  438.  
  439. node = node->right;
  440.  
  441. - ret = njs_generate_scope(vm, generator, node->scope);
  442. + nxt_memzero(&generator, sizeof(njs_generator_t));
  443. +
  444. + ret = njs_generate_scope(vm, &generator, node->scope);
  445.  
  446. if (nxt_fast_path(ret == NXT_OK)) {
  447. size = 0;
  448. @@ -2309,16 +2303,13 @@ njs_generate_function_scope(njs_vm_t *vm
  449. lambda->closure_size = size;
  450.  
  451. lambda->nesting = node->scope->nesting;
  452. - lambda->arguments_object = generator->arguments_object;
  453. -
  454. - lambda->local_size = generator->scope_size;
  455. - lambda->local_scope = generator->local_scope;
  456. -
  457. - lambda->start = generator->code_start;
  458. + lambda->arguments_object = generator.arguments_object;
  459. +
  460. + lambda->start = generator.code_start;
  461. + lambda->local_size = generator.scope_size;
  462. + lambda->local_scope = generator.local_scope;
  463. }
  464.  
  465. - nxt_mp_free(vm->mem_pool, generator);
  466. -
  467. return ret;
  468. }
  469.  
  470. # HG changeset patch
  471. # User hongzhidao <hongzhidao@gmail.com>
  472. # Date 1550330323 -28800
  473. # Sat Feb 16 23:18:43 2019 +0800
  474. # Node ID 2101597aa18d30be530e98057ffb14550e1d6e52
  475. # Parent 68e7119e97fe4ff75d52f6055d9e3a2b873d903d
  476. Allocating njs_lexer_t on stack.
  477.  
  478. diff --git a/njs/njs.c b/njs/njs.c
  479. --- a/njs/njs.c
  480. +++ b/njs/njs.c
  481. @@ -217,7 +217,7 @@ nxt_int_t
  482. njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end)
  483. {
  484. nxt_int_t ret;
  485. - njs_lexer_t *lexer;
  486. + njs_lexer_t lexer;
  487. njs_parser_t *parser, *prev;
  488. njs_generator_t generator;
  489.  
  490. @@ -233,17 +233,15 @@ njs_vm_compile(njs_vm_t *vm, u_char **st
  491. prev = vm->parser;
  492. vm->parser = parser;
  493.  
  494. - lexer = nxt_mp_zalloc(vm->mem_pool, sizeof(njs_lexer_t));
  495. - if (nxt_slow_path(lexer == NULL)) {
  496. - return NJS_ERROR;
  497. - }
  498. + nxt_memzero(&lexer, sizeof(njs_lexer_t));
  499.  
  500. - parser->lexer = lexer;
  501. - lexer->start = *start;
  502. - lexer->end = end;
  503. - lexer->line = 1;
  504. - lexer->file = vm->options.file;
  505. - lexer->keywords_hash = vm->shared->keywords_hash;
  506. + lexer.start = *start;
  507. + lexer.end = end;
  508. + lexer.line = 1;
  509. + lexer.file = vm->options.file;
  510. + lexer.keywords_hash = vm->shared->keywords_hash;
  511. +
  512. + parser->lexer = &lexer;
  513.  
  514. if (vm->backtrace != NULL) {
  515. nxt_array_reset(vm->backtrace);
  516. @@ -261,7 +259,7 @@ njs_vm_compile(njs_vm_t *vm, u_char **st
  517. goto fail;
  518. }
  519.  
  520. - *start = parser->lexer->start;
  521. + *start = lexer.start;
  522.  
  523. /*
  524. * Reset the code array to prevent it from being disassembled
  525. # HG changeset patch
  526. # User hongzhidao <hongzhidao@gmail.com>
  527. # Date 1550330323 -28800
  528. # Sat Feb 16 23:18:43 2019 +0800
  529. # Node ID 5db48d70db65e4734706a76767babda37a1ea74a
  530. # Parent 2101597aa18d30be530e98057ffb14550e1d6e52
  531. Improved njs_vm_compile().
  532.  
  533. diff --git a/njs/njs.c b/njs/njs.c
  534. --- a/njs/njs.c
  535. +++ b/njs/njs.c
  536. @@ -216,10 +216,11 @@ njs_vm_destroy(njs_vm_t *vm)
  537. nxt_int_t
  538. njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end)
  539. {
  540. - nxt_int_t ret;
  541. - njs_lexer_t lexer;
  542. - njs_parser_t *parser, *prev;
  543. - njs_generator_t generator;
  544. + nxt_int_t ret;
  545. + njs_lexer_t lexer;
  546. + njs_parser_t *parser, *prev;
  547. + njs_generator_t generator;
  548. + njs_parser_scope_t *scope;
  549.  
  550. if (vm->parser != NULL && !vm->options.accumulative) {
  551. return NJS_ERROR;
  552. @@ -254,7 +255,9 @@ njs_vm_compile(njs_vm_t *vm, u_char **st
  553. goto fail;
  554. }
  555.  
  556. - ret = njs_variables_scope_reference(vm, parser->scope);
  557. + scope = parser->scope;
  558. +
  559. + ret = njs_variables_scope_reference(vm, scope);
  560. if (nxt_slow_path(ret != NXT_OK)) {
  561. goto fail;
  562. }
  563. @@ -269,7 +272,7 @@ njs_vm_compile(njs_vm_t *vm, u_char **st
  564.  
  565. nxt_memzero(&generator, sizeof(njs_generator_t));
  566.  
  567. - ret = njs_generate_scope(vm, &generator, parser->scope);
  568. + ret = njs_generate_scope(vm, &generator, scope);
  569. if (nxt_slow_path(ret != NXT_OK)) {
  570. goto fail;
  571. }
  572. @@ -278,7 +281,7 @@ njs_vm_compile(njs_vm_t *vm, u_char **st
  573. vm->global_scope = generator.local_scope;
  574. vm->scope_size = generator.scope_size;
  575.  
  576. - vm->variables_hash = parser->scope->variables;
  577. + vm->variables_hash = scope->variables;
  578.  
  579. if (vm->options.init) {
  580. ret = njs_vm_init(vm);
  581. # HG changeset patch
  582. # User hongzhidao <hongzhidao@gmail.com>
  583. # Date 1550330323 -28800
  584. # Sat Feb 16 23:18:43 2019 +0800
  585. # Node ID 82794813ce4cf58f4674daa2e93429e7410e3dbf
  586. # Parent 5db48d70db65e4734706a76767babda37a1ea74a
  587. Fixed fast paths.
  588.  
  589. diff --git a/njs/njs_variable.c b/njs/njs_variable.c
  590. --- a/njs/njs_variable.c
  591. +++ b/njs/njs_variable.c
  592. @@ -144,7 +144,7 @@ njs_variable_reference(njs_vm_t *vm, njs
  593.  
  594. ret = nxt_lvlhsh_insert(&scope->references, &lhq);
  595.  
  596. - if (nxt_slow_path(ret != NXT_ERROR)) {
  597. + if (nxt_fast_path(ret != NXT_ERROR)) {
  598. ret = NXT_OK;
  599. }
  600. }
  601. @@ -493,7 +493,7 @@ njs_name_copy(njs_vm_t *vm, nxt_str_t *d
  602.  
  603. dst->start = nxt_mp_alloc(vm->mem_pool, src->length);
  604.  
  605. - if (nxt_slow_path(dst->start != NULL)) {
  606. + if (nxt_fast_path(dst->start != NULL)) {
  607. (void) memcpy(dst->start, src->start, src->length);
  608.  
  609. return NXT_OK;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement