<feed xmlns='http://www.w3.org/2005/Atom'>
<title>android_dalvik/vm/Intern.c, 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/mirrors/LineageOS/android_dalvik/'/>
<entry>
<title>Move the remaining non-compiler VM code into C++.</title>
<updated>2011-04-16T04:18:10+00:00</updated>
<author>
<name>Carl Shapiro</name>
<email>cshapiro@google.com</email>
</author>
<published>2011-04-16T01:38:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=d5c36b9040bd26a81219a7f399513526f9b46324'/>
<id>d5c36b9040bd26a81219a7f399513526f9b46324</id>
<content type='text'>
Change-Id: Id8693208d2741c55a7b0474d1264f2112019d11f
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: Id8693208d2741c55a7b0474d1264f2112019d11f
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix implicit conversions, rename reserved works, enable -Wc++-compat.</title>
<updated>2010-12-07T19:43:38+00:00</updated>
<author>
<name>Carl Shapiro</name>
<email>cshapiro@google.com</email>
</author>
<published>2010-12-07T19:43:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=fc75f3ed87b55d625b6054e18645da5cbdba31c6'/>
<id>fc75f3ed87b55d625b6054e18645da5cbdba31c6</id>
<content type='text'>
Change-Id: I06292964a6882ea2d0c17c5c962db95e46b01543
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change-Id: I06292964a6882ea2d0c17c5c962db95e46b01543
</pre>
</div>
</content>
</entry>
<entry>
<title>Drive all root scanning by the root visitor.</title>
<updated>2010-12-03T00:16:01+00:00</updated>
<author>
<name>Carl Shapiro</name>
<email>cshapiro@google.com</email>
</author>
<published>2010-12-03T00:16:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=6d4ce5e7162ae14638d1b094b44e60fb931c64ea'/>
<id>6d4ce5e7162ae14638d1b094b44e60fb931c64ea</id>
<content type='text'>
The root visitor has been used by the concurrent collector during the
re-mark phase.  This change makes both the initial mark use the same
visitor routine and obsoletes all of the one-off markers scattered
throughout the runtime sources.

Change-Id: I08ea86d875f235cc628754240ad30ea5dfe2ce70
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The root visitor has been used by the concurrent collector during the
re-mark phase.  This change makes both the initial mark use the same
visitor routine and obsoletes all of the one-off markers scattered
throughout the runtime sources.

Change-Id: I08ea86d875f235cc628754240ad30ea5dfe2ce70
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix class loader interning following a String.intern.</title>
<updated>2010-10-20T03:28:37+00:00</updated>
<author>
<name>Carl Shapiro</name>
<email>cshapiro@google.com</email>
</author>
<published>2010-10-20T00:27:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=2e3ec7160b265d520cd755f8c20163410d822373'/>
<id>2e3ec7160b265d520cd755f8c20163410d822373</id>
<content type='text'>
Strings can be intered by the class loader, in the case of string
literals, or by the user, through String.intern.  Literal strings
exist for the life of their referencing classes.  User strings are
weak and may be garbage collected when unreferenced.  These two
classes of strings are kept in seprate tables for the conveniance of
the garbage collector during root traversal.

When a class loader interns a string that was already interned by the
user the runtime must move the string from the intern table to the
literal table to increase the reference strength.  Previously, this
was implemented by inserting the incoming string into the literal
table and removing any matching strings in the intern table.  This
transition lost pointer equality.  With this change we first insert
the exact string from the intern table into the literal table and
secondly remove its reference from the intern table.  By moving the
string between tables pointer equality is preserved.

At this point lookupInternedString should be split into two functions,
possibly by pulled up the relevant bits into the public interface
functions.  Since this change will be merged to gingerbread I will
leave the clean up to a separate change.

Bug: 3098960
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Strings can be intered by the class loader, in the case of string
literals, or by the user, through String.intern.  Literal strings
exist for the life of their referencing classes.  User strings are
weak and may be garbage collected when unreferenced.  These two
classes of strings are kept in seprate tables for the conveniance of
the garbage collector during root traversal.

When a class loader interns a string that was already interned by the
user the runtime must move the string from the intern table to the
literal table to increase the reference strength.  Previously, this
was implemented by inserting the incoming string into the literal
table and removing any matching strings in the intern table.  This
transition lost pointer equality.  With this change we first insert
the exact string from the intern table into the literal table and
secondly remove its reference from the intern table.  By moving the
string between tables pointer equality is preserved.

At this point lookupInternedString should be split into two functions,
possibly by pulled up the relevant bits into the public interface
functions.  Since this change will be merged to gingerbread I will
leave the clean up to a separate change.

