From e8208b2f34ffe9c8896ec06a35bf0178c73ea1bf Mon Sep 17 00:00:00 2001 From: Redo Date: Fri, 4 Nov 2022 18:35:15 -0600 Subject: [PATCH] use c structs around queues --- sim/group.lua | 6 ++---- sim/simulation.lua | 14 +++++++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/sim/group.lua b/sim/group.lua index 0d3e8ed..8b682d6 100644 --- a/sim/group.lua +++ b/sim/group.lua @@ -212,8 +212,7 @@ function Group.mergeinto(group, group2) end -- Logic Critical -function Group.update(net, tick) - local cnet = net.c +function Group.update_c(cnet, tick) local state = cnet.state_num[0]>0 and 1 or 0 if state ~= cnet.state[0] then cnet.state[0] = state @@ -223,8 +222,7 @@ function Group.update(net, tick) for i = 0, len do local cgate = cnet.gates_update_c[i] if cgate.in_queue[0]==0 then - local gate = Simulation.gate_from_cgate(GSim, cgate) - Simulation.queuegate(GSim, gate) + Simulation.queuegate_c(GSim, cgate) end end diff --git a/sim/simulation.lua b/sim/simulation.lua index c6a8a70..db9d6cc 100644 --- a/sim/simulation.lua +++ b/sim/simulation.lua @@ -252,6 +252,11 @@ function Simulation.queuegate(sim, gate) gate.in_queue[0] = 1 end +function Simulation.queuegate_c(sim, cgate) + local gate = Simulation.gate_from_cgate(cgate) + Simulation.queuegate(sim, gate) +end + function Simulation.queuegate_safe(sim, gate) if gate.in_queue[0]==0 then Simulation.queuegate(sim, gate) @@ -326,8 +331,9 @@ end function Simulation.ticklogic(sim) for i = 1, sim.num_groupqueue do local net = sim.groupqueue[i] - Group.update(net, sim.current_tick) - net.in_queue[0] = 0 + local cnet = net.c + Group.update_c(cnet, sim.current_tick) + cnet.in_queue[0] = 0 sim.groupqueue[i] = nil end sim.num_groupqueue = 0 @@ -343,8 +349,10 @@ function Simulation.ticklogic(sim) for i = 1, sim.num_gatequeue do local gate = sim.gatequeue[i] + local cgate = gate.c + gate = Simulation.gate_from_cgate(sim, cgate) gate.logic(gate) - gate.in_queue[0] = 0 + cgate.in_queue[0] = 0 sim.gatequeue[i] = nil end sim.num_gatequeue = 0