Lines Matching defs:gate
59 for (auto gate : loopInfo_->loopBodys) {
60 if ((gate == loopInfo_->loopHead) ||
61 (acc_.IsSelector(gate) && acc_.GetState(gate) == loopInfo_->loopHead)) {
64 GateRef copy = GetCopy(gate);
65 size_t numIns = acc_.GetNumIns(gate);
67 GateRef in = acc_.GetIn(gate, i);
138 for (auto gate : loopInfo_->loopBodys) {
139 SetCopy(gate);
141 for (auto gate : loopInfo_->loopBacks) {
142 copies_[gate] = GetCopy(acc_.GetState(gate));
151 for (auto gate : asyncList) {
152 auto copyAsync = TryGetCopy(gate);
157 for (auto gate : asyncList) {
158 bcBuilder_->UpdateAsyncRelatedGate(gate);
165 void LoopPeeling::SetCopy(GateRef gate)
167 ASSERT(copies_.count(gate) == 0);
168 if (gate == loopInfo_->loopHead) {
170 copies_[gate] = acc_.GetState(gate);
173 if (acc_.IsSelector(gate) && acc_.GetState(gate) == loopInfo_->loopHead) {
175 copies_[gate] = acc_.GetIn(gate, 1); // 1: index of forward
179 std::vector<GateRef> inList(acc_.GetNumIns(gate), Circuit::NullGate());
180 GateRef newGate = circuit_->NewGate(acc_.GetMetaData(gate), inList);
181 acc_.SetGateType(newGate, acc_.GetGateType(gate));
182 acc_.SetMachineType(newGate, acc_.GetMachineType(gate));
183 copies_[gate] = newGate;
184 if (acc_.GetOpCode(gate) == OpCode::JS_BYTECODE) {
185 bcBuilder_->UpdateBcIndexGate(newGate, bcBuilder_->GetBcIndexByGate(gate));
189 GateRef LoopPeeling::GetCopy(GateRef gate) const
191 if (copies_.count(gate)) {
192 return copies_.at(gate);
194 return gate;
197 GateRef LoopPeeling::TryGetCopy(GateRef gate) const
199 if (copies_.count(gate) > 0) {
200 return copies_.at(gate);