nxt_noinline njs_object_t * njs_object_alloc(njs_vm_t *vm) { njs_object_t *object; object = nxt_mem_cache_alloc(vm->mem_cache_pool, sizeof(njs_object_t)); if (nxt_fast_path(object != NULL)) { nxt_lvlhsh_init(&object->hash); nxt_lvlhsh_init(&object->shared_hash); object->__proto__ = &vm->prototypes[NJS_PROTOTYPE_OBJECT]; } return object; }
njs_regexp_t * njs_regexp_alloc(njs_vm_t *vm, njs_regexp_pattern_t *pattern) { njs_regexp_t *regexp; regexp = nxt_mem_cache_alloc(vm->mem_cache_pool, sizeof(njs_regexp_t)); if (nxt_fast_path(regexp != NULL)) { nxt_lvlhsh_init(®exp->object.hash); nxt_lvlhsh_init(®exp->object.shared_hash); regexp->object.__proto__ = &vm->prototypes[NJS_PROTOTYPE_REGEXP]; regexp->object.shared = 0; regexp->last_index = 0; regexp->pattern = pattern; } return regexp; }
nxt_noinline njs_object_t * njs_object_value_alloc(njs_vm_t *vm, const njs_value_t *value, nxt_uint_t type) { nxt_uint_t index; njs_object_value_t *ov; ov = nxt_mem_cache_alloc(vm->mem_cache_pool, sizeof(njs_object_value_t)); if (nxt_fast_path(ov != NULL)) { nxt_lvlhsh_init(&ov->object.hash); nxt_lvlhsh_init(&ov->object.shared_hash); index = njs_primitive_prototype_index(type); ov->object.__proto__ = &vm->prototypes[index]; ov->value = *value; } return &ov->object; }
static void * njs_regexp_malloc(size_t size, void *memory_data) { return nxt_mem_cache_alloc(memory_data, size); }