Don't rebalance bits for itheta=0 or 16384
[opus.git] / libcelt / stack_alloc.h
index 2405cf2..62a00b5 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (C) 2002 Jean-Marc Valin */
+/* Copyright (C) 2002-2003 Jean-Marc Valin
+   Copyright (C) 2007-2009 Xiph.Org Foundation */
 /**
    @file stack_alloc.h
    @brief Temporary memory allocation on stack
 #elif defined(USE_ALLOCA)
 
 #define VARDECL(type, var) type *var
-#define ALLOC(var, size, type) var = ((type*)alloca(sizeof(type)*(size)))
+
+# ifdef WIN32
+#  define ALLOC(var, size, type) var = ((type*)_alloca(sizeof(type)*(size)))
+# else
+#  define ALLOC(var, size, type) var = ((type*)alloca(sizeof(type)*(size)))
+# endif
+
 #define SAVE_STACK
 #define RESTORE_STACK
 #define ALLOC_STACK
@@ -126,7 +133,6 @@ extern char *global_stack_top;
 
 #else 
 
-/* FIXME: Only align up to a certain size (not for structs) */
 #define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
 #define PUSH(stack, size, type) (ALIGN((stack),sizeof(type)/sizeof(char)),(stack)+=(size)*(sizeof(type)/sizeof(char)),(type*)((stack)-(size)*(sizeof(type)/sizeof(char))))
 #define RESTORE_STACK (global_stack = _saved_stack)