Branch: refs/heads/new-parallel-parsing Home: https://github.com/dyninst/dyninst Commit: 67fce2e5d95c1e999e94e82765a334eaab6ef4a2 https://github.com/dyninst/dyninst/commit/67fce2e5d95c1e999e94e82765a334eaab6ef4a2 Author: Xiaozhu Meng <xm...@cs.wisc.edu> Date: 2018-06-11 (Mon, 11 Jun 2018)
Changed paths: M parseAPI/src/CFGModifier.C M parseAPI/src/CodeObject.C M parseAPI/src/ParseData.C M parseAPI/src/ParseData.h M parseAPI/src/Parser.C M parseAPI/src/ParserDetails.C M parseAPI/src/SymtabCodeSource.C Log Message: ----------- Revisit locking for parallel parsing 1. We sometimes need to check whether a frame exists or not, and only create a new frame when it does not exist. The lookup and the creation should be one atomic operation. Parser::createAndRecordFrame implements this atomic operation. 2. Similarly, Parser::createAndRecordFunc atomically creates a function when it does not exist. 3. record_block is should require locking because multiple threads may parse the same address. 4. The parse of a frame and the post-processing of a frame should be one atomic operation. Right now, we use a scoped lock for this. 5. We should first initialize a frame before updating the frame status or record the frame. Updating frame status or recording frame make the frame available to other threads. Commit: 902261cef12a7c21b0b1936b7bf824384e9442e3 https://github.com/dyninst/dyninst/commit/902261cef12a7c21b0b1936b7bf824384e9442e3 Author: Xiaozhu Meng <xm...@cs.wisc.edu> Date: 2018-06-11 (Mon, 11 Jun 2018) Changed paths: M parseAPI/src/Parser.C M parseAPI/src/Parser.h Log Message: ----------- We should not need finalize_block as the block should have been splited during parsing. Also delete some unnecessary code Commit: 49a4f51e6ab03d2473392074f3f60e51e06cde0f https://github.com/dyninst/dyninst/commit/49a4f51e6ab03d2473392074f3f60e51e06cde0f Author: Xiaozhu Meng <xm...@cs.wisc.edu> Date: 2018-06-11 (Mon, 11 Jun 2018) Changed paths: M parseAPI/src/Parser.C Log Message: ----------- When updating block ends, also need to update block range lookups Commit: eb0953387dde0c0514d4b3b0d0a5e2181a000836 https://github.com/dyninst/dyninst/commit/eb0953387dde0c0514d4b3b0d0a5e2181a000836 Author: Xiaozhu Meng <xm...@cs.wisc.edu> Date: 2018-06-11 (Mon, 11 Jun 2018) Changed paths: M parseAPI/src/ParseData.h M parseAPI/src/Parser.C Log Message: ----------- Refactor ParseFrame::leadersToBlock from a hash map to a std::map so that when we try to find a block that may contains an address, we do not need to iterate every iten in the map. Instead, we can just use upper_bound or lower_bound to find the only candidate Compare: https://github.com/dyninst/dyninst/compare/d62e3491ac54...eb0953387dde **NOTE:** This service been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/ Functionality will be removed from GitHub.com on January 31st, 2019.
_______________________________________________ Dyninst-api mailing list Dyninst-api@cs.wisc.edu https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api