summaryrefslogtreecommitdiff
path: root/runtime/object_callbacks.h
AgeCommit message (Collapse)Author
2024-01-24Add visibility attributes in runtime/o* Dmitrii Ishcheikin
Bug: 260881207 Test: presubmit Test: abtd app_compat_drm Test: abtd app_compat_top_100 Test: abtd app_compat_banking Change-Id: Ic091089f8bbcf146bf1bf416b29d4edcd3c3b0eb
2017-11-08cpplint: Cleanup errors Igor Murashkin
Cleanup errors from upstream cpplint in preparation for moving art's cpplint fork to upstream tip-of-tree cpplint. Test: cd art && mm Bug: 68951293 Change-Id: I15faed4594cbcb8399850f8bdee39d42c0c5b956
2017-07-18ART: Replace or remove some ObjectCallback Walk functions Andreas Gampe
Replace with visitor functions in RegionSpace and SpaceBitmap. Remove old ObjectCallback version in HeapBitmap. Fix up users. Move some thread-safety annotations. Move ObjectCallback definition to the only remaining user (ModUnionTable). Test: m Change-Id: I10307aeacad0c60d21fbade2081ec040d6a6ac4c
2017-02-21Always mark reference referents in transaction mode. Hiroshi Yamauchi
Fix a to-space invariant check failure in EnqueueFinalizerReferences. Reference processing can be a problem and useless during transaction because it's not easy to roll back what reference processing does and there's no daemon threads running (in the unstarted runtime). To avoid issues, always mark reference referents. Add a do_atomic_update parameter to MarkHeapReference. Bug: 35417063 Test: test-art-host with CC/CMS/SS. Change-Id: If32eba8fca19ef86e5d13f7925d179c8aecb9e27
2015-07-14Clean up GC callbacks to be virtual methods Mathieu Chartier
Change-Id: Ia08034a4e5931c4fcb329c3bd3c4b1f301135735
2015-07-09Clean up some includes Mathieu Chartier
Change-Id: Ia03a3b54b235df38d5cfe096fef1aebe2b80eb29
2015-04-22Replace NULL with nullptr Mathieu Chartier
Also fixed some lines that were too long, and a few other minor details. Change-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb
2015-01-15Print more info in MarkSweep::VerifyRoot Mathieu Chartier
Refactored old root callback to use a new class called RootInfo. RootInfo contains all the relevant info related to the root associated with the callback. The MarkSweep::VerifyRoot function now uses this info to print the StackVisitor's described location if the GC root is of the type kRootJavaFrame. Some other cleanup. Example output: E/art (12167): Tried to mark 0x123 not contained by any spaces E/art (12167): Attempting see if it's a bad root E/art (12167): Found invalid root: 0x123 with type RootJavaFrame E/art (12167): Location=Visiting method 'void java.lang.Runtime.gc()' at dex PC 0xffffffff (native PC 0x0) vreg=0 (cherry picked from commit 12f7423a2bb4bfab76700d84eb6d4338d211983a) Bug: 18588862 Change-Id: Ic5a2781f704e931265ffb3621c2eab4b2e25f60f
2014-07-16Disable adding main and non moving spaces to immune region in GSS Mathieu Chartier
Disabled adding the main and non moving space to the immune region. This will enable us to recycle bump pointer spaces for malloc space -> malloc space compaction as well as collector transitions. Also added logic for falling back to the non moving space, we may copy objects there. Refactored mod union table logic into MarkReachableObjects. No measurable performance benefit or regression. Bug: 14059466 Bug: 16291259 Change-Id: If663d9fdbde943b988173b7f6ac844e5f78a0327
2014-07-11Improve performance of invokevirtual/invokeinterface with embedded imt/vtable Mingyao Yang
Add an embedded version of imt/vtable into class object. Both tables start at fixed offset within class object so method/entry point can be loaded directly from class object for invokeinterface/invokevirtual. Bug: 8142917 Change-Id: I4240d58cfbe9250107c95c0708c036854c455968
2014-06-16Change reference processing to use heap references. Mathieu Chartier
Removes several SetReferents for updating moved referents. Cleaned up other aspects of the code. Change-Id: Ibcb4d713fadea617efee7e936352ddf77ff4c370
2014-05-20Improve heap verification for invalid roots. Mathieu Chartier
The new root verification prints the root type and owner thread id as well as the type of the object. Also a bit of work for planned multi-threaded verification. Bug: 14289301 Change-Id: Ia73c517dc11ec6dd82f3d945604ee3836b3db536
2014-04-28Improve GSS reference processing. Hiroshi Yamauchi
Support the case where the reference object is in the free list space and the referent object is in the bump pointer space at a bump pointer space collection. Bug: 11650816 Change-Id: If98b08edc9e37351c74ee07cb3f2d30c2b4d0056
2014-04-04Improve invalid root dumping. Mathieu Chartier
The invalid root dumping now attempts to print the root type. Change-Id: Ie821296d569f34909ba6e2705f5c347cd2143a3a
2014-03-24Refactor object reference visiting logic. Mathieu Chartier
Refactored the reference visiting logic to be in mirror::Object instead of MarkSweep. Change-Id: I773249478dc463d83b465e85c2402320488577c0
2014-02-20Change ProcessReferences to not use RecursiveMarkObject. Mathieu Chartier
Calling ProcessMarkStack in RecursiveMarkObject caused a lot of overhead due to timing logger splits. Changed the logic to be the same as prior to the reference queue refactoring which involves calling process mark stack after preserving soft references and enqueueing finalizer references. FinalizingGC longest pause is reduced by around 1/2 down to ~300ms. Benchmark score ~400000 -> ~600000. Also changed the timing logger splits in the GC to have (Paused) if the split is a paused part of the GC. Bug: 12129382 Change-Id: I7476d4f23670b19d70738e2fd48e37ec2f57e9f4
2014-02-18Change root visitor to use Object**. Mathieu Chartier
Simplifies code and improves the performance of root visiting since we usually don't need to check to see if the object moved. Change-Id: Iba998f5a15ae1fa1b53ca5226dd2168a411196cf
2014-02-11Add root types and thread id to root visiting. Mathieu Chartier
Enables us to pass the root type and thread id to hprof. Bug: 12680863 Change-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb