<feed xmlns='http://www.w3.org/2005/Atom'>
<title>art/runtime/jdwp/object_registry.h, branch cm-13.0</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/art/'/>
<entry>
<title>JDWP: more GC safety</title>
<updated>2015-05-18T08:20:08+00:00</updated>
<author>
<name>Sebastien Hertz</name>
<email>shertz@google.com</email>
</author>
<published>2015-04-08T07:36:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/art/commit/?id=6650075fb831379d24cfafc3d56442e742418688'/>
<id>6650075fb831379d24cfafc3d56442e742418688</id>
<content type='text'>
Ensures GC safety when keeping references that may be moved by GC:
- SingleStepControl: stores ArtMethod* in a GcRoot
- ModBasket: stores references in a StackHandleScope

Bug: 18166750

(cherry picked from commit 261bc044a3575512869586593e99e97cd8b1c321)

Change-Id: I35971a901537956739d1f089d61cb4ea9dc6c93d
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Ensures GC safety when keeping references that may be moved by GC:
- SingleStepControl: stores ArtMethod* in a GcRoot
- ModBasket: stores references in a StackHandleScope

Bug: 18166750

(cherry picked from commit 261bc044a3575512869586593e99e97cd8b1c321)

Change-Id: I35971a901537956739d1f089d61cb4ea9dc6c93d
</pre>
</div>
</content>
</entry>
<entry>
<title>JDWP: fix thread_list deadlock</title>
<updated>2015-04-08T10:13:28+00:00</updated>
<author>
<name>Sebastien Hertz</name>
<email>shertz@google.com</email>
</author>
<published>2015-04-07T13:54:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/art/commit/?id=692063955ae845d8bd9fa2d22a50a1e06513bdcf'/>
<id>692063955ae845d8bd9fa2d22a50a1e06513bdcf</id>
<content type='text'>
Limits the scope of Locks::thread_list_lock_ locking in the debugger
so we do not try to lock it twice when creating a JDWP id (because
calling Object::IdentityHashCode may need to take the lock).

Bug: 20048099
Change-Id: I305dd72ccc4d2d007d1603b0d52bcfa94b6842a7
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Limits the scope of Locks::thread_list_lock_ locking in the debugger
so we do not try to lock it twice when creating a JDWP id (because
calling Object::IdentityHashCode may need to take the lock).

Bug: 20048099
Change-Id: I305dd72ccc4d2d007d1603b0d52bcfa94b6842a7
</pre>
</div>
</content>
</entry>
<entry>
<title>Make ObjectRegistry::InternalAdd GC safe</title>
<updated>2014-10-23T14:31:58+00:00</updated>
<author>
<name>Sebastien Hertz</name>
<email>shertz@google.com</email>
</author>
<published>2014-10-23T13:39:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/art/commit/?id=e2d628b5b0a1b9c29c173f3cbad3ef6cb6c24d2d'/>
<id>e2d628b5b0a1b9c29c173f3cbad3ef6cb6c24d2d</id>
<content type='text'>
Because a call to IdentityHashCode may cause GC, the object pointer
may become invalid (if the object has been moved) on next uses. We
now access the object through a Handle to be GC safe.

Also remove unused methods.

Bug: 18098424
Change-Id: I38fb55c3a6be62c4d98d4c94272a9cfeba327598
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Because a call to IdentityHashCode may cause GC, the object pointer
may become invalid (if the object has been moved) on next uses. We
now access the object through a Handle to be GC safe.

Also remove unused methods.

Bug: 18098424
Change-Id: I38fb55c3a6be62c4d98d4c94272a9cfeba327598
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix deadlock in VirtualMachine.AllThreads</title>
<updated>2014-09-11T09:59:12+00:00</updated>
<author>
<name>Sebastien Hertz</name>
<email>shertz@google.com</email>
</author>
<published>2014-09-09T10:08:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/art/commit/?id=070f732bc270f6b9a579838d3418eb13b9cdf8ff'/>
<id>070f732bc270f6b9a579838d3418eb13b9cdf8ff</id>
<content type='text'>
We cannot add any object in the JDWP object registry while holding the
Locks::thread_list_lock. Indeed we may need to suspend a thread and take it,
causing a deadlock by waiting for ourself on this lock.

