diff paraspace/dex_deptracker.py @ 127:650244dcdd82

Sort arrays in rules requested by dalvik
author Thinker K.F. Li <thinker@codemud.net>
date Mon, 08 Aug 2011 22:34:11 +0800
parents ff6f869273b7
children 52749d91cc22
line wrap: on
line diff
--- a/paraspace/dex_deptracker.py	Mon Aug 08 17:26:05 2011 +0800
+++ b/paraspace/dex_deptracker.py	Mon Aug 08 22:34:11 2011 +0800
@@ -785,6 +785,27 @@
     return depon_dep_map
 
 
+## \brief Make sorted arrays being sorted.
+#
+# Some array in a DEXFile must be sorted in some kind of rule.  They
+# are typed by \ref array_sorted, the type of a sorted array.  Child
+# type of a sorted array must implement __cmp__ method to define the
+# rule.
+#
+# This function must be applied on a DEXFile_linked before calling
+# restore_dependencies().
+#
+def dex_sort_sorted_arrays(dex):
+    assert isinstance(dex, dexfile.DEXFile_linked)
+    
+    for obj, parents, name_path in _travel_dex_relocatable(dex):
+        if isinstance(obj, dexfile.array_sorted):
+            obj.items.sort()
+            pass
+        pass
+    pass
+
+
 ## \brief Update offset for all relocatable of a DEXFile.
 #
 # Update offset of instances of \ref _dex_type.