Bug: 3098960
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement card table verification.</title>
<updated>2010-08-09T20:34:53+00:00</updated>
<author>
<name>Carl Shapiro</name>
<email>cshapiro@google.com</email>
</author>
<published>2010-08-07T00:07:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=5ba39376c5b7a5878f234a689a51c74783583b4b'/>
<id>5ba39376c5b7a5878f234a689a51c74783583b4b</id>
<content type='text'>
Card table verification occurs just before scanning the card table
during a concurrent GC.  Each object in the bitmap is visited and the
number of white (unmarked) references are counted.  If an object has
unmarked objects it is by definition gray and must reside on a dirty
card.  If the object is not on a dirty card, the verification routine
aborts the VM.

Because the processing of weak roots and references has yet to occur,
reachable reference objects with unmarked referents and weak interned
strings may still be gray.  These objects are checked during the card
table scan and ignored if their card is not dirty.

Change-Id: I64d145aa4719fb52eb9e3bb91efaf4dcfacd6e0c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Card table verification occurs just before scanning the card table
during a concurrent GC.  Each object in the bitmap is visited and the
number of white (unmarked) references are counted.  If an object has
unmarked objects it is by definition gray and must reside on a dirty
card.  If the object is not on a dirty card, the verification routine
aborts the VM.

Because the processing of weak roots and references has yet to occur,
reachable reference objects with unmarked referents and weak interned
strings may still be gray.  These objects are checked during the card
table scan and ignored if their card is not dirty.

Change-Id: I64d145aa4719fb52eb9e3bb91efaf4dcfacd6e0c
</pre>
</div>
</content>
</entry>
<entry>
<title>New string intern table without immortal bits.</title>
<updated>2010-07-22T21:36:24+00:00</updated>
<author>
<name>Carl Shapiro</name>
<email>cshapiro@google.com</email>
</author>
<published>2010-07-21T21:49:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=bb1e0e904b8dc159ad6ca680419b00c5938cd2b8'/>
<id>bb1e0e904b8dc159ad6ca680419b00c5938cd2b8</id>
<content type='text'>
The old implementation of the intern table stole the lsb to denote
that a string was "immortal" meaning that it was loaded from a dex
file.  Before clients can use strings from this table they must be
aware of the bit and clear it before chasing the pointer.

The new intern table separates strings that are interned by a call to
String.intern and strings that are interned by the class loader.  This
adds a small cost to each intern call.  Fortunately, there is a
payback in the garbage collector as we can scan just the literal
strings during root marking and scan just the user interned strings
before sweeping to clear them.  Also we no longer have to special case
walking through reference-containing locations in the intern table.

Change-Id: I1192fdcc99e1bb2c606f74f54b3056ec60b6f39b
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The old implementation of the intern table stole the lsb to denote
that a string was "immortal" meaning that it was loaded from a dex
file.  Before clients can use strings from this table they must be
aware of the bit and clear it before chasing the pointer.

The new intern table separates strings that are interned by a call to
String.intern and strings that are interned by the class loader.  This
adds a small cost to each intern call.  Fortunately, there is a
payback in the garbage collector as we can scan just the literal
strings during root marking and scan just the user interned strings
before sweeping to clear them.  Also we no longer have to special case
walking through reference-containing locations in the intern table.

Change-Id: I1192fdcc99e1bb2c606f74f54b3056ec60b6f39b
</pre>
</div>
</content>
</entry>
<entry>
<title>auto import from //depot/cupcake/@135843</title>
<updated>2009-03-04T03:28:47+00:00</updated>
<author>
<name>The Android Open Source Project</name>
<email>initial-contribution@android.com</email>
</author>
<published>2009-03-04T03:28:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=f6c387128427e121477c1b32ad35cdcaa5101ba3'/>
<id>f6c387128427e121477c1b32ad35cdcaa5101ba3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>auto import from //depot/cupcake/@135843</title>
<updated>2009-03-04T02:28:14+00:00</updated>
<author>
<name>The Android Open Source Project</name>
<email>initial-contribution@android.com</email>
</author>
<published>2009-03-04T02:28:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=f72d5de56a522ac3be03873bdde26f23a5eeeb3c'/>
<id>f72d5de56a522ac3be03873bdde26f23a5eeeb3c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Initial Contribution</title>
<updated>2008-10-21T14:00:00+00:00</updated>
<author>
<name>The Android Open Source Project</name>
<email>initial-contribution@android.com</email>
</author>
<published>2008-10-21T14:00:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/mirrors/LineageOS/android_dalvik/commit/?id=2ad60cfc28e14ee8f0bb038720836a4696c478ad'/>
<id>2ad60cfc28e14ee8f0bb038720836a4696c478ad</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
