Remove unmapped/freed memory regions from the object property list.

This commit fixes the following issues:
- Any unmapped/free'd memory regions (MemoryRegion instances) are not
  removed from the object property linked list of its owner (which is
  always qdev_get_machine(uc)). This issue makes adding new memory
  mapping by calling mem_map() or mem_map_ptr() slower as more and more
  memory pages are mapped and unmapped - yes, even if those memory pages
  are unmapped, they still impact the speed of future memory page
  mappings due to this issue.
- FlatView is not reconstructed after a memory region is freed during
  unmapping, which leads to a use-after-free the next time a new memory
  region is mapped in address_space_update_topology().
This commit is contained in:
Fish
2016-10-20 03:33:37 -07:00
parent 67905ab147
commit ad7ae63e92
15 changed files with 8 additions and 15 deletions

View File

@@ -14,6 +14,7 @@
#define memory_map_ptr memory_map_ptr_powerpc
#define memory_unmap memory_unmap_powerpc
#define memory_free memory_free_powerpc
#define free_code_gen_buffer free_code_gen_buffer_powerpc
#define helper_raise_exception helper_raise_exception_powerpc
#define tcg_enabled tcg_enabled_powerpc
#define tcg_exec_init tcg_exec_init_powerpc
@@ -2175,7 +2176,6 @@
#define object_property_allow_set_link object_property_allow_set_link_powerpc
#define object_property_del object_property_del_powerpc
#define object_property_del_all object_property_del_all_powerpc
#define object_property_del_child object_property_del_child_powerpc
#define object_property_find object_property_find_powerpc
#define object_property_get object_property_get_powerpc
#define object_property_get_bool object_property_get_bool_powerpc