Branch: refs/heads/master
  Home:   https://github.com/dyninst/dyninst
  Commit: d327c37f216db09b2a45e92c3db455e41c68fe35
      
https://github.com/dyninst/dyninst/commit/d327c37f216db09b2a45e92c3db455e41c68fe35
  Author: Xiaozhu Meng <mxz...@gmail.com>
  Date:   2020-04-11 (Sat, 11 Apr 2020)

  Changed paths:
    M common/h/concurrent.h
    M dataflowAPI/rose/x86_64InstructionSemantics.h
    M dataflowAPI/src/ExpressionConversionVisitor.C
    M dataflowAPI/src/SymbolicExpansion.C
    M parseAPI/h/CodeObject.h
    M parseAPI/src/Block.C
    M parseAPI/src/BoundFactCalculator.C
    M parseAPI/src/BoundFactData.C
    M parseAPI/src/CodeObject.C
    M parseAPI/src/JumpTableIndexPred.C
    M parseAPI/src/ParseData.h
    M parseAPI/src/Parser-speculative.C
    M parseAPI/src/Parser.C
    M parseAPI/src/Parser.h
    M parseAPI/src/SymtabCodeSource.C
    M symtabAPI/h/Collections.h
    M symtabAPI/src/Collections.C
    M symtabAPI/src/Type-mem.h

  Log Message:
  -----------
  More parallel parsing optimization and fixes (#729)

* Don't clean up the jump tables, the code needs some tuning.

* Refactor Block::getFuncs to not use interval trees, which will cause
mutual exclusion writes. Build a concurrent lookup during function finalization

* Swap to use unique_lock instead of lock_guard.

* (Untested) Shift synchronization to the entry-level locks.

* Add a fast-path to getModTypeCollection, to reduce contention issues.

* Do not assert when cannot trasnslate instruction to symbolic expression on 
x86_64

* By design, the target block of an edge should not change when the target 
address is not changed.
This is because there should be a unique block created at a give address. 
Previously, sink block
does not satisfy this invariant, so I perform an index lookup for edge target. 
This lookup will
cause significant unnecessary lock contention for the block concurrent hash map.

Fix sink block so that there is one and only one sink block and remove the edge 
target block
lookup

* Disable jump table finalization (Need to enable it after its performance is 
investigated)

* Pre-allocate hash table buckets for funcByBlocks map to remove hash table 
resizing overhead

* Fix jump table finalization

* Enable jump table finalization

* Do not remove incoming edges for the sink block.

* Fix gap searching in gap parsing

* More gap searching fixes

* Open libgcc.a on x86 for rewriting statically linked binaries

* Should convert pstate register to rose register on ARMv8

* Parse 2-PLT style PLT stubs, which are used when Intel-CET is enabled

* Cleanup some error messages

* More debug output cleanup

Co-authored-by: blue42u <anderson.jonath...@gmail.com>
Co-authored-by: blue42u <blue...@users.noreply.github.com>


_______________________________________________
Dyninst-api mailing list
Dyninst-api@cs.wisc.edu
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

Reply via email to