From 89660e30b6fad4dd67cf07478e3498eae6f2100d Mon Sep 17 00:00:00 2001 From: Alex Coyte Date: Mon, 2 Nov 2015 13:35:04 +1100 Subject: [PATCH] raw_som_dfa: initialize members in constructor --- src/nfa/goughcompile.cpp | 2 +- src/nfa/goughcompile.h | 7 +++++-- src/nfagraph/ng_haig.cpp | 11 +++++------ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/nfa/goughcompile.cpp b/src/nfa/goughcompile.cpp index 92d09aa5..d2de7b95 100644 --- a/src/nfa/goughcompile.cpp +++ b/src/nfa/goughcompile.cpp @@ -1109,7 +1109,7 @@ aligned_unique_ptr goughCompile(raw_som_dfa &raw, u8 somPrecision, u32 total_prog_size = byte_length(temp_blocks); curr_offset += total_prog_size; - gi.stream_som_loc_count = slot_count; + gi.stream_som_loc_count = slot_count; gi.stream_som_loc_width = somPrecision; u32 gough_size = ROUNDUP_N(curr_offset, 16); diff --git a/src/nfa/goughcompile.h b/src/nfa/goughcompile.h index b575c75b..9da983d4 100644 --- a/src/nfa/goughcompile.h +++ b/src/nfa/goughcompile.h @@ -70,8 +70,11 @@ struct dstate_som { }; struct raw_som_dfa : public raw_dfa { - raw_som_dfa(nfa_kind k, bool unordered_som_triggers_in) - : raw_dfa(k), unordered_som_triggers(unordered_som_triggers_in) { + raw_som_dfa(nfa_kind k, bool unordered_som_triggers_in, u32 trigger, + u32 stream_som_loc_width_in) + : raw_dfa(k), stream_som_loc_width(stream_som_loc_width_in), + unordered_som_triggers(unordered_som_triggers_in), + trigger_nfa_state(trigger) { assert(!unordered_som_triggers || is_triggered(kind)); } diff --git a/src/nfagraph/ng_haig.cpp b/src/nfagraph/ng_haig.cpp index 78c615c9..d06083bd 100644 --- a/src/nfagraph/ng_haig.cpp +++ b/src/nfagraph/ng_haig.cpp @@ -609,7 +609,6 @@ bool doHaig(const NGHolder &g, } haig_note_starts(g, &rdfa->new_som_nfa_states); - rdfa->trigger_nfa_state = NODE_START; return true; } @@ -639,7 +638,8 @@ unique_ptr attemptToBuildHaig(NGHolder &g, som_type som, return nullptr; } - auto rdfa = ue2::make_unique(g.kind, unordered_som); + auto rdfa = ue2::make_unique(g.kind, unordered_som, NODE_START, + somPrecision); DEBUG_PRINTF("determinising nfa with %u vertices\n", numStates); bool rv; @@ -659,7 +659,6 @@ unique_ptr attemptToBuildHaig(NGHolder &g, som_type som, DEBUG_PRINTF("determinised, building impl dfa (a,f) = (%hu,%hu)\n", rdfa->start_anchored, rdfa->start_floating); - rdfa->stream_som_loc_width = somPrecision; assert(rdfa->kind == g.kind); return rdfa; @@ -783,7 +782,9 @@ unique_ptr attemptToMergeHaig(const vector &df typedef Automaton_Haig_Merge::StateSet StateSet; vector nfa_state_map; - auto rdfa = ue2::make_unique(dfas[0]->kind, unordered_som); + auto rdfa = ue2::make_unique(dfas[0]->kind, unordered_som, + NODE_START, + dfas[0]->stream_som_loc_width); int rv = determinise(n, rdfa->states, limit, &nfa_state_map); if (rv) { @@ -831,11 +832,9 @@ unique_ptr attemptToMergeHaig(const vector &df } haig_merge_note_starts(dfas, per_dfa_adj, &rdfa->new_som_nfa_states); - rdfa->trigger_nfa_state = NODE_START; DEBUG_PRINTF("merged, building impl dfa (a,f) = (%hu,%hu)\n", rdfa->start_anchored, rdfa->start_floating); - rdfa->stream_som_loc_width = dfas[0]->stream_som_loc_width; return rdfa; }