From 9eb328b455bfe0cc0bdf5e577fcc38213c54f45f Mon Sep 17 00:00:00 2001 From: Justin Viiret Date: Thu, 14 Jan 2016 16:55:39 +1100 Subject: [PATCH] RoseRuntimeState no longer needs to be packed This structure only contains u8 values now. In the future we may wish to eliminate it entirely and store the few bits we need more directly. --- src/rose/rose_build_bytecode.cpp | 11 ++++++++--- src/rose/rose_internal.h | 8 -------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/rose/rose_build_bytecode.cpp b/src/rose/rose_build_bytecode.cpp index c640f091..a042eb2c 100644 --- a/src/rose/rose_build_bytecode.cpp +++ b/src/rose/rose_build_bytecode.cpp @@ -513,9 +513,14 @@ void fillStateOffsets(const RoseBuildImpl &tbi, u32 rolesWithStateCount, u32 activeLeftCount, u32 laggedRoseCount, u32 floatingStreamStateRequired, u32 historyRequired, RoseStateOffsets *so) { - /* runtime state (including role state) first and needs to be u32-aligned */ - u32 curr_offset = sizeof(RoseRuntimeState) - + mmbit_size(rolesWithStateCount); + u32 curr_offset = 0; + + // First, runtime state (stores per-stream state, like whether we need a + // delay rebuild or have been told to halt matching.) + curr_offset += sizeof(RoseRuntimeState); + + // Role state storage. + curr_offset += mmbit_size(rolesWithStateCount); so->activeLeafArray = curr_offset; /* TODO: limit size of array */ curr_offset += mmbit_size(activeArrayCount); diff --git a/src/rose/rose_internal.h b/src/rose/rose_internal.h index a1f91cd3..326887da 100644 --- a/src/rose/rose_internal.h +++ b/src/rose/rose_internal.h @@ -476,19 +476,11 @@ struct RoseEngine { struct scatter_full_plan state_init; }; -#if defined(_WIN32) -#pragma pack(push, 1) -#endif // Rose runtime state struct RoseRuntimeState { u8 flags; /* high bit true if delay rebuild needed */ u8 broken; /* user has requested that we stop matching */ -#if defined(_WIN32) }; -#pragma pack(pop) -#else -} __attribute__((packed)); -#endif struct ALIGN_CL_DIRECTIVE anchored_matcher_info { u32 next_offset; /* relative to this, 0 for end */