From: Dmitry Volyntsev Date: Mon, 8 Jul 2019 14:51:58 +0000 (+0300) Subject: Using njs_set_regexp() and njs_regexp() where approprite. X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=29dbc3e1344a5dab31d03fd0a372931e6990bdd4;p=njs.git Using njs_set_regexp() and njs_regexp() where approprite. --- diff --git a/njs/njs_regexp.c b/njs/njs_regexp.c index d25a914b..0ea4321d 100644 --- a/njs/njs_regexp.c +++ b/njs/njs_regexp.c @@ -80,7 +80,7 @@ njs_regexp_value_flags(njs_vm_t *vm, const njs_value_t *regexp) flags = 0; - pattern = regexp->data.u.regexp->pattern; + pattern = njs_regexp_pattern(regexp); if (pattern->global) { flags |= NJS_REGEXP_GLOBAL; @@ -195,9 +195,7 @@ njs_regexp_create(njs_vm_t *vm, njs_value_t *value, u_char *start, regexp = njs_regexp_alloc(vm, pattern); if (nxt_fast_path(regexp != NULL)) { - value->data.u.regexp = regexp; - value->type = NJS_REGEXP; - value->data.truth = 1; + njs_set_regexp(value, regexp); return NXT_OK; } @@ -729,7 +727,7 @@ njs_regexp_prototype_last_index(njs_vm_t *vm, njs_value_t *value, njs_release(vm, value); - regexp = value->data.u.regexp; + regexp = njs_regexp(value); (void) njs_string_prop(&string, ®exp->string); @@ -746,7 +744,7 @@ njs_regexp_prototype_global(njs_vm_t *vm, njs_value_t *value, { njs_regexp_pattern_t *pattern; - pattern = value->data.u.regexp->pattern; + pattern = njs_regexp_pattern(value); *retval = pattern->global ? njs_value_true : njs_value_false; njs_release(vm, value); @@ -760,7 +758,7 @@ njs_regexp_prototype_ignore_case(njs_vm_t *vm, njs_value_t *value, { njs_regexp_pattern_t *pattern; - pattern = value->data.u.regexp->pattern; + pattern = njs_regexp_pattern(value); *retval = pattern->ignore_case ? njs_value_true : njs_value_false; njs_release(vm, value); @@ -774,7 +772,7 @@ njs_regexp_prototype_multiline(njs_vm_t *vm, njs_value_t *value, { njs_regexp_pattern_t *pattern; - pattern = value->data.u.regexp->pattern; + pattern = njs_regexp_pattern(value); *retval = pattern->multiline ? njs_value_true : njs_value_false; njs_release(vm, value); @@ -791,7 +789,7 @@ njs_regexp_prototype_source(njs_vm_t *vm, njs_value_t *value, uint32_t size; njs_regexp_pattern_t *pattern; - pattern = value->data.u.regexp->pattern; + pattern = njs_regexp_pattern(value); /* Skip starting "/". */ source = pattern->source + 1; @@ -825,7 +823,7 @@ njs_regexp_to_string(njs_vm_t *vm, njs_value_t *retval, uint32_t size; njs_regexp_pattern_t *pattern; - pattern = value->data.u.regexp->pattern; + pattern = njs_regexp_pattern(value); source = pattern->source; size = nxt_strlen(source); @@ -861,7 +859,7 @@ njs_regexp_prototype_test(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, n = (string.length != 0); - pattern = args[0].data.u.regexp->pattern; + pattern = njs_regexp_pattern(&args[0]); if (nxt_regex_is_valid(&pattern->regex[n])) { ret = njs_regexp_match(vm, &pattern->regex[n], string.start, @@ -903,7 +901,7 @@ njs_regexp_prototype_exec(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, value = &njs_string_undefined; } - regexp = args[0].data.u.regexp; + regexp = njs_regexp(&args[0]); regexp->string = *value; (void) njs_string_prop(&string, value); diff --git a/njs/njs_string.c b/njs/njs_string.c index 30c1128e..644031c3 100644 --- a/njs/njs_string.c +++ b/njs/njs_string.c @@ -2567,7 +2567,7 @@ njs_string_prototype_search(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, switch (args[1].type) { case NJS_REGEXP: - pattern = args[1].data.u.regexp->pattern; + pattern = njs_regexp_pattern(&args[1]); break; case NJS_STRING: @@ -2638,7 +2638,7 @@ njs_string_prototype_match(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, if (nargs > 1) { if (njs_is_regexp(&args[1])) { - pattern = args[1].data.u.regexp->pattern; + pattern = njs_regexp_pattern(&args[1]); if (pattern->global) { return njs_string_match_multiple(vm, args, pattern); @@ -2867,7 +2867,7 @@ found: goto done; case NJS_REGEXP: - pattern = args[1].data.u.regexp->pattern; + pattern = njs_regexp_pattern(&args[1]); if (!nxt_regex_is_valid(&pattern->regex[type])) { goto single; @@ -2986,7 +2986,7 @@ njs_string_prototype_replace(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, } if (njs_is_regexp(&args[1])) { - regex = &args[1].data.u.regexp->pattern->regex[r->type]; + regex = &njs_regexp_pattern(&args[1])->regex[r->type]; if (!nxt_regex_is_valid(regex)) { goto original; @@ -3076,7 +3076,7 @@ njs_string_replace_regexp(njs_vm_t *vm, njs_value_t *args, njs_regexp_pattern_t *pattern; njs_string_replace_part_t replace; - pattern = args[1].data.u.regexp->pattern; + pattern = njs_regexp_pattern(&args[1]); end = r->part[0].start + r->part[0].size; replace = r->part[1]; @@ -3266,7 +3266,7 @@ njs_string_replace_regexp_continuation(njs_vm_t *vm, njs_value_t *args, if (njs_is_string(&r->retval)) { njs_string_replacement_copy(&r->part[r->empty ? 0 : 1], &r->retval); - if (args[1].data.u.regexp->pattern->global) { + if (njs_regexp_pattern(&args[1])->global) { r->part += 2; if (r->part[0].start > (string.start + string.size)) { diff --git a/njs/njs_value.h b/njs/njs_value.h index ca264716..e7025cbb 100644 --- a/njs/njs_value.h +++ b/njs/njs_value.h @@ -544,6 +544,14 @@ typedef enum { ((value)->data.u.date) +#define njs_regexp(value) \ + ((value)->data.u.regexp) + + +#define njs_regexp_pattern(value) \ + ((value)->data.u.regexp->pattern) + + #define njs_object_value(_value) \ (&(_value)->data.u.object_value->value) @@ -628,6 +636,15 @@ njs_set_date(njs_value_t *value, njs_date_t *date) } +nxt_inline void +njs_set_regexp(njs_value_t *value, njs_regexp_t *regexp) +{ + value->data.u.regexp = regexp; + value->type = NJS_REGEXP; + value->data.truth = 1; +} + + nxt_inline void njs_set_object_value(njs_value_t *value, njs_object_value_t *object_value) { diff --git a/njs/njs_vm.c b/njs/njs_vm.c index 264d96aa..85f1883c 100644 --- a/njs/njs_vm.c +++ b/njs/njs_vm.c @@ -354,9 +354,7 @@ njs_vmcode_regexp(njs_vm_t *vm, njs_value_t *invld1, njs_value_t *invld2) regexp = njs_regexp_alloc(vm, code->pattern); if (nxt_fast_path(regexp != NULL)) { - vm->retval.data.u.regexp = regexp; - vm->retval.type = NJS_REGEXP; - vm->retval.data.truth = 1; + njs_set_regexp(&vm->retval, regexp); return sizeof(njs_vmcode_regexp_t); }