- 21 Mar, 2022 1 commit
-
-
Camillo Bruni authored
Bug: v8:10009 Change-Id: I1f71b2783cd07331a65f46c316e87a46396e7eda Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3516153Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/main@{#79541}
-
- 04 Mar, 2022 1 commit
-
-
Camillo Bruni authored
Prepare gcmole.cc for the next update: - Print possible GC locations when discovering stale/dead variables - Make error messages less confusing for the modern V8 engineer - Prepare gcmole to read suspects.allowlist instead of .whitelist - Use more readable variable names - Only log non-found types with --verbose - Change the currently unusued gccauses format in gcmole.py and support loading it back in gcmole.cc - Implemented first basic gc call-chain printing (disabled by default) GCmole packaging: - Add debug mode to bootstrap.sh build script - Update gcmole.py run instructions in bootstrap.sh and package.sh Bug: v8:10009 Change-Id: I369d48baa2980455d2e8f57e7a803d0384fe83f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3480095Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/main@{#79357}
-
- 12 Jan, 2021 1 commit
-
-
Camillo Bruni authored
Make sure gcmole detects issue in DisallowGarbageCollection scopes. DisallowGarbageCollection is widely used in the codebase to document code that doesn't allocate. However, this has the rather unexpected side-effect that gcmole is not run when such a scope is active. This CL changes the default behavior of gcmole to run even with DisallowGarbageCollection scopes present. This will give us the best results of both worlds, dynamic checks by the fuzzer, and static analysis by gcmole. To allow crazy local raw pointer operations there is a new DisableGCMole scope that explicitly disables gcmole. Change-Id: I0a78fb3b4ceaad35be9bcf7293d917a41f90c91f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615419Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#72039}
-
- 20 Nov, 2020 1 commit
-
-
Leszek Swirski authored
Because of LocalHeap safepoints, our existing assert scopes don't necessarily maintain the same guarantees as desired. In particular, DisallowHeapAllocation no longer guarantees that objects don't move. This patch transitions DisallowHeapAllocation to DisallowGarbageCollection, to ensure that code using this scope is also protected against safepoints. Change-Id: I0411425884f6849982611205fb17bb072881c722 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2540547 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Peter Marshall <petermarshall@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#71319}
-
- 17 Nov, 2020 1 commit
-
-
Leszek Swirski authored
Add a "combination" assert scope class, which combines multiple existing assert scopes. This will allow scopes with functional overlap, e.g. DisallowGarbageCollection and DisallowHeapAllocation, to share an assert type rather than rather than requiring users to remember to set both. To demonstrate this, this redefines DisallowGarbageCollection to a combination of DisallowHeapAllocation and a new DisallowSafepoints, and some of the DCHECKs checking both are simplified to only check one or the other, as appropriate. The combination classes become subclasses of the existing assert scopes, so that they can be used in their place as e.g. a function parameter, e.g. DisallowGarbageCollection can be passed to a function expecting const DisallowHeapAllocation&. As a drive-by, this also changes the per-thread assert scopes to use a bitmask, rather than a bool array, to store their per-thread data. The per-isolate scopes already used a bitmask, so this unifies the behaviour between the two. Change-Id: I209e0a56f45e124c0ccadbd9fb77f39e070612fe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2534814 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#71231}
-
- 16 Nov, 2020 1 commit
-
-
Leszek Swirski authored
This resolves issues building gcmole under LLVM 8.0.0 with gcc 10 (see https://bugs.gentoo.org/708730). Change-Id: I932def25fb3cc841cf21414a513fbe2a2fa8a8dc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2539946Reviewed-by: Tamer Tas <tmrts@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Tamer Tas <tmrts@chromium.org> Cr-Commit-Position: refs/heads/master@{#71204}
-
- 26 Oct, 2020 1 commit
-
-
Maya Lekova authored
GCMole mistakenly thought that GC guards such as DisallowHeapAllocation covered the whole scope of the function they are declared in. This CL fixes the false negatives and adds appropriate testing. Bug: v8:10071 Change-Id: Iffb369977af90ca053a55ca8f451e037a4f460f2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2497451 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#70763}
-
- 14 Sep, 2020 1 commit
-
-
Dominik Inführ authored
Add support for DisallowGarbageCollection scope. This scope will be introduced once this CL landed. DisallowGarbageCollection works like DisallowHeapAllocation but also disallows safepoints. Bug: v8:10315 Change-Id: Ia7d777d4104b32810dd481ad9dbdf0edd075b6cf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2395561 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#69881}
-
- 24 Jun, 2020 1 commit
-
-
Maya Lekova authored
GCMole now comes with the long forgotten use-after-free detection enabled by default. The CL also improves error logging when test expectations mismatch with the actual output and updates the hash of GCMole to be used with the newly built version with enabled UAF detection. The CL also contains an ignore for isolate.cc due to inability to fix a warning there and fixes a couple of UAF warnings. Bug: v8:9680 Change-Id: I7a009ffd5f67b1b5437567691ca4235ea873de70 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2257236 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#68505}
-
- 22 Jun, 2020 1 commit
-
-
Maya Lekova authored
Bug: v8:9993 Change-Id: I06428edd7f01805d08927718e4711298c731d2e3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2253844 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68450}
-
- 19 Jun, 2020 1 commit
-
-
Maya Lekova authored
Bug: v8:10009 Change-Id: Iccc42a9b5f9f7340851542185473ac49683c838c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2253843Reviewed-by: Clemens Backes <clemensb@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#68430}
-
- 18 May, 2020 1 commit
-
-
Maya Lekova authored
Enhance gcmole --verbose printing with the GC suspect. Bug: v8:9986 Change-Id: Ia1454d4edec334eabb31a764583e4ee559f0fe07 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2207174Reviewed-by: Clemens Backes <clemensb@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#67867}
-
- 13 Dec, 2019 1 commit
-
-
Michael Starzinger authored
R=clemensb@chromium.org Change-Id: Ibd6790a222590fd4dce9f918219a19f01c2e1e0f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1960293Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#65439}
-
- 26 Nov, 2019 2 commits
-
-
Maya Lekova authored
This should help reduce the number of false positives detected by dead variable analysis. Bug: v8:9680, chromium:1000635 Change-Id: Id2893dd5f26cad230dede96930a5caacc0272b64 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1924359 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#65186}
-
Maya Lekova authored
This CL ensures we care only about our internal pointer types and not about raw C++ pointers, because normally special care is taken when storing raw pointers to the managed heap. Furthermore, checking for raw pointers produces too many false positives in the dead variable analysis. Bug: v8:9680, chromium:1000635 Change-Id: Ica9ea1fe09b7456c011910a6886149b6dfdda1f5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1924357 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#65174}
-
- 29 Aug, 2019 1 commit
-
-
Maya Lekova authored
Since this produces a few false positives, also implemented a whitelist mechanism to not report them. Also, add a couple of tests and implemented automated testing against test-expectations file. Bug: v8:9321 Change-Id: I2915a29fe1891e8bbc51118bbd95ae072c8de023 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1773243 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#63456}
-
- 13 Mar, 2019 1 commit
-
-
Michael Starzinger authored
This updates the existing special casing of assignment operators by gcmole to match for assignments of {HeapObject} instead of {HeapObject*} variables. The former now uses the implicit C++ assignment operator call instead of a primitive assignment binary operation. Also removes the dead {handle_decl_name} field as a drive-by-fix. R=mslekova@chromium.org BUG=v8:8813 Change-Id: I0b48254e7ca1544bc064707a8ca1f204366ddbe4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1517879 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#60212}
-
- 11 Mar, 2019 1 commit
-
-
Michael Starzinger authored
R=mslekova@chromium.org BUG=v8:8813 Change-Id: I4d35fdff0f398c4eac3a97932a5e6ce43a49d9c8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1514683 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#60171}
-
- 07 Mar, 2019 1 commit
-
-
Maya Lekova authored
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}
-
- 16 Feb, 2017 1 commit
-
-
clemensh authored
Enforce the invariant that unreachable implicates an empty live set and fix the implementation of |= and &= operator. This is a fix-up for http://crrev.com/2694103005. R=vegorov@chromium.org CC=mstarzinger@chromium.org, machenbach@chromium.org BUG=v8:5970 Review-Url: https://codereview.chromium.org/2691103008 Cr-Commit-Position: refs/heads/master@{#43251}
-
- 15 Feb, 2017 1 commit
-
-
clemensh authored
This CL changes the datastructure to store live variables from a std::bitset<256> to a std::vector<bool> to support an arbitrary number of locals. Unfortunately, std::vector<bool> does not define |= and &= operators, so I added them on the Environment class. R=vegorov@chromium.org, mstarzinger@chromium.org, machenbach@chromium.org BUG=v8:5970 Review-Url: https://codereview.chromium.org/2694103005 Cr-Commit-Position: refs/heads/master@{#43216}
-
- 07 Aug, 2014 1 commit
-
-
svenpanne@chromium.org authored
* Changes for 2.9: * Use CXX in Makefile instead of hardwired g++, we need a more modern GCC than 4.6 later, anyway. * Changes for 3.0: * Use llvm namespace. * Diagnostic => DiagnosticsEngine. * Changes for 3.1: * The BlockDeclRefExpr AST node is gone. * The structure of the CXXNewExpr AST node has changed. * Path changed from Release to Release+Asserts. * Use clang++ instead of -cc1, otherwise we lose the system include paths. * Changes for 3.2: none needed * Changes for 3.3: * Use lookup_iterator::begin/end instead of first/second. * Changes for 3.4: * createItaniumMangleContext => ItaniumMangleContext::create. * Changes for 3.5: * clang uses <type_traits> now, so -std=c++0x is needed. * Type-trait-related AST changes. * getCustomDiagID signature changed. * We must link the C++ library statically now. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/445983002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22972 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 Apr, 2013 1 commit
-
-
mstarzinger@chromium.org authored
R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/13950017 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14393 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 17 Feb, 2012 1 commit
-
-
vegorov@chromium.org authored
Detect those methods by reference to StateTag::EXTERNAL in their bodies. R=fschneider@google.com Review URL: https://chromiumcodereview.appspot.com/9420046 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10738 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 16 May, 2011 1 commit
-
-
vegorov@chromium.org authored
Fix various places in the code found by improved GCMole. Review URL: http://codereview.chromium.org/6973063 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7895 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 07 Apr, 2011 1 commit
-
-
vegorov@chromium.org authored
GCMole is a simple static analysis tool that searches for GC-usafe evaluation order dependent callsites. Review URL: http://codereview.chromium.org/6812002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-