Bug: 17343664

(cherry picked from commit d35776413901a6a9d478e06dc354ea4f7d962e04)

Change-Id: I07d150b95a6d2b62c913bf2ca2ac217911b2f19d
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We cannot add any object in the JDWP object registry while holding the
Locks::thread_list_lock. Indeed we may need to suspend a thread and take it,
causing a deadlock by waiting for ourself on this lock.

Bug: 17343664

(cherry picked from commit d35776413901a6a9d478e06dc354ea4f7d962e04)

Change-Id: I07d150b95a6d2b62c913bf2ca2ac217911b2f19d
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't hold any lock when visiting classes from JDWP</title>
<updated>2014-09-11T09:37:43+00:00</updated>
<author>
<name>Sebastien Hertz</name>
<email>shertz@google.com</email>
</author>
<published>2014-08-28T12:41:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/art/commit/?id=4537c41b9a58c2280b3ad8bcf0130ed11c7a54f6'/>
<id>4537c41b9a58c2280b3ad8bcf0130ed11c7a54f6</id>
<content type='text'>
Computes reference type ids of all loaded classes without holding the class
linker lock. Because computing the JDWP reference type id can cause thread
suspension, we can't hold any lock. This is detected in debug build (using
libartd.so) and causes an abort.

Also adds missing thread safety annotations related to ObjectRegistry::lock_.

Bug: 17305632
Bug: 16720689

(cherry picked from commit 95795e286145a4aece5c4a095fa2e7e88ee2115a)

Change-Id: If4fb069790a0a3358ad49da8f75c62a54c0f0b56
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Computes reference type ids of all loaded classes without holding the class
linker lock. Because computing the JDWP reference type id can cause thread
suspension, we can't hold any lock. This is detected in debug build (using
libartd.so) and causes an abort.

Also adds missing thread safety annotations related to ObjectRegistry::lock_.

Bug: 17305632
Bug: 16720689

(cherry picked from commit 95795e286145a4aece5c4a095fa2e7e88ee2115a)

Change-Id: If4fb069790a0a3358ad49da8f75c62a54c0f0b56
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove abuse of mirror::Object* to reference special values.</title>
<updated>2014-09-04T00:15:54+00:00</updated>
<author>
<name>Ian Rogers</name>
<email>irogers@google.com</email>
</author>
<published>2014-09-03T23:16:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/art/commit/?id=c0542af3e2170143ba40d89136e284997e16bf64'/>
<id>c0542af3e2170143ba40d89136e284997e16bf64</id>
<content type='text'>
Remove kInvalidIndirectRefObject, kClearedJniWeakGlobal and
ObjectRegistry::kInvalidObject. Handle error conditions by passing in or
returning an error value.
GetObjectRefType is simplified to be faster and not return invalid references
that are not expected according to the spec. Adjust check JNI and
jni_internal_test appropriately.
Fix cases in the debugger/JDWP of out arguments being passed by reference.
Bug: 17376993

Change-Id: I3ce8a28c01827e163f4dc288449959464da788b1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove kInvalidIndirectRefObject, kClearedJniWeakGlobal and
ObjectRegistry::kInvalidObject. Handle error conditions by passing in or
returning an error value.
GetObjectRefType is simplified to be faster and not return invalid references
that are not expected according to the spec. Adjust check JNI and
jni_internal_test appropriately.
Fix cases in the debugger/JDWP of out arguments being passed by reference.
Bug: 17376993

