From 2b45f9c05da69af178bc47a77b28e5d133577c42 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 19 Sep 2009 17:05:52 +0000 Subject: Avoid lots of redundant Atom constructor calls. Thanks to Marat Radchenko for the initial patch from bug #276813. svn path=/main/trunk/; revision=14282 --- pym/_emerge/depgraph.py | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) (limited to 'pym/_emerge/depgraph.py') diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index d52d5ac6a..5b03dc3a2 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -1149,9 +1149,6 @@ class depgraph(object): for atom in selected_atoms[pkg]: try: - - atom = portage.dep.Atom(atom) - mypriority = dep_priority.copy() if not atom.blocker and vardb.match(atom): mypriority.satisfied = True @@ -1306,16 +1303,15 @@ class depgraph(object): atom_arg_map = self._dynamic_config._atom_arg_map root_config = self._frozen_config.roots[pkg.root] for atom in self._dynamic_config._set_atoms.iterAtomsForPackage(pkg): - atom_cp = portage.dep_getkey(atom) - if atom_cp != pkg.cp and \ - self._have_new_virt(pkg.root, atom_cp): + if atom.cp != pkg.cp and \ + self._have_new_virt(pkg.root, atom.cp): continue visible_pkgs = \ self._dynamic_config._visible_pkgs[pkg.root].match_pkgs(atom) visible_pkgs.reverse() # descending order higher_slot = None for visible_pkg in visible_pkgs: - if visible_pkg.cp != atom_cp: + if visible_pkg.cp != atom.cp: continue if pkg >= visible_pkg: # This is descending order, and we're not @@ -1606,9 +1602,8 @@ class depgraph(object): self._spinner_update() dep = Dependency(atom=atom, onlydeps=onlydeps, root=myroot, parent=arg) - atom_cp = portage.dep_getkey(atom) try: - pprovided = pprovideddict.get(portage.dep_getkey(atom)) + pprovided = pprovideddict.get(atom.cp) if pprovided and portage.match_from_list(atom, pprovided): # A provided package has been specified on the command line. self._dynamic_config._pprovided_args.append((arg, atom)) @@ -1651,10 +1646,10 @@ class depgraph(object): return 0, myfavorites self._dynamic_config._missing_args.append((arg, atom)) continue - if atom_cp != pkg.cp: + if atom.cp != pkg.cp: # For old-style virtuals, we need to repeat the # package.provided check against the selected package. - expanded_atom = atom.replace(atom_cp, pkg.cp) + expanded_atom = atom.replace(atom.cp, pkg.cp) pprovided = pprovideddict.get(pkg.cp) if pprovided and \ portage.match_from_list(expanded_atom, pprovided): @@ -2396,7 +2391,7 @@ class depgraph(object): # Filter out any old-style virtual matches if they are # mixed with new-style virtual matches. - cp = portage.dep_getkey(atom) + cp = atom.cp if len(matched_packages) > 1 and \ "virtual" == portage.catsplit(cp)[0]: for pkg in matched_packages: @@ -2737,8 +2732,8 @@ class depgraph(object): for provider_entry in virtuals[blocker.cp]: provider_cp = \ portage.dep_getkey(provider_entry) - atoms.append(blocker.atom.replace( - blocker.cp, provider_cp)) + atoms.append(Atom(blocker.atom.replace( + blocker.cp, provider_cp))) else: atoms = [blocker.atom] @@ -4896,7 +4891,6 @@ class _dep_check_composite_db(portage.dbapi): # any matching slots in the graph db. slots = set() slots.add(pkg.metadata["SLOT"]) - atom_cp = portage.dep_getkey(atom) if pkg.cp.startswith("virtual/"): # For new-style virtual lookahead that occurs inside # dep_check(), examine all slots. This is needed @@ -4917,7 +4911,7 @@ class _dep_check_composite_db(portage.dbapi): ret.append(pkg.cpv) slots.remove(pkg.metadata["SLOT"]) while slots: - slot_atom = "%s:%s" % (atom_cp, slots.pop()) + slot_atom = Atom("%s:%s" % (atom.cp, slots.pop())) pkg, existing = self._depgraph._select_package( self._root, slot_atom) if not pkg: -- cgit v1.2.3-1-g7c22