closure_t &closure = ctx.dc_closure;
const size_t nclos = closure.size();
- prectable_t *prectbl = ctx.dc_allocator.alloct<prectable_t>(nclos * nclos);
+ prectable_t *prectbl = ctx.dc_prectbl;
static const int32_t P0 = pack(MAX_RHO, 0);
for (size_t i = 0; i < nclos; ++i) {
}
prectbl[i * nclos + i] = P0;
}
-
- ctx.dc_prectbl = prectbl;
}
} // namespace re2c
, dc_actions(NULL)
, dc_reached()
, dc_closure()
- , dc_prectbl(NULL)
+ , dc_prectbl()
, dc_tagvertbl(nfa.tags.size())
, dc_taghistory()
, dc_kernels()
, dc_dump(opts)
, dc_clstats()
{
- const size_t nstates = nfa.size, ntags = nfa.tags.size();
+ const size_t nstates = nfa.size;
+ const size_t ncores = nfa.ncores;
+ const size_t ntags = nfa.tags.size();
dc_hc_caches.resize(ntags);
dc_path1.reserve(ntags);
dc_path3.reserve(ntags);
dc_tagcount.resize(ntags);
- if (opts->posix_closure) {
+ if (opts->posix_semantics) {
+ dc_prectbl = new prectable_t[ncores * ncores];
+ }
+
+ if (opts->posix_closure == POSIX_CLOSURE_GTOP) {
dc_gtop_buffer.reserve(nstates);
}
else {
}
+determ_context_t::~determ_context_t()
+{
+ delete[] dc_prectbl;
+}
+
+
dfa_t::~dfa_t()
{
std::vector<dfa_state_t*>::iterator
closure_stats_t dc_clstats;
determ_context_t(const opt_t *, Msg &, const std::string &, const nfa_t &, dfa_t &);
+ ~determ_context_t();
FORBID_COPY(determ_context_t);
};