public function process(GraphState $state) { $graph = $state->getGraph(); $assignments = array_merge(Helper::findVerticesByClass(JitAssignment::class, $graph), [$state->getFunction()]); $vars = Helper::findVariables($graph); $dominator = $state->getDominator(); foreach ($vars as $var) { $hash = spl_object_hash($var); $varAssignments = $this->findAssignmentsByVar($var, $assignments); $phi = $this->findPhiNodes($var, $varAssignments, $dominator, $graph); $this->implementSSA($var, $var, $state->getFunction(), $graph, $phi, $state->getFunction()->getArguments()); $this->stack->removeAll($this->stack); } }
/** * @covers ::findVerticesByClass */ public function testFindVerticiesByClass() { $end = new JitEnd(); $this->graph->ensureArc($this->v[5], $end); $this->assertSame([$end], Helper::findVerticesByClass(JitEnd::class, $this->graph)); }
public function getPostDominator() { return new Dominator($this->getInverseGraph(), Helper::findVerticesByClass(End::class, $this->graph)[0]); }