]> git.kaiwu.me - njs.git/commitdiff
Added njs_set_int32() and njs_set_uint32() intrinsics.
authorDmitry Volyntsev <xeioex@nginx.com>
Fri, 19 Jul 2019 19:05:34 +0000 (22:05 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Fri, 19 Jul 2019 19:05:34 +0000 (22:05 +0300)
njs/njs_value.h
njs/njs_vm.c

index e9ef44fa368c1dd39d7bb3f6b862626b5088840b..cb5e1864425e248dff2a5f35b07741d7bfbe4d93 100644 (file)
@@ -620,6 +620,24 @@ njs_set_number(njs_value_t *value, double num)
 }
 
 
+nxt_inline void
+njs_set_int32(njs_value_t *value, int32_t num)
+{
+    value->data.u.number = num;
+    value->type = NJS_NUMBER;
+    value->data.truth = (num != 0);
+}
+
+
+nxt_inline void
+njs_set_uint32(njs_value_t *value, uint32_t num)
+{
+    value->data.u.number = num;
+    value->type = NJS_NUMBER;
+    value->data.truth = (num != 0);
+}
+
+
 nxt_inline void
 njs_set_data(njs_value_t *value, void *data)
 {
index a60df1c7e3c2e4740071abf342578251406e07dc..c47be87c63726f4766d4c08c58504eb85eccef67 100644 (file)
@@ -1375,7 +1375,7 @@ njs_vmcode_left_shift(njs_vm_t *vm, njs_value_t *val1, njs_value_t *val2)
 
     num1 = njs_number_to_int32(njs_number(val1));
     num2 = njs_number_to_uint32(njs_number(val2));
-    njs_set_number(&vm->retval, num1 << (num2 & 0x1f));
+    njs_set_int32(&vm->retval, num1 << (num2 & 0x1f));
 
     return sizeof(njs_vmcode_3addr_t);
 }
@@ -1409,7 +1409,7 @@ njs_vmcode_right_shift(njs_vm_t *vm, njs_value_t *val1, njs_value_t *val2)
 
     num1 = njs_number_to_int32(njs_number(val1));
     num2 = njs_number_to_uint32(njs_number(val2));
-    njs_set_number(&vm->retval, num1 >> (num2 & 0x1f));
+    njs_set_int32(&vm->retval, num1 >> (num2 & 0x1f));
 
     return sizeof(njs_vmcode_3addr_t);
 }
@@ -1443,7 +1443,7 @@ njs_vmcode_unsigned_right_shift(njs_vm_t *vm, njs_value_t *val1,
 
     num1 = njs_number_to_uint32(njs_number(val1));
     num2 = njs_number_to_uint32(njs_number(val2));
-    njs_set_number(&vm->retval, num1 >> (num2 & 0x1f));
+    njs_set_uint32(&vm->retval, num1 >> (num2 & 0x1f));
 
     return sizeof(njs_vmcode_3addr_t);
 }
@@ -1505,7 +1505,7 @@ njs_vmcode_bitwise_not(njs_vm_t *vm, njs_value_t *value, njs_value_t *invld)
         value = &numeric;
     }
 
-    njs_set_number(&vm->retval, ~njs_number_to_integer(njs_number(value)));
+    njs_set_int32(&vm->retval, ~njs_number_to_integer(njs_number(value)));
 
     return sizeof(njs_vmcode_2addr_t);
 }
@@ -1538,7 +1538,7 @@ njs_vmcode_bitwise_and(njs_vm_t *vm, njs_value_t *val1, njs_value_t *val2)
 
     num1 = njs_number_to_integer(njs_number(val1));
     num2 = njs_number_to_integer(njs_number(val2));
-    njs_set_number(&vm->retval, num1 & num2);
+    njs_set_int32(&vm->retval, num1 & num2);
 
     return sizeof(njs_vmcode_3addr_t);
 }
@@ -1571,7 +1571,7 @@ njs_vmcode_bitwise_xor(njs_vm_t *vm, njs_value_t *val1, njs_value_t *val2)
 
     num1 = njs_number_to_integer(njs_number(val1));
     num2 = njs_number_to_integer(njs_number(val2));
-    njs_set_number(&vm->retval, num1 ^ num2);
+    njs_set_int32(&vm->retval, num1 ^ num2);
 
     return sizeof(njs_vmcode_3addr_t);
 }
@@ -1604,7 +1604,7 @@ njs_vmcode_bitwise_or(njs_vm_t *vm, njs_value_t *val1, njs_value_t *val2)
 
     num1 = njs_number_to_integer(njs_number(val1));
     num2 = njs_number_to_integer(njs_number(val2));
-    njs_set_number(&vm->retval, num1 | num2);
+    njs_set_int32(&vm->retval, num1 | num2);
 
     return sizeof(njs_vmcode_3addr_t);
 }