From: Dmitry Volyntsev Date: Fri, 19 Jul 2019 19:05:34 +0000 (+0300) Subject: Added njs_set_int32() and njs_set_uint32() intrinsics. X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/static/gitweb.js?a=commitdiff_plain;h=4c8cd5ba14aee2024d19934f778a01e46202d1c3;p=njs.git Added njs_set_int32() and njs_set_uint32() intrinsics. --- diff --git a/njs/njs_value.h b/njs/njs_value.h index e9ef44fa..cb5e1864 100644 --- a/njs/njs_value.h +++ b/njs/njs_value.h @@ -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) { diff --git a/njs/njs_vm.c b/njs/njs_vm.c index a60df1c7..c47be87c 100644 --- a/njs/njs_vm.c +++ b/njs/njs_vm.c @@ -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); }