jdk/src/jdk.hprof.agent/share/native/libhprof/hprof_stack.c
changeset 32249 ba2c9c7773b6
parent 32248 13967da712ff
parent 32247 9f3dd33507b9
child 32253 637b00638ed6
--- a/jdk/src/jdk.hprof.agent/share/native/libhprof/hprof_stack.c	Thu Aug 20 11:38:20 2015 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   - Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *
- *   - Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- *   - Neither the name of Oracle nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * This source code is provided to illustrate the usage of a given feature
- * or technique and has been deliberately simplified. Additional steps
- * required for a production-quality application, such as security checks,
- * input validation and proper error handling, might not be present in
- * this sample code.
- */
-
-
-/* Simple stack storage mechanism (or simple List). */
-
-/*
- * Stack is any depth (grows as it needs to), elements are arbitrary
- *   length but known at stack init time.
- *
- * Stack elements can be accessed via pointers (be careful, if stack
- *   moved while you point into stack you have problems)
- *
- * Pointers to stack elements passed in are copied.
- *
- * Since the stack can be inspected, it can be used for more than just
- *    a simple stack.
- *
- */
-
-#include "hprof.h"
-
-static void
-resize(Stack *stack)
-{
-    void  *old_elements;
-    void  *new_elements;
-    int    old_size;
-    int    new_size;
-
-    HPROF_ASSERT(stack!=NULL);
-    HPROF_ASSERT(stack->elements!=NULL);
-    HPROF_ASSERT(stack->size>0);
-    HPROF_ASSERT(stack->elem_size>0);
-    HPROF_ASSERT(stack->incr_size>0);
-    old_size     = stack->size;
-    old_elements = stack->elements;
-    if ( (stack->resizes % 10) && stack->incr_size < (old_size >> 2) ) {
-        stack->incr_size = old_size >> 2; /* 1/4 the old_size */
-    }
-    new_size = old_size + stack->incr_size;
-    new_elements = HPROF_MALLOC(new_size*stack->elem_size);
-    (void)memcpy(new_elements, old_elements, old_size*stack->elem_size);
-    stack->size     = new_size;
-    stack->elements = new_elements;
-    HPROF_FREE(old_elements);
-    stack->resizes++;
-}
-
-Stack *
-stack_init(int init_size, int incr_size, int elem_size)
-{
-    Stack *stack;
-    void  *elements;
-
-    HPROF_ASSERT(init_size>0);
-    HPROF_ASSERT(elem_size>0);
-    HPROF_ASSERT(incr_size>0);
-    stack            = (Stack*)HPROF_MALLOC((int)sizeof(Stack));
-    elements         = HPROF_MALLOC(init_size*elem_size);
-    stack->size      = init_size;
-    stack->incr_size = incr_size;
-    stack->elem_size = elem_size;
-    stack->count       = 0;
-    stack->elements  = elements;
-    stack->resizes   = 0;
-    return stack;
-}
-
-void *
-stack_element(Stack *stack, int i)
-{
-    HPROF_ASSERT(stack!=NULL);
-    HPROF_ASSERT(stack->elements!=NULL);
-    HPROF_ASSERT(stack->count>i);
-    HPROF_ASSERT(i>=0);
-    return (void*)(((char*)stack->elements) + i * stack->elem_size);
-}
-
-void *
-stack_top(Stack *stack)
-{
-    void *element;
-
-    HPROF_ASSERT(stack!=NULL);
-    element = NULL;
-    if ( stack->count > 0 ) {
-        element = stack_element(stack, (stack->count-1));
-    }
-    return element;
-}
-
-int
-stack_depth(Stack *stack)
-{
-    HPROF_ASSERT(stack!=NULL);
-    return stack->count;
-}
-
-void *
-stack_pop(Stack *stack)
-{
-    void *element;
-
-    element = stack_top(stack);
-    if ( element != NULL ) {
-        stack->count--;
-    }
-    return element;
-}
-
-void
-stack_push(Stack *stack, void *element)
-{
-    void *top_element;
-
-    HPROF_ASSERT(stack!=NULL);
-    if ( stack->count >= stack->size ) {
-        resize(stack);
-    }
-    stack->count++;
-    top_element = stack_top(stack);
-    (void)memcpy(top_element, element, stack->elem_size);
-}
-
-void
-stack_term(Stack *stack)
-{
-    HPROF_ASSERT(stack!=NULL);
-    if ( stack->elements != NULL ) {
-        HPROF_FREE(stack->elements);
-    }
-    HPROF_FREE(stack);
-}