Guest User

Untitled

a guest
Feb 17th, 2019
1,160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.73 KB | None | 0 0
  1. # HG changeset patch
  2. # User hongzhidao <hongzhidao@gmail.com>
  3. # Date 1550330119 -28800
  4. # Node ID 6a88279537941f743ae5bd84ce6983fc2dbb0d7d
  5. # Parent 8c422e42448e23eeacf85cad5f559941fd64a0ca
  6. Fixed nxt_file_name().
  7.  
  8. diff -r 8c422e42448e -r 6a8827953794 nxt/nxt_file.c
  9. --- a/nxt/nxt_file.c Thu Feb 14 21:19:51 2019 +0300
  10. +++ b/nxt/nxt_file.c Sat Feb 16 23:15:19 2019 +0800
  11. @@ -16,18 +16,19 @@
  12. void
  13. nxt_file_name(nxt_str_t *name, char *path)
  14. {
  15. - char *p;
  16. + char *p, *last;
  17. size_t length;
  18.  
  19. length = strlen(path);
  20. + last = path;
  21.  
  22. for (p = path + length; p >= path; p--) {
  23. if (*p == '/') {
  24. - p++;
  25. + last = p + 1;
  26. break;
  27. }
  28. }
  29.  
  30. - name->start = (u_char *) p;
  31. - name->length = length - (p - path);
  32. + name->start = (u_char *) last;
  33. + name->length = length - (last - path);
  34. }
  35. # HG changeset patch
  36. # User hongzhidao <hongzhidao@gmail.com>
  37. # Date 1550330323 -28800
  38. # Node ID 8cfc7e543f5b58cac555d14c39f4efc20817d322
  39. # Parent 6a88279537941f743ae5bd84ce6983fc2dbb0d7d
  40. Style.
  41.  
  42. diff -r 6a8827953794 -r 8cfc7e543f5b njs/njs.c
  43. --- a/njs/njs.c Sat Feb 16 23:15:19 2019 +0800
  44. +++ b/njs/njs.c Sat Feb 16 23:18:43 2019 +0800
  45. @@ -10,8 +10,6 @@
  46.  
  47.  
  48. static nxt_int_t njs_vm_init(njs_vm_t *vm);
  49. -static nxt_int_t njs_vm_invoke(njs_vm_t *vm, njs_function_t *function,
  50. - const njs_value_t *args, nxt_uint_t nargs, njs_index_t retval);
  51. static nxt_int_t njs_vm_handle_events(njs_vm_t *vm);
  52.  
  53.  
  54. @@ -218,20 +216,20 @@ njs_vm_destroy(njs_vm_t *vm)
  55. nxt_int_t
  56. njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end)
  57. {
  58. - nxt_int_t ret;
  59. + nxt_int_t ret;
  60. njs_lexer_t *lexer;
  61. njs_parser_t *parser, *prev;
  62. - njs_generator_t *generator;
  63. + njs_generator_t generator;
  64. +
  65. + if (vm->parser != NULL && !vm->options.accumulative) {
  66. + return NJS_ERROR;
  67. + }
  68.  
  69. parser = nxt_mp_zalloc(vm->mem_pool, sizeof(njs_parser_t));
  70. if (nxt_slow_path(parser == NULL)) {
  71. return NJS_ERROR;
  72. }
  73.  
  74. - if (vm->parser != NULL && !vm->options.accumulative) {
  75. - return NJS_ERROR;
  76. - }
  77. -
  78. prev = vm->parser;
  79. vm->parser = parser;
  80.  
  81. @@ -271,24 +269,16 @@ njs_vm_compile(njs_vm_t *vm, u_char **st
  82. */
  83. vm->code = NULL;
  84.  
  85. - generator = nxt_mp_align(vm->mem_pool, sizeof(njs_value_t),
  86. - sizeof(njs_generator_t));
  87. + nxt_memzero(&generator, sizeof(njs_generator_t));
  88.  
  89. - if (nxt_slow_path(generator == NULL)) {
  90. - goto fail;
  91. - }
  92. -
  93. - nxt_memzero(generator, sizeof(njs_generator_t));
  94. -
  95. - ret = njs_generate_scope(vm, generator, parser->scope);
  96. + ret = njs_generate_scope(vm, &generator, parser->scope);
  97. if (nxt_slow_path(ret != NXT_OK)) {
  98. goto fail;
  99. }
  100.  
  101. - vm->current = generator->code_start;
  102. -
  103. - vm->global_scope = generator->local_scope;
  104. - vm->scope_size = generator->scope_size;
  105. + vm->current = generator.code_start;
  106. + vm->global_scope = generator.local_scope;
  107. + vm->scope_size = generator.scope_size;
  108.  
  109. vm->variables_hash = parser->scope->variables;
  110.  
  111. @@ -458,11 +448,11 @@ nxt_int_t
  112. njs_vm_call(njs_vm_t *vm, njs_function_t *function, const njs_value_t *args,
  113. nxt_uint_t nargs)
  114. {
  115. - return njs_vm_invoke(vm, function, args, nargs, NJS_INDEX_GLOBAL_RETVAL);
  116. + return njs_vm_invoke(vm, function, args, nargs, NJS_INDEX_GLOBAL_RETVAL);
  117. }
  118.  
  119.  
  120. -static nxt_int_t
  121. +nxt_int_t
  122. njs_vm_invoke(njs_vm_t *vm, njs_function_t *function, const njs_value_t *args,
  123. nxt_uint_t nargs, njs_index_t retval)
  124. {
  125. diff -r 6a8827953794 -r 8cfc7e543f5b njs/njs.h
  126. --- a/njs/njs.h Sat Feb 16 23:15:19 2019 +0800
  127. +++ b/njs/njs.h Sat Feb 16 23:18:43 2019 +0800
  128. @@ -193,6 +193,8 @@ NXT_EXPORT nxt_int_t njs_vm_posted(njs_v
  129. */
  130. NXT_EXPORT nxt_int_t njs_vm_call(njs_vm_t *vm, njs_function_t *function,
  131. const njs_value_t *args, nxt_uint_t nargs);
  132. +NXT_EXPORT nxt_int_t njs_vm_invoke(njs_vm_t *vm, njs_function_t *function,
  133. + const njs_value_t *args, nxt_uint_t nargs, njs_index_t retval);
  134.  
  135. /*
  136. * Runs posted events.
  137. diff -r 6a8827953794 -r 8cfc7e543f5b njs/njs_generator.c
  138. --- a/njs/njs_generator.c Sat Feb 16 23:15:19 2019 +0800
  139. +++ b/njs/njs_generator.c Sat Feb 16 23:18:43 2019 +0800
  140. @@ -2282,19 +2282,13 @@ njs_generate_function_scope(njs_vm_t *vm
  141. size_t size;
  142. nxt_int_t ret;
  143. nxt_array_t *closure;
  144. - njs_generator_t *generator;
  145. -
  146. - generator = nxt_mp_align(vm->mem_pool, sizeof(njs_value_t),
  147. - sizeof(njs_generator_t));
  148. - if (nxt_slow_path(generator == NULL)) {
  149. - return NXT_ERROR;
  150. - }
  151. -
  152. - nxt_memzero(generator, sizeof(njs_generator_t));
  153. + njs_generator_t generator;
  154.  
  155. node = node->right;
  156.  
  157. - ret = njs_generate_scope(vm, generator, node->scope);
  158. + nxt_memzero(&generator, sizeof(njs_generator_t));
  159. +
  160. + ret = njs_generate_scope(vm, &generator, node->scope);
  161.  
  162. if (nxt_fast_path(ret == NXT_OK)) {
  163. size = 0;
  164. @@ -2309,16 +2303,13 @@ njs_generate_function_scope(njs_vm_t *vm
  165. lambda->closure_size = size;
  166.  
  167. lambda->nesting = node->scope->nesting;
  168. - lambda->arguments_object = generator->arguments_object;
  169. -
  170. - lambda->local_size = generator->scope_size;
  171. - lambda->local_scope = generator->local_scope;
  172. -
  173. - lambda->start = generator->code_start;
  174. + lambda->arguments_object = generator.arguments_object;
  175. +
  176. + lambda->start = generator.code_start;
  177. + lambda->local_size = generator.scope_size;
  178. + lambda->local_scope = generator.local_scope;
  179. }
  180.  
  181. - nxt_mp_free(vm->mem_pool, generator);
  182. -
  183. return ret;
  184. }
  185.  
  186. diff -r 6a8827953794 -r 8cfc7e543f5b njs/njs_parser.c
  187. --- a/njs/njs_parser.c Sat Feb 16 23:15:19 2019 +0800
  188. +++ b/njs/njs_parser.c Sat Feb 16 23:18:43 2019 +0800
  189. @@ -167,6 +167,7 @@ njs_parser_scope_begin(njs_vm_t *vm, njs
  190. nxt_int_t ret;
  191. nxt_uint_t nesting;
  192. nxt_array_t *values;
  193. + njs_lexer_t *lexer;
  194. njs_parser_scope_t *scope, *parent;
  195.  
  196. nesting = 0;
  197. @@ -232,8 +233,10 @@ njs_parser_scope_begin(njs_vm_t *vm, njs
  198. scope->values[0] = values;
  199. scope->values[1] = NULL;
  200.  
  201. - if (parser->lexer->file.start != NULL) {
  202. - ret = njs_name_copy(vm, &scope->file, &parser->lexer->file);
  203. + lexer = parser->lexer;
  204. +
  205. + if (lexer->file.start != NULL) {
  206. + ret = njs_name_copy(vm, &scope->file, &lexer->file);
  207. if (nxt_slow_path(ret != NXT_OK)) {
  208. return NXT_ERROR;
  209. }
  210. @@ -2178,11 +2181,7 @@ njs_parser_builtin(njs_vm_t *vm, njs_par
  211. njs_variable_t *var;
  212. njs_parser_scope_t *scope;
  213.  
  214. - scope = parser->scope;
  215. -
  216. - while (scope->type != NJS_SCOPE_GLOBAL) {
  217. - scope = scope->parent;
  218. - }
  219. + scope = njs_parser_global_scope(vm);
  220.  
  221. var = njs_variable_add(vm, scope, name, hash, NJS_VARIABLE_VAR);
  222. if (nxt_slow_path(var == NULL)) {
  223. diff -r 6a8827953794 -r 8cfc7e543f5b njs/njs_parser.h
  224. --- a/njs/njs_parser.h Sat Feb 16 23:15:19 2019 +0800
  225. +++ b/njs/njs_parser.h Sat Feb 16 23:18:43 2019 +0800
  226. @@ -360,6 +360,21 @@ njs_parser_node_new(njs_vm_t *vm, njs_pa
  227. }
  228.  
  229.  
  230. +nxt_inline njs_parser_scope_t *
  231. +njs_parser_global_scope(njs_vm_t *vm)
  232. +{
  233. + njs_parser_scope_t *scope;
  234. +
  235. + scope = vm->parser->scope;
  236. +
  237. + while (scope->type != NJS_SCOPE_GLOBAL) {
  238. + scope = scope->parent;
  239. + }
  240. +
  241. + return scope;
  242. +}
  243. +
  244. +
  245. extern const nxt_lvlhsh_proto_t njs_keyword_hash_proto;
  246.  
  247.  
  248. diff -r 6a8827953794 -r 8cfc7e543f5b njs/njs_variable.c
  249. --- a/njs/njs_variable.c Sat Feb 16 23:15:19 2019 +0800
  250. +++ b/njs/njs_variable.c Sat Feb 16 23:18:43 2019 +0800
  251. @@ -144,7 +144,7 @@ njs_variable_reference(njs_vm_t *vm, njs
  252.  
  253. ret = nxt_lvlhsh_insert(&scope->references, &lhq);
  254.  
  255. - if (nxt_slow_path(ret != NXT_ERROR)) {
  256. + if (nxt_fast_path(ret != NXT_ERROR)) {
  257. ret = NXT_OK;
  258. }
  259. }
  260. @@ -356,7 +356,7 @@ njs_variable_reference_resolve(njs_vm_t
  261. njs_parser_scope_t *node_scope)
  262. {
  263. nxt_lvlhsh_query_t lhq;
  264. - njs_parser_scope_t *scope, *parent, *previous;
  265. + njs_parser_scope_t *scope, *previous;
  266.  
  267. lhq.key_hash = vr->hash;
  268. lhq.key = vr->name;
  269. @@ -395,9 +395,7 @@ njs_variable_reference_resolve(njs_vm_t
  270. return NXT_OK;
  271. }
  272.  
  273. - parent = scope->parent;
  274. -
  275. - if (parent == NULL) {
  276. + if (scope->parent == NULL) {
  277. /* A global scope. */
  278. vr->scope = scope;
  279.  
  280. @@ -405,7 +403,7 @@ njs_variable_reference_resolve(njs_vm_t
  281. }
  282.  
  283. previous = scope;
  284. - scope = parent;
  285. + scope = scope->parent;
  286. }
  287. }
  288.  
  289. @@ -495,7 +493,7 @@ njs_name_copy(njs_vm_t *vm, nxt_str_t *d
  290.  
  291. dst->start = nxt_mp_alloc(vm->mem_pool, src->length);
  292.  
  293. - if (nxt_slow_path(dst->start != NULL)) {
  294. + if (nxt_fast_path(dst->start != NULL)) {
  295. (void) memcpy(dst->start, src->start, src->length);
  296.  
  297. return NXT_OK;
Add Comment
Please, Sign In to add comment