Update gcmole to work with llvm 8 and the new Object design
After introducing the new pointer-containing Object class in V8 (see https://docs.google.com/document/d/1_w49sakC1XM1OptjTurBDqO86NE16FH8LwbeUAtrbCo/edit), gcmole stopped finding errorneous usage of raw pointers in functions that could trigger GC. This CL modifies the heuristics of the tool to classify Object and MaybeObject instances as raw pointers, thus giving back the missing warnings. Updated the gcmole implementation to support modern llvm (tested with llvm 8.0) for which additional support for MaterializeTemporaryExpr, ExprWithCleanups and UnaryExprOrTypeTraitExpr was needed. Basic tests are added to make it harder to introduce such errors without noticing in the future. This version gives a lot of false positives when ran on the whole project, see https://docs.google.com/document/d/1K7eJ0f6m9QX6FZIjZnt_GFtUsjEOC_LpiAwZbcAA3f8/edit R=jkummerow@chromium.org,mstarzinger@chromium.org Bug: v8:8813 Change-Id: Ic0190a4bc2642eda8880d9f7b30b5145a76a7d89 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1494754 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#60099}
Showing
tools/gcmole/gcmole-test.cc
0 → 100644
This diff is collapsed.
Please
register
or
sign in
to comment