]> git.kaiwu.me - njs.git/commitdiff
Slight improvements to njs_vmcode_interpreter().
authorValentin Bartenev <vbart@nginx.com>
Sun, 28 Jul 2019 12:00:40 +0000 (15:00 +0300)
committerValentin Bartenev <vbart@nginx.com>
Sun, 28 Jul 2019 12:00:40 +0000 (15:00 +0300)
No functional changes.

njs/njs_vmcode.c

index 103364ca0e7a32c18b5b26f5d19715b78a60ef8f..fae0ca7fa094f3138578cbf4d468754c15d5d652 100644 (file)
@@ -379,13 +379,7 @@ next:
                                           || (!isnan(exponent)
                                               && !isinf(exponent)));
 
-                    if (valid) {
-                        num = pow(num, exponent);
-
-                    } else {
-                        num = NAN;
-                    }
-
+                    num = valid ? pow(num, exponent) : NAN;
                     break;
 
                 case NJS_VMCODE_DIVISION:
@@ -399,19 +393,19 @@ next:
                 case NJS_VMCODE_BITWISE_AND:
                 case NJS_VMCODE_BITWISE_OR:
                 case NJS_VMCODE_BITWISE_XOR:
-                    i32 = njs_number_to_int32(num);
+                    i32 = njs_number_to_int32(njs_number(value2));
 
                     switch (op) {
                     case NJS_VMCODE_BITWISE_AND:
-                        i32 = i32 & njs_number_to_int32(njs_number(value2));
+                        i32 &= njs_number_to_int32(num);
                         break;
 
                     case NJS_VMCODE_BITWISE_OR:
-                        i32 = i32 | njs_number_to_int32(njs_number(value2));
+                        i32 |= njs_number_to_int32(num);
                         break;
 
                     case NJS_VMCODE_BITWISE_XOR:
-                        i32 = i32 ^ njs_number_to_int32(njs_number(value2));
+                        i32 ^= njs_number_to_int32(num);
                         break;
                     }
 
@@ -419,7 +413,7 @@ next:
                     goto next;
 
                 default:
-                    u32 = njs_number_to_uint32(njs_number(value2));
+                    u32 = njs_number_to_uint32(njs_number(value2)) & 0x1f;
 
                     switch (op) {
                     case NJS_VMCODE_LEFT_SHIFT:
@@ -427,19 +421,17 @@ next:
                         i32 = njs_number_to_int32(num);
 
                         if (op == NJS_VMCODE_LEFT_SHIFT) {
-                            i32 <<= u32 & 0x1f;
+                            i32 <<= u32;
                         } else {
-                            i32 >>= u32 & 0x1f;
+                            i32 >>= u32;
                         }
 
                         njs_set_int32(retval, i32);
-
                         break;
 
                     default: /* NJS_VMCODE_UNSIGNED_RIGHT_SHIFT */
                         njs_set_uint32(retval,
-                                       njs_number_to_uint32(num)
-                                       >> (u32 & 0x1f));
+                                       njs_number_to_uint32(num) >> u32);
                     }
 
                     goto next;