]> git.kaiwu.me - njs.git/commitdiff
Using njs_set_regexp() and njs_regexp() where approprite.
authorDmitry Volyntsev <xeioex@nginx.com>
Mon, 8 Jul 2019 14:51:58 +0000 (17:51 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Mon, 8 Jul 2019 14:51:58 +0000 (17:51 +0300)
njs/njs_regexp.c
njs/njs_string.c
njs/njs_value.h
njs/njs_vm.c

index d25a914b129a46b439c77c74c8e1f0d4fcdc2b50..0ea4321dbce06910e942e014ea99b843134b9cbe 100644 (file)
@@ -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, &regexp->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);
index 30c1128eef2c2de9302037dc9da5bb465c82f813..644031c36073be26a8c7ba9677d509822cc101be 100644 (file)
@@ -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)) {
index ca264716319aa4a8397f98c30675a4aef74b5460..e7025cbbe16c08bf57a9b883694eff89ad030f94 100644 (file)
@@ -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)
 {
index 264d96aa11e743276737b08265a9bfc37db3c0de..85f1883c6840c18e9db81d0d60a68fce1a3bf43d 100644 (file)
@@ -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);
     }