1 |
commit: 1ea42d5d12ff3f8e59ebcfd12025d401b51894e1 |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri May 31 23:24:32 2013 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri May 31 23:51:46 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=1ea42d5d |
7 |
|
8 |
depgraph: tuple display list, avoid copies |
9 |
|
10 |
TODO: Optimize _show_merge_list to use reference comparison more |
11 |
instead of == comparison. |
12 |
|
13 |
--- |
14 |
pym/_emerge/Scheduler.py | 2 +- |
15 |
pym/_emerge/depgraph.py | 19 +++++++++++++------ |
16 |
2 files changed, 14 insertions(+), 7 deletions(-) |
17 |
|
18 |
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py |
19 |
index 5930550..4e8b223 100644 |
20 |
--- a/pym/_emerge/Scheduler.py |
21 |
+++ b/pym/_emerge/Scheduler.py |
22 |
@@ -1830,7 +1830,7 @@ class Scheduler(PollScheduler): |
23 |
mylist = mydepgraph.altlist() |
24 |
if mylist: |
25 |
if "--tree" in self.myopts: |
26 |
- mylist.reverse() |
27 |
+ mylist = tuple(reversed(mylist)) |
28 |
mydepgraph.display(mylist, favorites=self._favorites) |
29 |
|
30 |
if not success: |
31 |
|
32 |
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py |
33 |
index 7929a78..9c0a966 100644 |
34 |
--- a/pym/_emerge/depgraph.py |
35 |
+++ b/pym/_emerge/depgraph.py |
36 |
@@ -5704,9 +5704,13 @@ class depgraph(object): |
37 |
except self._serialize_tasks_retry: |
38 |
pass |
39 |
|
40 |
- retlist = self._dynamic_config._serialized_tasks_cache[:] |
41 |
+ retlist = self._dynamic_config._serialized_tasks_cache |
42 |
if reversed: |
43 |
+ # TODO: deprecate the "reversed" parameter (builtin name collision) |
44 |
+ retlist = list(retlist) |
45 |
retlist.reverse() |
46 |
+ retlist = tuple(retlist) |
47 |
+ |
48 |
return retlist |
49 |
|
50 |
def _implicit_libc_deps(self, mergelist, graph): |
51 |
@@ -6575,10 +6579,12 @@ class depgraph(object): |
52 |
for blocker in unsolvable_blockers: |
53 |
retlist.append(blocker) |
54 |
|
55 |
+ retlist = tuple(retlist) |
56 |
+ |
57 |
if unsolvable_blockers and \ |
58 |
not self._accept_blocker_conflicts(): |
59 |
self._dynamic_config._unsatisfied_blockers_for_display = unsolvable_blockers |
60 |
- self._dynamic_config._serialized_tasks_cache = retlist[:] |
61 |
+ self._dynamic_config._serialized_tasks_cache = retlist |
62 |
self._dynamic_config._scheduler_graph = scheduler_graph |
63 |
# Blockers don't trigger the _skip_restart flag, since |
64 |
# backtracking may solve blockers when it solves slot |
65 |
@@ -6587,7 +6593,7 @@ class depgraph(object): |
66 |
|
67 |
if self._dynamic_config._slot_collision_info and \ |
68 |
not self._accept_blocker_conflicts(): |
69 |
- self._dynamic_config._serialized_tasks_cache = retlist[:] |
70 |
+ self._dynamic_config._serialized_tasks_cache = retlist |
71 |
self._dynamic_config._scheduler_graph = scheduler_graph |
72 |
raise self._unknown_internal_error() |
73 |
|
74 |
@@ -6641,12 +6647,13 @@ class depgraph(object): |
75 |
def _show_merge_list(self): |
76 |
if self._dynamic_config._serialized_tasks_cache is not None and \ |
77 |
not (self._dynamic_config._displayed_list is not None and \ |
78 |
- (self._dynamic_config._displayed_list == self._dynamic_config._serialized_tasks_cache or \ |
79 |
+ (self._dynamic_config._displayed_list is self._dynamic_config._serialized_tasks_cache or \ |
80 |
+ self._dynamic_config._displayed_list == self._dynamic_config._serialized_tasks_cache or \ |
81 |
self._dynamic_config._displayed_list == \ |
82 |
list(reversed(self._dynamic_config._serialized_tasks_cache)))): |
83 |
- display_list = self._dynamic_config._serialized_tasks_cache[:] |
84 |
+ display_list = self._dynamic_config._serialized_tasks_cache |
85 |
if "--tree" in self._frozen_config.myopts: |
86 |
- display_list.reverse() |
87 |
+ display_list = tuple(reversed(display_list)) |
88 |
self.display(display_list) |
89 |
|
90 |
def _show_unsatisfied_blockers(self, blockers): |