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