-/*\r
- +----------------------------------------------------------------------+\r
- | Zend OPcache JIT |\r
- +----------------------------------------------------------------------+\r
- | Copyright (c) 1998-2014 The PHP Group |\r
- +----------------------------------------------------------------------+\r
- | This source file is subject to version 3.01 of the PHP license, |\r
- | that is bundled with this package in the file LICENSE, and is |\r
- | available through the world-wide-web at the following url: |\r
- | http://www.php.net/license/3_01.txt |\r
- | If you did not receive a copy of the PHP license and are unable to |\r
- | obtain it through the world-wide-web, please send a note to |\r
- | license@php.net so we can mail you a copy immediately. |\r
- +----------------------------------------------------------------------+\r
- | Authors: Andy Wingo <wingo@igalia.com> |\r
- +----------------------------------------------------------------------+\r
-*/\r
-\r
-/* $Id:$ */\r
-\r
-#ifndef _ZEND_WORKLIST_H_\r
-#define _ZEND_WORKLIST_H_\r
-\r
-#include "zend_arena.h"\r
-#include "zend_bitset.h"\r
-\r
-typedef struct _zend_worklist_stack {\r
- int *buf;\r
- int len;\r
- int capacity;\r
-} zend_worklist_stack;\r
-\r
-#define ZEND_WORKLIST_STACK_ALLOCA(s, _len) do { \\r
- (s)->buf = (int*)alloca(sizeof(int) * _len); \\r
- (s)->len = 0; \\r
- (s)->capacity = _len; \\r
- } while (0)\r
-\r
-static inline int zend_worklist_stack_prepare(zend_arena **arena, zend_worklist_stack *stack, int len)\r
-{\r
- ZEND_ASSERT(len >= 0);\r
-\r
- stack->buf = (int*)zend_arena_calloc(arena, sizeof(*stack->buf), len);\r
- if (!stack->buf) {\r
- return FAILURE;\r
- }\r
- stack->len = 0;\r
- stack->capacity = len;\r
-\r
- return SUCCESS;\r
-}\r
-\r
-static inline void zend_worklist_stack_push(zend_worklist_stack *stack, int i)\r
-{\r
- ZEND_ASSERT(stack->len < stack->capacity);\r
- stack->buf[stack->len++] = i;\r
-}\r
-\r
-static inline int zend_worklist_stack_peek(zend_worklist_stack *stack)\r
-{\r
- ZEND_ASSERT(stack->len);\r
- return stack->buf[stack->len - 1];\r
-}\r
-\r
-static inline int zend_worklist_stack_pop(zend_worklist_stack *stack)\r
-{\r
- ZEND_ASSERT(stack->len);\r
- return stack->buf[--stack->len];\r
-}\r
-\r
-typedef struct _zend_worklist {\r
- zend_bitset visited;\r
- zend_worklist_stack stack;\r
-} zend_worklist;\r
-\r
-#define ZEND_WORKLIST_ALLOCA(w, _len) do { \\r
- (w)->visited = (zend_bitset)alloca(sizeof(zend_ulong) * zend_bitset_len(_len)); \\r
- memset((w)->visited, 0, sizeof(zend_ulong) * zend_bitset_len(_len)); \\r
- ZEND_WORKLIST_STACK_ALLOCA(&(w)->stack, _len); \\r
- } while (0)\r
-\r
-static inline int zend_worklist_prepare(zend_arena **arena, zend_worklist *worklist, int len)\r
-{\r
- ZEND_ASSERT(len >= 0);\r
- worklist->visited = (zend_bitset)zend_arena_calloc(arena, sizeof(zend_ulong), zend_bitset_len(len));\r
- if (!worklist->visited) {\r
- return FAILURE;\r
- }\r
- return zend_worklist_stack_prepare(arena, &worklist->stack, len);\r
-}\r
-\r
-static inline int zend_worklist_len(zend_worklist *worklist)\r
-{\r
- return worklist->stack.len;\r
-}\r
-\r
-static inline int zend_worklist_push(zend_worklist *worklist, int i)\r
-{\r
- ZEND_ASSERT(i >= 0 && i < worklist->stack.capacity);\r
-\r
- if (zend_bitset_in(worklist->visited, i)) {\r
- return 0;\r
- }\r
-\r
- zend_bitset_incl(worklist->visited, i);\r
- zend_worklist_stack_push(&worklist->stack, i);\r
- return 1;\r
-}\r
-\r
-static inline int zend_worklist_peek(zend_worklist *worklist)\r
-{\r
- return zend_worklist_stack_peek(&worklist->stack);\r
-}\r
-\r
-static inline int zend_worklist_pop(zend_worklist *worklist)\r
-{\r
- /* Does not clear visited flag */\r
- return zend_worklist_stack_pop(&worklist->stack);\r
-}\r
-\r
-#endif /* _ZEND_WORKLIST_H_ */\r
-\r
-/*\r
- * Local variables:\r
- * tab-width: 4\r
- * c-basic-offset: 4\r
- * indent-tabs-mode: t\r
- * End:\r
- */\r
+/*
+ +----------------------------------------------------------------------+
+ | Zend OPcache JIT |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1998-2014 The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 3.01 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+ | http://www.php.net/license/3_01.txt |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Authors: Andy Wingo <wingo@igalia.com> |
+ +----------------------------------------------------------------------+
+*/
+
+/* $Id:$ */
+
+#ifndef _ZEND_WORKLIST_H_
+#define _ZEND_WORKLIST_H_
+
+#include "zend_arena.h"
+#include "zend_bitset.h"
+
+typedef struct _zend_worklist_stack {
+ int *buf;
+ int len;
+ int capacity;
+} zend_worklist_stack;
+
+#define ZEND_WORKLIST_STACK_ALLOCA(s, _len) do { \
+ (s)->buf = (int*)alloca(sizeof(int) * _len); \
+ (s)->len = 0; \
+ (s)->capacity = _len; \
+ } while (0)
+
+static inline int zend_worklist_stack_prepare(zend_arena **arena, zend_worklist_stack *stack, int len)
+{
+ ZEND_ASSERT(len >= 0);
+
+ stack->buf = (int*)zend_arena_calloc(arena, sizeof(*stack->buf), len);
+ if (!stack->buf) {
+ return FAILURE;
+ }
+ stack->len = 0;
+ stack->capacity = len;
+
+ return SUCCESS;
+}
+
+static inline void zend_worklist_stack_push(zend_worklist_stack *stack, int i)
+{
+ ZEND_ASSERT(stack->len < stack->capacity);
+ stack->buf[stack->len++] = i;
+}
+
+static inline int zend_worklist_stack_peek(zend_worklist_stack *stack)
+{
+ ZEND_ASSERT(stack->len);
+ return stack->buf[stack->len - 1];
+}
+
+static inline int zend_worklist_stack_pop(zend_worklist_stack *stack)
+{
+ ZEND_ASSERT(stack->len);
+ return stack->buf[--stack->len];
+}
+
+typedef struct _zend_worklist {
+ zend_bitset visited;
+ zend_worklist_stack stack;
+} zend_worklist;
+
+#define ZEND_WORKLIST_ALLOCA(w, _len) do { \
+ (w)->visited = (zend_bitset)alloca(sizeof(zend_ulong) * zend_bitset_len(_len)); \
+ memset((w)->visited, 0, sizeof(zend_ulong) * zend_bitset_len(_len)); \
+ ZEND_WORKLIST_STACK_ALLOCA(&(w)->stack, _len); \
+ } while (0)
+
+static inline int zend_worklist_prepare(zend_arena **arena, zend_worklist *worklist, int len)
+{
+ ZEND_ASSERT(len >= 0);
+ worklist->visited = (zend_bitset)zend_arena_calloc(arena, sizeof(zend_ulong), zend_bitset_len(len));
+ if (!worklist->visited) {
+ return FAILURE;
+ }
+ return zend_worklist_stack_prepare(arena, &worklist->stack, len);
+}
+
+static inline int zend_worklist_len(zend_worklist *worklist)
+{
+ return worklist->stack.len;
+}
+
+static inline int zend_worklist_push(zend_worklist *worklist, int i)
+{
+ ZEND_ASSERT(i >= 0 && i < worklist->stack.capacity);
+
+ if (zend_bitset_in(worklist->visited, i)) {
+ return 0;
+ }
+
+ zend_bitset_incl(worklist->visited, i);
+ zend_worklist_stack_push(&worklist->stack, i);
+ return 1;
+}
+
+static inline int zend_worklist_peek(zend_worklist *worklist)
+{
+ return zend_worklist_stack_peek(&worklist->stack);
+}
+
+static inline int zend_worklist_pop(zend_worklist *worklist)
+{
+ /* Does not clear visited flag */
+ return zend_worklist_stack_pop(&worklist->stack);
+}
+
+#endif /* _ZEND_WORKLIST_H_ */
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * indent-tabs-mode: t
+ * End:
+ */