From 04daf524016d2ec070a3dd47076056233a8eb77f Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Mon, 8 Feb 2016 18:18:09 +0300 Subject: [PATCH] A whole native frame is zeroed. --- njs/njs_function.c | 21 ++++++--------------- njs/njscript.c | 22 ++++------------------ 2 files changed, 10 insertions(+), 33 deletions(-) diff --git a/njs/njs_function.c b/njs/njs_function.c index 6e84a909..72aa5bfa 100644 --- a/njs/njs_function.c +++ b/njs/njs_function.c @@ -73,14 +73,14 @@ nxt_noinline njs_native_frame_t * njs_function_frame_alloc(njs_vm_t *vm, size_t size) { size_t spare_size; + uint8_t first; njs_native_frame_t *frame; spare_size = vm->frame->free_size; if (nxt_fast_path(size <= spare_size)) { frame = (njs_native_frame_t *) vm->frame->free; - frame->first = 0; - frame->skip = 0; + first = 0; } else { spare_size = size + NJS_FRAME_SPARE_SIZE; @@ -92,24 +92,15 @@ njs_function_frame_alloc(njs_vm_t *vm, size_t size) return NULL; } - frame->first = 1; - frame->skip = 0; + first = 1; } + memset(frame, 0, sizeof(njs_native_frame_t)); + + frame->first = first; frame->free_size = spare_size - size; frame->free = (u_char *) frame + size; - frame->continuation = NULL; - frame->trap_restart = NULL; - frame->ctor = 0; - frame->reentrant = 0; - frame->trap_frame = 0; - frame->trap_tries = 0; - frame->trap_reference = 0; - - frame->exception.next = NULL; - frame->exception.catch = NULL; - frame->previous = vm->frame; vm->frame = frame; diff --git a/njs/njscript.c b/njs/njscript.c index 5a7b4357..15a7b5ba 100644 --- a/njs/njscript.c +++ b/njs/njscript.c @@ -279,35 +279,21 @@ njs_vm_clone(njs_vm_t *vm, nxt_mem_cache_pool_t *mcp, void **external) size = NJS_GLOBAL_FRAME_SIZE + scope_size + NJS_FRAME_SPARE_SIZE; size = nxt_align_size(size, NJS_FRAME_SPARE_SIZE); - frame = nxt_mem_cache_zalign(nmcp, sizeof(njs_value_t), size); + frame = nxt_mem_cache_align(nmcp, sizeof(njs_value_t), size); if (nxt_slow_path(frame == NULL)) { goto fail; } - nvm->frame = &frame->native; - - frame->native.trap_restart = NULL; - frame->native.continuation = NULL; - frame->native.previous = NULL; - frame->native.arguments = NULL; - frame->native.first = 1; - frame->native.skip = 0; - frame->native.reentrant = 0; - frame->native.trap_frame = 0; - frame->native.trap_tries = 0; + memset(frame, 0, NJS_GLOBAL_FRAME_SIZE); - frame->native.exception.next = NULL; - frame->native.exception.catch = NULL; - - frame->prev_arguments = NULL; - frame->local = NULL; - frame->closure = NULL; + nvm->frame = &frame->native; frame->native.free_size = size - (NJS_GLOBAL_FRAME_SIZE + scope_size); values = (u_char *) frame + NJS_GLOBAL_FRAME_SIZE; frame->native.free = values + scope_size; + frame->native.first = 1; nvm->scopes[NJS_SCOPE_GLOBAL] = (njs_value_t *) values; memcpy(values + NJS_INDEX_GLOBAL_OFFSET, vm->global_scope, -- 2.47.3