]> git.kaiwu.me - njs.git/commitdiff
A whole native frame is zeroed.
authorIgor Sysoev <igor@sysoev.ru>
Mon, 8 Feb 2016 15:18:09 +0000 (18:18 +0300)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 8 Feb 2016 15:18:09 +0000 (18:18 +0300)
njs/njs_function.c
njs/njscript.c

index 6e84a90925468275f6fc9dba685e250486267029..72aa5bfa786ea6baa4f9f675d9754565870bcf51 100644 (file)
@@ -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;
 
index 5a7b43572826b4ab1e3d86ee91084a349c951edb..15a7b5bac9ff629157f940702e35263ce78d553d 100644 (file)
@@ -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,