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.
This commit is contained in:
Justin Viiret 2016-01-14 16:55:39 +11:00 committed by Matthew Barr
parent 435b08b984
commit 9eb328b455
2 changed files with 8 additions and 11 deletions

View File

@ -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);

View File

@ -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 */