tsan: refactor storage of meta information for heap blocks and sync objects

Description

tsan: refactor storage of meta information for heap blocks and sync objects
The new storage (MetaMap) is based on direct shadow (instead of a hashmap + per-block lists).
This solves a number of problems:

  • eliminates quadratic behaviour in SyncTab::GetAndLock (https://code.google.com/p/thread-sanitizer/issues/detail?id=26)
  • eliminates contention in SyncTab
  • eliminates contention in internal allocator during allocation of sync objects
  • removes a bunch of ad-hoc code in java interface
  • reduces java shadow from 2x to 1/2x
  • allows to memorize heap block meta info for Java and Go
  • allows to cleanup sync object meta info for Go
  • which in turn enabled deadlock detector for Go

Details

Committed
dvyukovMay 29 2014, 6:50 AM
Parents
rL209809: Fix r209807 which inadvertently removed things
Branches
Unknown
Tags
Unknown