#define njs_base64_decoded_length(len, pad) (((len / 4) * 3) - pad)
-njs_int_t
-njs_string_set(njs_vm_t *vm, njs_value_t *value, const u_char *start,
- uint32_t size)
-{
- u_char *dst;
- const u_char *src;
- njs_string_t *string;
-
- value->type = NJS_STRING;
- njs_string_truth(value, size);
-
- if (size <= NJS_STRING_SHORT) {
- value->short_string.size = size;
- value->short_string.length = 0;
-
- dst = value->short_string.start;
- src = start;
-
- while (size != 0) {
- /* The maximum size is just 14 bytes. */
- njs_pragma_loop_disable_vectorization;
-
- *dst++ = *src++;
- size--;
- }
-
- } else {
- /*
- * Setting UTF-8 length is not required here, it just allows
- * to store the constant in whole byte instead of bit twiddling.
- */
- value->short_string.size = NJS_STRING_LONG;
- value->short_string.length = 0;
- value->long_string.external = 0xff;
- value->long_string.size = size;
-
- string = njs_mp_alloc(vm->mem_pool, sizeof(njs_string_t));
- if (njs_slow_path(string == NULL)) {
- njs_memory_error(vm);
- return NJS_ERROR;
- }
-
- value->long_string.data = string;
-
- string->start = (u_char *) start;
- string->length = 0;
- }
-
- return NJS_OK;
-}
-
-
njs_int_t
njs_string_create(njs_vm_t *vm, njs_value_t *value, const u_char *src,
size_t size)
} njs_trim_t;
-/* njs_string_set() Is deprecated. */
-njs_int_t njs_string_set(njs_vm_t *vm, njs_value_t *value, const u_char *start,
- uint32_t size);
u_char *njs_string_alloc(njs_vm_t *vm, njs_value_t *value, uint64_t size,
uint64_t length);
njs_int_t njs_string_new(njs_vm_t *vm, njs_value_t *value, const u_char *start,
njs_str("4"),
100000 },
- { "string set 'abcdefABCDEF'",
- njs_str("benchmark.string('set', 'abcdef', 1000000)"),
- njs_str("undefined"),
- 1 },
-
- { "string set 'АБВГДЕ'",
- njs_str("benchmark.string('set', 'АБВГДЕ', 1000000)"),
- njs_str("undefined"),
- 1 },
-
- { "string set 'x'.repeat(24)",
- njs_str("benchmark.string('set', 'x'.repeat(32), 1000000)"),
- njs_str("undefined"),
- 1 },
-
- { "string set 'Д'.repeat(12)",
- njs_str("benchmark.string('set', 'А'.repeat(16), 1000000)"),
- njs_str("undefined"),
- 1 },
-
{ "string create 'abcdefABCDEF'",
njs_str("benchmark.string('create', 'abcdef', 1000000)"),
njs_str("undefined"),
return NJS_ERROR;
}
- if (memcmp(mode.start, "set", 3) == 0) {
- for (i = 0; i < n; i++) {
- njs_string_set(vm, &value, s.start, s.length);
- }
-
- } else if (memcmp(mode.start, "create", 6) == 0) {
+ if (memcmp(mode.start, "create", 6) == 0) {
for (i = 0; i < n; i++) {
njs_string_create(vm, &value, s.start, s.length);