Mercurial > paraspace
comparison paraspace/injection.py @ 98:c0c127c7b37e
Check and fix issues of map sizes
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Mon, 25 Jul 2011 20:37:32 +0800 |
parents | 1769e52bdd9d |
children | 3898711adb2c |
comparison
equal
deleted
inserted
replaced
97:00cd331f8aa8 | 98:c0c127c7b37e |
---|---|
35 | 35 |
36 ## \brief Return a map that map type of a object to the list of a DEXFile. | 36 ## \brief Return a map that map type of a object to the list of a DEXFile. |
37 def dex_type_2_array_attr_map(): | 37 def dex_type_2_array_attr_map(): |
38 global dex_type_2_array_attr_map | 38 global dex_type_2_array_attr_map |
39 from paraspace.dexfile import DEXFile, array | 39 from paraspace.dexfile import DEXFile, array |
40 from paraspace.dex_deptracker import _marker | |
41 | |
42 def skip_marker_type(clazz): | |
43 while isinstance(clazz, _marker): | |
44 clazz = clazz.back_type | |
45 pass | |
46 return clazz | |
40 | 47 |
41 attr_values = [(attr, getattr(DEXFile, attr)) | 48 attr_values = [(attr, getattr(DEXFile, attr)) |
42 for attr in dir(DEXFile)] | 49 for attr in dir(DEXFile)] |
43 type_2_attr = dict([(value.child_type, attr) | 50 type_2_attr = dict([(skip_marker_type(value.child_type), attr) |
44 for attr, value in attr_values | 51 for attr, value in attr_values |
45 if isinstance(value, array)]) | 52 if isinstance(value, array)]) |
46 | 53 |
47 dex_type_2_array_attr_map = lambda: type_2_attr | 54 dex_type_2_array_attr_map = lambda: type_2_attr |
48 | 55 |