OSDN Git Service

ART: checkpoint mechanism optimization
authorLei Li <lei.l.li@intel.com>
Mon, 2 Feb 2015 06:24:44 +0000 (14:24 +0800)
committerHaitao Feng <haitao.feng@intel.com>
Tue, 3 Feb 2015 09:48:45 +0000 (17:48 +0800)
commitdd9943d4466b052ef6c5ee5b32187adb48cbce74
treeea1651e8990706b62e9d1375f635c6ec5d6066fd
parent28acb6feb50951645c37c077bd3897ea760ca322
ART: checkpoint mechanism optimization

GC thread and trim thread are both using checkpoint mechanism. GC thread
will request java threads to mark their thread roots by themselves. Trim
thread will request java threads to trim their jni local reference
tables by themselves.

The checkpint mechanism semantics is that the runnable java threads will
run checkpoint function itself at safepoint, and finally the java
threads and gc thread or trim thread is synchronized via barrier. If the
java threads are not runnable, gc thread or trim thread will suspend
them and then run their checkpoint functions one by one on behalf of
them. If all the java threads are not runnable, then gc thread or trim
thread will do all the work itself. In this case, there is no need
synchronization. This will save unnecessary synchronization and thread
state transitions.

Change-Id: If55940946cb3f8b1af42c7237c334f09c8ec7a9f
runtime/gc/collector/concurrent_copying.cc
runtime/gc/collector/mark_sweep.cc
runtime/gc/heap.cc
runtime/thread_list.cc