Change-Id: I3ce8a28c01827e163f4dc288449959464da788b1
</pre>
</div>
</content>
</entry>
<entry>
<title>Break apart header files.</title>
<updated>2014-07-16T00:07:49+00:00</updated>
<author>
<name>Ian Rogers</name>
<email>irogers@google.com</email>
</author>
<published>2014-07-15T22:36:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/art/commit/?id=e63db27db913f1a88e2095a1ee8239b2bb9124e8'/>
<id>e63db27db913f1a88e2095a1ee8239b2bb9124e8</id>
<content type='text'>
Create libart-gtest for common runtime and compiler gtest routines.
Rename CompilerCallbacksImpl that is quick compiler specific.
Rename trace clock source constants to not use the overloaded profiler term.

Change-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Create libart-gtest for common runtime and compiler gtest routines.
Rename CompilerCallbacksImpl that is quick compiler specific.
Rename trace clock source constants to not use the overloaded profiler term.

Change-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove Object* weak roots from the debugger.</title>
<updated>2014-06-11T21:46:13+00:00</updated>
<author>
<name>Hiroshi Yamauchi</name>
<email>yamauchi@google.com</email>
</author>
<published>2014-06-09T19:11:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/art/commit/?id=b5a9e3d1cc1fd66683e43e365afc8c900e2800c4'/>
<id>b5a9e3d1cc1fd66683e43e365afc8c900e2800c4</id>
<content type='text'>
The weak roots were converted to JNI weak refs.

Since the weak roots are now normal JNI weak refs, we eliminate the
need to insert read barriers for those weak roots in the debugger and
the need for the GC to have a separate step to update them as part of
the system weak sweeping.

Bug: 12687968
Change-Id: If16396d4713457b8af4f1ea6a0c6ec6799cb615e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The weak roots were converted to JNI weak refs.

Since the weak roots are now normal JNI weak refs, we eliminate the
need to insert read barriers for those weak roots in the debugger and
the need for the GC to have a separate step to update them as part of
the system weak sweeping.

Bug: 12687968
Change-Id: If16396d4713457b8af4f1ea6a0c6ec6799cb615e
</pre>
</div>
</content>
</entry>
<entry>
<title>Add root types and thread id to root visiting.</title>
<updated>2014-02-11T18:40:10+00:00</updated>
<author>
<name>Mathieu Chartier</name>
<email>mathieuc@google.com</email>
</author>
<published>2014-01-28T22:50:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/art/commit/?id=83c8ee000d525017ead8753fce6bc1020249b96a'/>
<id>83c8ee000d525017ead8753fce6bc1020249b96a</id>
<content type='text'>
Enables us to pass the root type and thread id to hprof.

Bug: 12680863
Change-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Enables us to pass the root type and thread id to hprof.

Bug: 12680863
Change-Id: I6a0f1f9e3aa8f9b4033d695818ae7ca3460d67cb
</pre>
</div>
</content>
</entry>
<entry>
<title>Make debugger / jdwp compaction safe.</title>
<updated>2014-02-08T23:23:36+00:00</updated>
<author>
<name>Mathieu Chartier</name>
<email>mathieuc@google.com</email>
</author>
<published>2014-02-07T20:18:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/art/commit/?id=412c7fced915fc8d4d5e4166e977d55c809168a6'/>
<id>412c7fced915fc8d4d5e4166e977d55c809168a6</id>
<content type='text'>
Fixed GetInstances, GetReferringObjects, CountInstances to use
VisitObjects instead of the live bitmap.

We now treat the object registry as system weaks and update the
objects when/if they move. Also added the recent_allocation_records_
as roots.

Bug: 12936165

Change-Id: I615c289efbf2977ceab5c4ffa73d216d799e6e33
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixed GetInstances, GetReferringObjects, CountInstances to use
VisitObjects instead of the live bitmap.

We now treat the object registry as system weaks and update the
objects when/if they move. Also added the recent_allocation_records_
as roots.

Bug: 12936165

Change-Id: I615c289efbf2977ceab5c4ffa73d216d799e6e33
</pre>
</div>
</content>
</entry>
</feed>
