aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClay Murphy <claym@google.com>2014-10-16 19:00:15 -0700
committerClay Murphy <claym@google.com>2014-10-30 15:36:04 -0700
commite4edda6a834a8cccfc4db0ab5d0b790cd4255536 (patch)
treed76545bc7ae65dae9aa060ef53232c46e09109dc
parent703d1136ca2698a432d93bd1ee07062958d7c69b (diff)
downloadsource.android.com-e4edda6a834a8cccfc4db0ab5d0b790cd4255536.tar.gz
Docs: Adding ART references to Dalvik
Bug: 16631982 Change-Id: I6ee6c31349daf56f34d123322c67ea96722c4db0
-rw-r--r--src/compatibility/cts-intro.jd4
-rw-r--r--src/devices/devices_toc.cs3
-rw-r--r--src/devices/tech/dalvik/art.jd244
-rw-r--r--src/devices/tech/dalvik/dalvik-bytecode.jd26
-rw-r--r--src/devices/tech/dalvik/dex-format.jd140
-rw-r--r--src/devices/tech/dalvik/index.jd152
-rw-r--r--src/devices/tech/dalvik/instruction-formats.jd30
-rw-r--r--src/devices/tech/index.jd12
-rw-r--r--src/devices/tech/security/index.jd8
-rw-r--r--src/source/code-lines.jd2
-rw-r--r--src/source/faqs.jd2
-rw-r--r--src/source/report-bugs.jd2
12 files changed, 261 insertions, 364 deletions
diff --git a/src/compatibility/cts-intro.jd b/src/compatibility/cts-intro.jd
index 2813aef8..f489fc63 100644
--- a/src/compatibility/cts-intro.jd
+++ b/src/compatibility/cts-intro.jd
@@ -2,7 +2,7 @@ page.title=Compatibility Test Suite
@jd:body
<!--
- Copyright 2013 The Android Open Source Project
+ Copyright 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -140,7 +140,7 @@ to exercise a full set of APIs and Android runtime services.</p>
</tr>
<tr>
<td>Dalvik VM Tests</td>
-<td>The tests focus on testing the Dalvik VM.</td>
+<td>The tests focus on testing the Dalvik Executable Format.</td>
</tr>
<tr>
<td>Platform Data Model</td>
diff --git a/src/devices/devices_toc.cs b/src/devices/devices_toc.cs
index 93da9f4f..52363a52 100644
--- a/src/devices/devices_toc.cs
+++ b/src/devices/devices_toc.cs
@@ -254,13 +254,12 @@
<li class="nav-section">
<div class="nav-section-header">
<a href="<?cs var:toroot ?>devices/tech/dalvik/index.html">
- <span class="en">Dalvik</span></a>
+ <span class="en">ART and Dalvik</span></a>
</div>
<ul>
<li><a href="<?cs var:toroot ?>devices/tech/dalvik/dalvik-bytecode.html">Bytecode Format</a></li>
<li><a href="<?cs var:toroot ?>devices/tech/dalvik/dex-format.html">.Dex Format</a></li>
<li><a href="<?cs var:toroot ?>devices/tech/dalvik/instruction-formats.html">Instruction Formats</a></li>
- <li><a href="<?cs var:toroot ?>devices/tech/dalvik/art.html">Introducing ART</a></li>
</ul>
</li>
diff --git a/src/devices/tech/dalvik/art.jd b/src/devices/tech/dalvik/art.jd
deleted file mode 100644
index 33a82ed8..00000000
--- a/src/devices/tech/dalvik/art.jd
+++ /dev/null
@@ -1,244 +0,0 @@
-page.title=Introducing ART
-@jd:body
-
-<!--
- Copyright 2013 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-
-<div id="qv-wrapper">
-<div id="qv">
- <h2 id="Contents">In this document</h2>
- <ol id="auto-toc">
- </ol>
- <strong>See also</strong>
- <ol>
- <li><a
- href="http://developer.android.com/guide/practices/verifying-apps-art.html">Verifying
- App Behavior on the Android Runtime (ART)</a></li>
- </ol>
-</div>
-</div>
-
-<p>
-ART is a new Android runtime being introduced experimentally in the 4.4
-release. This is a preview of work in progress in KitKat that can be turned on
-in <strong>Settings</strong> &gt; <strong>developer options</strong>. This is
-available for the purpose of obtaining early developer and partner feedback.</p>
-
-<p class="caution"><strong>Important:</strong> Dalvik must remain the default
-runtime or you risk breaking your Android implementations and third-party
-applications.</p>
-
-<p>Most existing apps should just work when running with ART. However, some
-techniques that work on Dalvik do not work on ART. For information about the
-most important issues, see <a
-href="http://developer.android.com/guide/practices/verifying-apps-art.html">Verifying
-App Behavior on the Android Runtime (ART)</a>.</p>
-
-<h2 id="features">ART Features</h2>
-
-<p>Here are some of the major new features implemented by ART.</p>
-
-<h3 id="AOT_compilation">Ahead-of-time (AOT) compilation</h3>
-
-<p>ART introduces ahead-of-time (AOT) compilation, which can improve app
-performance. ART also has tighter install-time verification than Dalvik.</p>
-
-<p>At install time, ART compiles apps using the on-device
-<strong>dex2oat</strong> tool. This utility accepts <a
-href="http://source.android.com/devices/tech/dalvik/dex-format.html">DEX</a> files as input and
-generates a compiled app executable for the target device. The utility should be
-able to compile all valid DEX files without difficulty. However, some
-post-processing tools produce invalid files that may be tolerated by Dalvik but
-cannot be compiled by ART. For more information, see <a
-href="http://developer.android.com/guide/practices/verifying-apps-art.html#GC_Migration">Addressing
-Garbage Collection Issues</a>.</p>
-
-<h3 id="Improved_GC">Improved garbage collection</h3>
-
-<p>Garbage collection (GC) can impair an app's performance, resulting in choppy
-display, poor UI responsiveness, and other problems. ART improves garbage
-collection in several ways:</p>
-
-<ul>
- <li>One GC pause instead of two</li>
- <li>Parallelized processing during the remaining GC pause</li>
- <li>Collector with lower pause time for the special case of cleaning up
- recently-allocated, short-lived objects</li>
- <li>Improved garbage collection ergonomics, making concurrent garbage
- collections more timely, which makes <a
- href="http://developer.android.com/tools/debugging/debugging-memory.html#LogMessages"><code>GC_FOR_ALLOC</code></a>
- events extremely rare in typical use cases</li>
-</ul>
-
-<p>ART currently does not use compacting GC, but this feature is under
-development in the <a href="https://source.android.com">Android Open Source
-Project (AOSP)</a>. In the meantime, don't perform operations that are
-incompatible with compacting GC, such as storing pointers to object fields. For
-more information, see <a
-href="http://developer.android.com/guide/practices/verifying-apps-art.html#GC_Migration">Addressing
-Garbage Collection Issues</a>.</p>
-
-<h3 id="Debugging_Imp">Development and debugging improvements</h3>
-
-<p>ART offers a number of features to improve app development and debugging.</p>
-
-<h4 id="Sampling_Profiler">Support for sampling profiler</h4>
-
-<p>Historically, developers have used the <a
-href=" http://developer.android.com/tools/help/traceview.html">Traceview</a>
-tool (designed for tracing
-application execution) as a profiler. While Traceview gives useful information,
-its results on Dalvik have been skewed by the per-method-call overhead, and use
-of the tool noticeably affects run time performance.</p>
-
-<p>ART adds support for a dedicated sampling profiler that does not have these
-limitations. This gives a more accurate view of app execution without
-significant slowdown. Sampling support has also been added to Traceview for
-Dalvik.</p>
-
-<h4 id="Debugging_Features">Support for more debugging features</h4>
-
-<p>ART supports a number of new debugging options, particularly in monitor- and
-garbage collection-related functionality. For example, you can:</p>
-
-<ul>
- <li>See what locks are held in stack traces, then jump to the thread that
- holds a lock.</li>
- <li>Ask how many live instances there are of a given class, ask to see the
- instances, and see what references are keeping an object live.</li>
- <li>Filter events (like breakpoint) for a specific instance.</li>
- <li>See the value returned by a method when it exits (using “method-exit”
- events).</li>
- <li>Set field watchpoint to suspend the execution of a program when a specific
- field is accessed and/or modified.</li>
-</ul>
-
-<h4 id="Crash_Reports">Improved diagnostic detail in exceptions and crash reports</h4>
-
-<p>ART gives you as much context and detail as possible when runtime exceptions
-occur. ART provides expanded exception detail for <code><a
-href="http://developer.android.com/reference/java/lang/ClassCastException.html">java.lang.ClassCastException</a></code>,
-<code><a
-href="http://developer.android.com/reference/java/lang/ClassNotFoundException.html">java.lang.ClassNotFoundException</a></code>,
-and <code><a
-href="http://developer.android.com/reference/java/lang/NullPointerException.html">java.lang.NullPointerException</a></code>.
-(Later versions of Dalvik provided expanded exception detail for <code><a
-href="http://developer.android.com/reference/java/lang/ArrayIndexOutOfBoundsException.html">java.lang.ArrayIndexOutOfBoundsException</a></code>
-and <code><a
-href="http://developer.android.com/reference/java/lang/ArrayStoreException.html">java.lang.ArrayStoreException</a></code>,
-which now include the size of the array and the out-of-bounds offset, and ART
-does this as well.)</p>
-
-<p>For example, <code><a
-href="http://developer.android.com/reference/java/lang/NullPointerException.html">java.lang.NullPointerException</a></code>
-now shows information about what the app was trying to do with the null pointer,
-such as the field the app was trying to write to, or the method it was trying to
-call. Here are some typical examples:</p>
-
-<pre class="no-pretty-print">
-java.lang.NullPointerException: Attempt to write to field 'int
-android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object
-reference</pre>
-
-<pre class="no-pretty-print">
-java.lang.NullPointerException: Attempt to invoke virtual method
-'java.lang.String java.lang.Object.toString()' on a null object reference</pre>
-
-<p>ART also provides improved context information in app native crash reports,
-by including both Java and native stack information. </p>
-
-<h2 id="Known_Issues">Known Issues</h2>
-
-<p>The following known issues are present in the 4.4.1 implementation of ART.</p>
-
-<ul>
-
- <li><em>Compile-time issue:</em> As noted above, ART flags unbalanced
- <code>monitorenter</code>/<code>moniterexit</code> instructions. We relaxed
- this check in 4.4.1 but intend to restore this verification in the future once
- tools are fixed, as this check is necessary for certain compiler
- optimizations. <a
- href="https://code.google.com/p/android/issues/detail?id=61916">https://code.google.com/p/android/issues/detail?id=61916</a></li>
-
- <li><em>Run-time issue:</em> There was an issue where JNI
- <code>GetFieldID</code> and <code>GetStaticFieldID</code> were using the wrong
- class loader on unattached threads, often leading to later CheckJNI errors or
- NoSuchFieldError exceptions. <a
- href="http://code.google.com/p/android/issues/detail?id=63970">http://code.google.com/p/android/issues/detail?id=63970</a></li>
-
- <li><em>Run-time issue:</em> Calling JNI <code>NewDirectByteBuffer()</code>
- with byte size of <code>0</code> led to the following CheckJNI error: <pre
- class="no-pretty-print"> JNI DETECTED ERROR IN APPLICATION: capacity must be
- greater than 0: 0</pre> <a
- href="http://code.google.com/p/android/issues/detail?id=63055">http://code.google.com/p/android/issues/detail?id=63055</a></li>
-
-</ul>
-
-<h3 id="Fixed_Issues">Fixed issues</h3>
-
-<ul>
-
- <li><em>Compile-time issue:</em> Overly aggressive verification and
- compilation of unused portions of dex files lead to corrupt package messages.
- This was addressed in AOSP with: <a
- href="https://android-review.googlesource.com/#/c/72374/">https://android-review.googlesource.com/#/c/72374/</a></li>
-
- <li><em>Debug-time issue:</em> Interactive debugging performance was slow,
- even in code without breakpoints. This has been addressed in the latest AOSP
- code.</li>
-
-</ul>
-
-<h2 id="building">Enabling ART in Android Build</h2>
-
-<p> Two runtimes are now available, the existing Dalvik runtime
-(<code>libdvm.so</code>) and the ART runtime (<code>libart.so</code>). A device
-can be built using either or both runtimes. (You can dual boot from
-<strong>Developer options</strong> if both runtimes are installed.) See
-runtime_common.mk. That is included from build/target/product/runtime_libdvm.mk
-or build/target/product/runtime_libart.mk or both.</p>
-
-<p> The <code>dalvikvm</code> command line tool can run with either runtime now.
-It will default to using the runtime specified in <strong>developer
-options</strong>. The default can be overridden by specifying the desired
-runtime library, for example with <code>-XXlib:libart.so</code> </p>
-
-<p>
-A new <code>PRODUCT_RUNTIMES</code> variable controls which runtimes
-are included in a build. Include it within either
-<code>build/target/product/core_minimal.mk</code> or
-<code>build/target/product/core_base.mk</code>.
-</p>
-
-<p>
-Add this to the device makefile to have both runtimes
-built and installed, with Dalvik as the default:
-</br>
-<code>PRODUCT_RUNTIMES := runtime_libdvm_default</code>
-</br>
-<code>PRODUCT_RUNTIMES += runtime_libart</code>
-</p>
-
-<h2 id="Reporting_Problems">Reporting Problems</h2>
-
-<p>If you run into any issues that aren’t due to app JNI issues, please report
-them via the Android Open Source Project Issue Tracker at <a
-href="https://code.google.com/p/android/issues/list">https://code.google.com/p/android/issues/list</a>.
-Please include an <code>"adb bugreport"</code> and link to the app in Google
-Play store if available. Otherwise, if possible, attach an APK that reproduces
-the issue. Please note that issues (including attachments) are publicly
-visible.</p>
diff --git a/src/devices/tech/dalvik/dalvik-bytecode.jd b/src/devices/tech/dalvik/dalvik-bytecode.jd
index 8d4f52bf..1b9b9e3b 100644
--- a/src/devices/tech/dalvik/dalvik-bytecode.jd
+++ b/src/devices/tech/dalvik/dalvik-bytecode.jd
@@ -1,8 +1,8 @@
-page.title=Bytecode for the Dalvik VM
+page.title=Dalvik bytecode
@jd:body
<!--
- Copyright 2013 The Android Open Source Project
+ Copyright 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,13 +16,21 @@ page.title=Bytecode for the Dalvik VM
See the License for the specific language governing permissions and
limitations under the License.
-->
-<h2>General Design</h2>
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>In this document</h2>
+ <ol id="auto-toc">
+ </ol>
+ </div>
+</div>
+
+<h2 id="design">General design</h2>
<ul>
<li>The machine model and calling conventions are meant to approximately
imitate common real architectures and C-style calling conventions:
<ul>
- <li>The VM is register-based, and frames are fixed in size upon creation.
+ <li>The machine is register-based, and frames are fixed in size upon creation.
Each frame consists of a particular number of registers (specified by
the method) as well as any adjunct data needed to execute the method,
such as (but not limited to) the program counter and a reference to the
@@ -149,7 +157,7 @@ page.title=Bytecode for the Dalvik VM
</li>
</ul>
-<h2>Summary of Instruction Set</h2>
+<h2 id="instructions">Summary of bytecode set</h2>
<table class="instruc">
<thead>
@@ -987,7 +995,7 @@ page.title=Bytecode for the Dalvik VM
</tbody>
</table>
-<h2>packed-switch-payload Format</h2>
+<h2 id="packed-switch">packed-switch-payload format</h2>
<table class="supplement">
<thead>
@@ -1026,7 +1034,7 @@ page.title=Bytecode for the Dalvik VM
<p><b>Note:</b> The total number of code units for an instance of this
table is <code>(size * 2) + 4</code>.</p>
-<h2>sparse-switch-payload Format</h2>
+<h2 id="sparse-switch">sparse-switch-payload format</h2>
<table class="supplement">
<thead>
@@ -1066,7 +1074,7 @@ table is <code>(size * 2) + 4</code>.</p>
<p><b>Note:</b> The total number of code units for an instance of this
table is <code>(size * 4) + 2</code>.</p>
-<h2>fill-array-data-payload Format</h2>
+<h2 id="fill-array">fill-array-data-payload format</h2>
<table class="supplement">
<thead>
@@ -1104,7 +1112,7 @@ table is <code>(size * 4) + 2</code>.</p>
table is <code>(size * element_width + 1) / 2 + 4</code>.</p>
-<h2>Mathematical Operation Details</h2>
+<h2 id="math">Mathematical operation details</h2>
<p><b>Note:</b> Floating point operations must follow IEEE 754 rules, using
round-to-nearest and gradual underflow, except where stated otherwise.</p>
diff --git a/src/devices/tech/dalvik/dex-format.jd b/src/devices/tech/dalvik/dex-format.jd
index 744eb86a..bd167fbe 100644
--- a/src/devices/tech/dalvik/dex-format.jd
+++ b/src/devices/tech/dalvik/dex-format.jd
@@ -1,4 +1,4 @@
-page.title=Dalvik Executable Format
+page.title=Dalvik Executable format
@jd:body
<!--
@@ -20,7 +20,7 @@ page.title=Dalvik Executable Format
files, which are used to hold a set of class definitions and their associated
adjunct data.</p>
-<h2>Guide To Types</h2>
+<h2 id="types">Guide to types</h2>
<table class="guide">
<thead>
@@ -77,7 +77,7 @@ adjunct data.</p>
</tbody>
</table>
-<h3>LEB128</h3>
+<h3 id="leb128">LEB128</h3>
<p>LEB128 ("<b>L</b>ittle-<b>E</b>ndian <b>B</b>ase <b>128</b>") is a
variable-length encoding for
@@ -157,7 +157,7 @@ values are unlikely to be needed).</p>
</tbody>
</table>
-<h2>Overall File Layout</h2>
+<h2 id="file-layout">File layout</h2>
<table class="format">
<thead>
@@ -256,9 +256,9 @@ values are unlikely to be needed).</p>
</tbody>
</table>
-<h2>Bitfield, String, and Constant Definitions</h2>
+<h2 id="definitions">Bitfield, string and constant definitions</h2>
-<h3>DEX_FILE_MAGIC</h3>
+<h3 id="dex-file-magic">DEX_FILE_MAGIC</h3>
<h4>embedded in header_item</h4>
<p>The constant array/string <code>DEX_FILE_MAGIC</code> is the list of
@@ -284,7 +284,7 @@ platform (February&ndash;March 2008). In several respects, these earlier
versions of the format differ significantly from the version described in this
document.</p>
-<h3>ENDIAN_CONSTANT and REVERSE_ENDIAN_CONSTANT</h3>
+<h3 id="endian-constant">ENDIAN_CONSTANT and REVERSE_ENDIAN_CONSTANT</h3>
<h4>embedded in header_item</h4>
<p>The constant <code>ENDIAN_CONSTANT</code> is used to indicate the
@@ -300,7 +300,7 @@ uint ENDIAN_CONSTANT = 0x12345678;
uint REVERSE_ENDIAN_CONSTANT = 0x78563412;
</pre>
-<h3>NO_INDEX</h3>
+<h3 id="no-index">NO_INDEX</h3>
<h4>embedded in class_def_item and debug_info_item</h4>
<p>The constant <code>NO_INDEX</code> is used to indicate that
@@ -316,7 +316,7 @@ representable as a single byte in the <code>uleb128p1</code> encoding.</p>
uint NO_INDEX = 0xffffffff; // == -1 if treated as a signed int
</pre>
-<h3>access_flags Definitions</h3>
+<h3 id="access-flags">access_flags definitions</h3>
<h4>embedded in class_def_item, encoded_field, encoded_method, and
InnerClass</h4>
@@ -492,7 +492,7 @@ overall properties of classes and class members.</p>
<p><super>*</super> Only allowed on for <code>InnerClass</code> annotations,
and must not ever be on in a <code>class_def_item</code>.</p>
-<h3>MUTF-8 (Modified UTF-8) Encoding</h3>
+<h3 id="mutf-8">MUTF-8 (Modified UTF-8) Encoding</h3>
<p>As a concession to easier legacy support, the <code>.dex</code> format
encodes its string data in a de facto standard modified UTF-8 form, hereafter
@@ -531,7 +531,7 @@ MUTF-8 is actually closer to the (relatively less well-known) encoding
<a href="http://www.unicode.org/reports/tr26/">CESU-8</a> than to UTF-8
per se.</p>
-<h3>encoded_value Encoding</h3>
+<h3 id="encoding">encoded_value encoding</h3>
<h4>embedded in annotation_element and encoded_array_item </h4>
<p>An <code>encoded_value</code> is an encoded piece of (nearly)
@@ -573,7 +573,7 @@ be both compact and straightforward to parse.</p>
</tbody>
</table>
-<h3>Value Formats</h3>
+<h3 id="value-formats">Value formats</h3>
<table class="encodedValue">
<thead>
@@ -699,7 +699,7 @@ be both compact and straightforward to parse.</p>
<td><i>(none; must be <code>0</code>)</i></td>
<td>encoded_array</td>
<td>an array of values, in the format specified by
- "<code>encoded_array</code> Format" below. The size
+ "<code>encoded_array</code> format" below. The size
of the <code>value</code> is implicit in the encoding.
</td>
</tr>
@@ -709,7 +709,7 @@ be both compact and straightforward to parse.</p>
<td><i>(none; must be <code>0</code>)</i></td>
<td>encoded_annotation</td>
<td>a sub-annotation, in the format specified by
- "<code>encoded_annotation</code> Format" below. The size
+ "<code>encoded_annotation</code> format" below. The size
of the <code>value</code> is implicit in the encoding.
</td>
</tr>
@@ -733,7 +733,7 @@ be both compact and straightforward to parse.</p>
</tbody>
</table>
-<h3>encoded_array Format</h3>
+<h3 id="encoded-array">encoded_array format</h3>
<table class="format">
<thead>
@@ -760,7 +760,7 @@ be both compact and straightforward to parse.</p>
</tbody>
</table>
-<h3>encoded_annotation Format</h3>
+<h3 id="encoded-annotation">encoded_annotation format</h3>
<table class="format">
<thead>
@@ -794,7 +794,7 @@ be both compact and straightforward to parse.</p>
</tbody>
</table>
-<h3>annotation_element Format</h3>
+<h3 id="annotation-element">annotation_element format</h3>
<table class="format">
<thead>
@@ -821,13 +821,13 @@ be both compact and straightforward to parse.</p>
</tbody>
</table>
-<h2>String Syntax</h2>
+<h2 id="string-syntax">String syntax</h2>
<p>There are several kinds of item in a <code>.dex</code> file which
ultimately refer to a string. The following BNF-style definitions
indicate the acceptable syntax for these strings.</p>
-<h3><i>SimpleName</i></h3>
+<h3 id="simplename"><i>SimpleName</i></h3>
<p>A <i>SimpleName</i> is the basis for the syntax of the names of other
things. The <code>.dex</code> format allows a fair amount of latitude
@@ -896,7 +896,7 @@ encoding.</p>
</tr>
</table>
-<h3><i>MemberName</i></h3>
+<h3 id="membername"><i>MemberName</i></h3>
<h4>used by field_id_item and method_id_item</h4>
<p>A <i>MemberName</i> is the name of a member of a class, members being
@@ -914,7 +914,7 @@ fields, methods, and inner classes.</p>
</tr>
</table>
-<h3><i>FullClassName</i></h3>
+<h3 id="fullclassname"><i>FullClassName</i></h3>
<p>A <i>FullClassName</i> is a fully-qualified class name, including an
optional package specifier followed by a required name.</p>
@@ -933,7 +933,7 @@ optional package specifier followed by a required name.</p>
</tr>
</table>
-<h3><i>TypeDescriptor</i></h3>
+<h3 id="typedescriptor"><i>TypeDescriptor</i></h3>
<h4>used by type_id_item</h4>
<p>A <i>TypeDescriptor</i> is the representation of any type, including
@@ -1003,7 +1003,7 @@ the meaning of the various versions.</p>
</tr>
</table>
-<h3><i>ShortyDescriptor</i></h3>
+<h3 id="shortydescriptor"><i>ShortyDescriptor</i></h3>
<h4>used by proto_id_item</h4>
<p>A <i>ShortyDescriptor</i> is the short form representation of a method
@@ -1067,7 +1067,7 @@ all reference types are represented by a single <code>'L'</code> character.</p>
</tr>
</table>
-<h3><i>TypeDescriptor</i> Semantics</h3>
+<h3 id="typedescriptor"><i>TypeDescriptor</i> Semantics</h3>
<p>This is the meaning of each of the variants of <i>TypeDescriptor</i>.</p>
@@ -1129,12 +1129,12 @@ all reference types are represented by a single <code>'L'</code> character.</p>
</tbody>
</table>
-<h2>Items and Related Structures</h2>
+<h2 id="items">Items and related structures</h2>
<p>This section includes definitions for each of the top-level items that
may appear in a <code>.dex</code> file.
-<h3>header_item</h3>
+<h3 id="header-item">header_item</h3>
<h4>appears in the header section</h4>
<h4>alignment: 4 bytes</h4>
@@ -1317,7 +1317,7 @@ may appear in a <code>.dex</code> file.
</tbody>
</table>
-<h3>map_list</h3>
+<h3 id="map-list">map_list</h3>
<h4>appears in the data section</h4>
<h4>referenced from header_item</h4>
<h4>alignment: 4 bytes</h4>
@@ -1354,7 +1354,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>map_item Format</h3>
+<h3 id="map-item">map_item format</h3>
<table class="format">
<thead>
@@ -1389,7 +1389,7 @@ be ordered by initial offset and must not overlap.</p>
</table>
-<h3>Type Codes</h3>
+<h3 id="type-codes">Type Codes</h3>
<table class="typeCodes">
<thead>
@@ -1513,7 +1513,7 @@ be ordered by initial offset and must not overlap.</p>
</table>
-<h3>string_id_item</h3>
+<h3 id="string-item">string_id_item</h3>
<h4>appears in the string_ids section</h4>
<h4>alignment: 4 bytes</h4>
@@ -1539,7 +1539,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>string_data_item</h3>
+<h3 id="string-data-item">string_data_item</h3>
<h4>appears in the data section</h4>
<h4>alignment: none (byte-aligned)</h4>
@@ -1578,7 +1578,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>type_id_item</h3>
+<h3 id="type-id-item">type_id_item</h3>
<h4>appears in the type_ids section</h4>
<h4>alignment: 4 bytes</h4>
@@ -1602,7 +1602,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>proto_id_item</h3>
+<h3 id="proto-id-item">proto_id_item</h3>
<h4>appears in the proto_ids section</h4>
<h4>alignment: 4 bytes</h4>
@@ -1645,7 +1645,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>field_id_item</h3>
+<h3 id="field-id-item">field_id_item</h3>
<h4>appears in the field_ids section</h4>
<h4>alignment: 4 bytes</h4>
@@ -1683,7 +1683,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>method_id_item</h3>
+<h3 id="method-id-item">method_id_item</h3>
<h4>appears in the method_ids section</h4>
<h4>alignment: 4 bytes</h4>
@@ -1721,7 +1721,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>class_def_item</h3>
+<h3 id="class-def-item">class_def_item</h3>
<h4>appears in the class_defs section</h4>
<h4>alignment: 4 bytes</h4>
@@ -1825,7 +1825,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>class_data_item</h3>
+<h3 id="class-data-item">class_data_item</h3>
<h4>referenced from class_def_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: none (byte-aligned)</h4>
@@ -1900,7 +1900,7 @@ be ordered by initial offset and must not overlap.</p>
<p><b>Note:</b> All elements' <code>field_id</code>s and
<code>method_id</code>s must refer to the same defining class.</p>
-<h3>encoded_field Format</h3>
+<h3 id="encoded-field-format">encoded_field format</h3>
<table class="format">
<thead>
@@ -1930,7 +1930,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>encoded_method Format</h3>
+<h3 id="encoded-method">encoded_method format</h3>
<table class="format">
<thead>
@@ -1970,7 +1970,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>type_list</h3>
+<h3 id="type-list">type_list</h3>
<h4>referenced from class_def_item and proto_id_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: 4 bytes</h4>
@@ -1997,7 +1997,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>type_item Format</h3>
+<h3 id="type-item-format">type_item format</h3>
<table class="format">
<thead>
@@ -2016,7 +2016,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>code_item</h3>
+<h3 id="code-item">code_item</h3>
<h4>referenced from encoded_method</h4>
<h4>appears in the data section</h4>
<h4>alignment: 4 bytes</h4>
@@ -2076,7 +2076,7 @@ be ordered by initial offset and must not overlap.</p>
<td>ushort[insns_size]</td>
<td>actual array of bytecode. The format of code in an <code>insns</code>
array is specified by the companion document
- <a href="dalvik-bytecode.html">"Bytecode for the Dalvik VM"</a>. Note
+ <a href="dalvik-bytecode.html">Dalvik bytecode</a>. Note
that though this is defined as an array of <code>ushort</code>, there
are some internal structures that prefer four-byte alignment. Also,
if this happens to be in an endian-swapped file, then the swapping is
@@ -2113,7 +2113,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>try_item Format</h3>
+<h3 id="type-item">try_item format</h3>
<table class="format">
<thead>
@@ -2151,7 +2151,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>encoded_catch_handler_list Format</h3>
+<h3 id="encoded-catch-handlerlist">encoded_catch_handler_list format</h3>
<table class="format">
<thead>
@@ -2176,7 +2176,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>encoded_catch_handler Format</h3>
+<h3 id="encoded-catch-handler">encoded_catch_handler format</h3>
<table class="format">
<thead>
@@ -2216,7 +2216,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>encoded_type_addr_pair Format</h3>
+<h3 id="encoded-type-addr-pair">encoded_type_addr_pair format</h3>
<table class="format">
<thead>
@@ -2242,7 +2242,7 @@ be ordered by initial offset and must not overlap.</p>
</tbody>
</table>
-<h3>debug_info_item</h3>
+<h3 id="debug-info-item">debug_info_item</h3>
<h4>referenced from code_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: none (byte-aligned)</h4>
@@ -2457,7 +2457,7 @@ each register for the <code>DBG_RESTART_LOCAL</code> code.</p>
</tbody>
</table>
-<h3>Special Opcodes</h3>
+<h3 id="opcodes">Special opcodes</h3>
<p>Opcodes with values between <code>0x0a</code> and <code>0xff</code>
(inclusive) move both the <code>line</code> and <code>address</code>
@@ -2475,7 +2475,7 @@ line += DBG_LINE_BASE + (adjusted_opcode % DBG_LINE_RANGE)
address += (adjusted_opcode / DBG_LINE_RANGE)
</pre>
-<h3>annotations_directory_item</h3>
+<h3 id="annotations-directory">annotations_directory_item</h3>
<h4>referenced from class_def_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: 4 bytes</h4>
@@ -2541,7 +2541,7 @@ address += (adjusted_opcode / DBG_LINE_RANGE)
<p><b>Note:</b> All elements' <code>field_id</code>s and
<code>method_id</code>s must refer to the same defining class.</p>
-<h3>field_annotation Format</h3>
+<h3 id="field-annotation">field_annotation format</h3>
<table class="format">
<thead>
@@ -2571,7 +2571,7 @@ address += (adjusted_opcode / DBG_LINE_RANGE)
</tbody>
</table>
-<h3>method_annotation Format</h3>
+<h3 id="method-annotation">method_annotation format</h3>
<table class="format">
<thead>
@@ -2601,7 +2601,7 @@ address += (adjusted_opcode / DBG_LINE_RANGE)
</tbody>
</table>
-<h3>parameter_annotation Format</h3>
+<h3 id="parameter-annotation">parameter_annotation format</h3>
<table class="format">
<thead>
@@ -2631,7 +2631,7 @@ address += (adjusted_opcode / DBG_LINE_RANGE)
</tbody>
</table>
-<h3>annotation_set_ref_list</h3>
+<h3 id="set-ref-list">annotation_set_ref_list</h3>
<h4>referenced from parameter_annotations_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: 4 bytes</h4>
@@ -2658,7 +2658,7 @@ address += (adjusted_opcode / DBG_LINE_RANGE)
</tbody>
</table>
-<h3>annotation_set_ref_item Format</h3>
+<h3 id="set-ref-item">annotation_set_ref_item format</h3>
<table class="format">
<thead>
@@ -2682,7 +2682,7 @@ address += (adjusted_opcode / DBG_LINE_RANGE)
</tbody>
</table>
-<h3>annotation_set_item</h3>
+<h3 id="annotation-set-item">annotation_set_item</h3>
<h4>referenced from annotations_directory_item, field_annotations_item,
method_annotations_item, and annotation_set_ref_item</h4>
<h4>appears in the data section</h4>
@@ -2712,7 +2712,7 @@ method_annotations_item, and annotation_set_ref_item</h4>
</tbody>
</table>
-<h3>annotation_off_item Format</h3>
+<h3 id="off-item">annotation_off_item format</h3>
<table class="format">
<thead>
@@ -2736,7 +2736,7 @@ method_annotations_item, and annotation_set_ref_item</h4>
</table>
-<h3>annotation_item</h3>
+<h3 id="annotation-item">annotation_item</h3>
<h4>referenced from annotation_set_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: none (byte-aligned)</h4>
@@ -2759,14 +2759,14 @@ method_annotations_item, and annotation_set_ref_item</h4>
<td>annotation</td>
<td>encoded_annotation</td>
<td>encoded annotation contents, in the format described by
- "<code>encoded_annotation</code> Format" under
- "<code>encoded_value</code> Encoding" above.
+ "<code>encoded_annotation</code> format" under
+ "<code>encoded_value</code> encoding" above.
</td>
</tr>
</tbody>
</table>
-<h3>Visibility values</h3>
+<h3 id="visibility">Visibility values</h3>
<p>These are the options for the <code>visibility</code> field in an
<code>annotation_item</code>:</p>
@@ -2802,7 +2802,7 @@ method_annotations_item, and annotation_set_ref_item</h4>
</tbody>
</table>
-<h3>encoded_array_item</h3>
+<h3 id="encoded-array-item">encoded_array_item</h3>
<h4>referenced from class_def_item</h4>
<h4>appears in the data section</h4>
<h4>alignment: none (byte-aligned)</h4>
@@ -2827,7 +2827,7 @@ method_annotations_item, and annotation_set_ref_item</h4>
</tbody>
</table>
-<h2>System Annotations</h2>
+<h2 id="system-annotation">System annotations</h2>
<p>System annotations are used to represent various pieces of reflective
information about classes (and methods and fields). This information is
@@ -2836,7 +2836,7 @@ generally only accessed indirectly by client (non-system) code.</p>
<p>System annotations are represented in <code>.dex</code> files as
annotations with visibility set to <code>VISIBILITY_SYSTEM</code>.
-<h3>dalvik.annotation.AnnotationDefault</h3>
+<h3 id="dalvik-annotation-default">dalvik.annotation.AnnotationDefault</h3>
<h4>appears on methods in annotation interfaces</h4>
<p>An <code>AnnotationDefault</code> annotation is attached to each
@@ -2862,7 +2862,7 @@ annotation interface which wishes to indicate default bindings.</p>
</tbody>
</table>
-<h3>dalvik.annotation.EnclosingClass</h3>
+<h3 id="dalvik-enclosingclass">dalvik.annotation.EnclosingClass</h3>
<h4>appears on classes</h4>
<p>An <code>EnclosingClass</code> annotation is attached to each class
@@ -2890,7 +2890,7 @@ both an <code>EnclosingClass</code> and an
</tbody>
</table>
-<h3>dalvik.annotation.EnclosingMethod</h3>
+<h3 id="dalvik-enclosingmethod">dalvik.annotation.EnclosingMethod</h3>
<h4>appears on classes</h4>
<p>An <code>EnclosingMethod</code> annotation is attached to each class
@@ -2916,7 +2916,7 @@ and an <code>EnclosingMethod</code> annotation.</p>
</tbody>
</table>
-<h3>dalvik.annotation.InnerClass</h3>
+<h3 id="dalvik-innerclass">dalvik.annotation.InnerClass</h3>
<h4>appears on classes</h4>
<p>An <code>InnerClass</code> annotation is attached to each class
@@ -2953,7 +2953,7 @@ Any class which has this annotation must also have <i>either</i> an
</tbody>
</table>
-<h3>dalvik.annotation.MemberClasses</h3>
+<h3 id="dalvik-memberclasses">dalvik.annotation.MemberClasses</h3>
<h4>appears on classes</h4>
<p>A <code>MemberClasses</code> annotation is attached to each class
@@ -2977,7 +2977,7 @@ that has a name.)</p>
</tbody>
</table>
-<h3>dalvik.annotation.Signature</h3>
+<h3 id="dalvik-signature">dalvik.annotation.Signature</h3>
<h4>appears on classes, fields, and methods</h4>
<p>A <code>Signature</code> annotation is attached to each class,
@@ -3020,7 +3020,7 @@ tools that generate <code>.dex</code> files.</p>
</tbody>
</table>
-<h3>dalvik.annotation.Throws</h3>
+<h3 id="dalvik-throws">dalvik.annotation.Throws</h3>
<h4>appears on methods</h4>
<p>A <code>Throws</code> annotation is attached to each method which is
diff --git a/src/devices/tech/dalvik/index.jd b/src/devices/tech/dalvik/index.jd
index 71324d8a..ed1bad11 100644
--- a/src/devices/tech/dalvik/index.jd
+++ b/src/devices/tech/dalvik/index.jd
@@ -1,8 +1,8 @@
-page.title=Dalvik Technical Information
+page.title=ART and Dalvik
@jd:body
<!--
- Copyright 2013 The Android Open Source Project
+ Copyright 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,14 +16,140 @@ page.title=Dalvik Technical Information
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p>Dalvik is the managed runtime used by applications and some system
-services on Android. Dalvik was originally created specifically for
-the Android project.</p>
-<p>Much of the documentation in this directory is intended to help
-with the ongoing development of Dalvik, as opposed to most of the
-other documentation on this site, which is geared more towards
-application development.</p>
-
-<p>Please note, in Android 4.4 a new virtual machine - ART - is being introduced
-experimentally that will eventually replace Dalvik. Please see <a
-href="{@docRoot}devices/tech/dalvik/art.html">Introducing ART</a> for details.
+
+
+<div id="qv-wrapper">
+<div id="qv">
+ <h2 id="Contents">In this document</h2>
+ <ol id="auto-toc">
+ </ol>
+</div>
+</div>
+
+<p>Android runtime (ART) is the managed runtime used by applications and some system
+services on Android. ART and its predecessor Dalvik were originally created
+specifically for the Android project. ART as the runtime executes the Dalvik
+Executable format and Dex bytecode specification.</p>
+
+<p>ART and Dalvik are compatible runtimes running Dex bytecode, so apps
+developed for Dalvik should work when running with ART. However, some
+techniques that work on Dalvik do not work on ART. For information about the
+most important issues, see <a
+href="http://developer.android.com/guide/practices/verifying-apps-art.html">Verifying
+App Behavior on the Android Runtime (ART)</a>.</p>
+
+<h2 id="features">ART Features</h2>
+
+<p>Here are some of the major features implemented by ART.</p>
+
+<h3 id="AOT_compilation">Ahead-of-time (AOT) compilation</h3>
+
+<p>ART introduces ahead-of-time (AOT) compilation, which can improve app
+performance. ART also has tighter install-time verification than Dalvik.</p>
+
+<p>At install time, ART compiles apps using the on-device
+<strong>dex2oat</strong> tool. This utility accepts <a
+href="http://source.android.com/devices/tech/dalvik/dex-format.html">DEX</a> files as input and
+generates a compiled app executable for the target device. The utility should be
+able to compile all valid DEX files without difficulty. However, some
+post-processing tools produce invalid files that may be tolerated by Dalvik but
+cannot be compiled by ART. For more information, see <a
+href="http://developer.android.com/guide/practices/verifying-apps-art.html#GC_Migration">Addressing
+Garbage Collection Issues</a>.</p>
+
+<h3 id="Improved_GC">Improved garbage collection</h3>
+
+<p>Garbage collection (GC) can impair an app's performance, resulting in choppy
+display, poor UI responsiveness, and other problems. ART improves garbage
+collection in several ways:</p>
+
+<ul>
+ <li>One GC pause instead of two</li>
+ <li>Parallelized processing during the remaining GC pause</li>
+ <li>Collector with lower total GC time for the special case of cleaning up
+ recently-allocated, short-lived objects</li>
+ <li>Improved garbage collection ergonomics, making concurrent garbage
+ collections more timely, which makes <a
+ href="http://developer.android.com/tools/debugging/debugging-memory.html#LogMessages"><code>GC_FOR_ALLOC</code></a>
+ events extremely rare in typical use cases</li>
+ <li>Compacting GC to reduce background memory usage and fragmentation</li>
+</ul>
+
+<h3 id="Debugging_Imp">Development and debugging improvements</h3>
+
+<p>ART offers a number of features to improve app development and debugging.</p>
+
+<h4 id="Sampling_Profiler">Support for sampling profiler</h4>
+
+<p>Historically, developers have used the <a
+href=" http://developer.android.com/tools/help/traceview.html">Traceview</a>
+tool (designed for tracing
+application execution) as a profiler. While Traceview gives useful information,
+its results on Dalvik have been skewed by the per-method-call overhead, and use
+of the tool noticeably affects run time performance.</p>
+
+<p>ART adds support for a dedicated sampling profiler that does not have these
+limitations. This gives a more accurate view of app execution without
+significant slowdown. Sampling support was added to Traceview for
+Dalvik in the KitKat release.</p>
+
+<h4 id="Debugging_Features">Support for more debugging features</h4>
+
+<p>ART supports a number of new debugging options, particularly in monitor- and
+garbage collection-related functionality. For example, you can:</p>
+
+<ul>
+ <li>See what locks are held in stack traces, then jump to the thread that
+ holds a lock.</li>
+ <li>Ask how many live instances there are of a given class, ask to see the
+ instances, and see what references are keeping an object live.</li>
+ <li>Filter events (like breakpoint) for a specific instance.</li>
+ <li>See the value returned by a method when it exits (using “method-exit”
+ events).</li>
+ <li>Set field watchpoint to suspend the execution of a program when a specific
+ field is accessed and/or modified.</li>
+</ul>
+
+<h4 id="Crash_Reports">Improved diagnostic detail in exceptions and crash reports</h4>
+
+<p>ART gives you as much context and detail as possible when runtime exceptions
+occur. ART provides expanded exception detail for <code><a
+href="http://developer.android.com/reference/java/lang/ClassCastException.html">java.lang.ClassCastException</a></code>,
+<code><a
+href="http://developer.android.com/reference/java/lang/ClassNotFoundException.html">java.lang.ClassNotFoundException</a></code>,
+and <code><a
+href="http://developer.android.com/reference/java/lang/NullPointerException.html">java.lang.NullPointerException</a></code>.
+(Later versions of Dalvik provided expanded exception detail for <code><a
+href="http://developer.android.com/reference/java/lang/ArrayIndexOutOfBoundsException.html">java.lang.ArrayIndexOutOfBoundsException</a></code>
+and <code><a
+href="http://developer.android.com/reference/java/lang/ArrayStoreException.html">java.lang.ArrayStoreException</a></code>,
+which now include the size of the array and the out-of-bounds offset, and ART
+does this as well.)</p>
+
+<p>For example, <code><a
+href="http://developer.android.com/reference/java/lang/NullPointerException.html">java.lang.NullPointerException</a></code>
+now shows information about what the app was trying to do with the null pointer,
+such as the field the app was trying to write to, or the method it was trying to
+call. Here are some typical examples:</p>
+
+<pre class="no-pretty-print">
+java.lang.NullPointerException: Attempt to write to field 'int
+android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object
+reference</pre>
+
+<pre class="no-pretty-print">
+java.lang.NullPointerException: Attempt to invoke virtual method
+'java.lang.String java.lang.Object.toString()' on a null object reference</pre>
+
+<p>ART also provides improved context information in app native crash reports,
+by including both Java and native stack information. </p>
+
+<h2 id="Reporting_Problems">Reporting Problems</h2>
+
+<p>If you run into any issues that aren’t due to app JNI issues, please report
+them via the Android Open Source Project Issue Tracker at <a
+href="http://b.android.com">http://b.android.com</a>.
+Please include an <code>"adb bugreport"</code> and link to the app in Google
+Play store if available. Otherwise, if possible, attach an APK that reproduces
+the issue. Please note that issues (including attachments) are publicly
+visible.</p>
diff --git a/src/devices/tech/dalvik/instruction-formats.jd b/src/devices/tech/dalvik/instruction-formats.jd
index 37640dad..91d876a7 100644
--- a/src/devices/tech/dalvik/instruction-formats.jd
+++ b/src/devices/tech/dalvik/instruction-formats.jd
@@ -1,8 +1,8 @@
-page.title=Dalvik VM Instruction Formats
+page.title=Dalvik Executable instruction formats
@jd:body
<!--
- Copyright 2013 The Android Open Source Project
+ Copyright 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,13 +16,21 @@ page.title=Dalvik VM Instruction Formats
See the License for the specific language governing permissions and
limitations under the License.
-->
-<h2>Introduction and Overview</h2>
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>In this document</h2>
+ <ol id="auto-toc">
+ </ol>
+ </div>
+</div>
-<p>This document lists the instruction formats used by Dalvik bytecode
-and is meant to be used in conjunction with the
+<h2 id="intro">Introduction</h2>
+
+<p>This document lists the instruction formats used by the Dalvik Executable
+format and Dalvik bytecode. It is meant to be used in conjunction with the
<a href="dalvik-bytecode.html">bytecode reference document</a>.</p>
-<h3>Bitwise descriptions</h3>
+<h2 id="bitwise">Bitwise descriptions</h2>
<p>The first column in the format table lists the bitwise layout of
the format. It consists of one or more space-separated "words" each of
@@ -49,7 +57,7 @@ consists of the opcode in the low eight bits and a pair of four-bit
values in the high eight bits; and the second word consists of a single
16-bit value.</p>
-<h3>Format IDs</h3>
+<h2 id="format-ids">Format IDs</h2>
<p>The second column in the format table indicates the short identifier
for the format, which is used in other documents and in code to identify
@@ -69,7 +77,7 @@ and additionally contains a branch target.</p>
"<code>s</code>" suffix, making them four characters total. Similarly,
suggested "inline" linking formats have an additional "<code>i</code>"
suffix. (In this context, inline linking is like static linking,
-except with more direct ties into a virtual machine's implementation.)
+except with more direct ties into a machine's implementation.)
Finally, a couple oddball suggested formats (e.g.,
"<code>20bc</code>") include two pieces of data which are both
represented in its format ID.</p>
@@ -147,7 +155,7 @@ forms have different sizes, depending on the format:</p>
</tbody>
</table>
-<h3>Syntax</h3>
+<h2 id="syntax">Syntax</h2>
<p>The third column of the format table indicates the human-oriented
syntax for instructions which use the indicated format. Each instruction
@@ -163,7 +171,7 @@ each four bits of the field. For example, an eight-bit field labeled
<p>Arguments which name a register have the form "<code>v<i>X</i></code>".
The prefix "<code>v</code>" was chosen instead of the more common
"<code>r</code>" exactly to avoid conflicting with (non-virtual) architectures
-on which a Dalvik virtual machine might be implemented which themselves
+on which the Dalvik Executable format might be implemented which themselves
use the prefix "<code>r</code>" for their registers. (That is, this
decision makes it possible to talk about both virtual and real registers
together without the need for circumlocution.)</p>
@@ -197,7 +205,7 @@ but instead picks a variant, each variant is listed with the prefix
"<code>[<i>X</i>=<i>N</i>]</code>" (e.g., "<code>[A=2]</code>") to indicate
the correspondence.</p>
-<h2>The Formats</h2>
+<h2 id="formats">The formats</h2>
<table class="format">
<thead>
diff --git a/src/devices/tech/index.jd b/src/devices/tech/index.jd
index fbb4cc7a..c6b680af 100644
--- a/src/devices/tech/index.jd
+++ b/src/devices/tech/index.jd
@@ -36,12 +36,12 @@ keyboards and custom hardware, through USB or Bluetooth. This document
describes the Android Open Accessory protocol for accessory hardware builders.</p>
<p><a href="{@docRoot}accessories/index.html">&raquo; Accessory Protocol Information</a></p>
-<h2 id="dalvik-technical-information">Dalvik Technical Information</h2>
-<p>The Dalvik Virtual Machine is the heart of Android. It's a fast, just-in-time
-compiled, optimized bytecode virtual machine. Android applications are
-compiled to Dalvik bytecode and run on the Dalvik VM. This section includes
-detailed information such as the Dalvik bytecode format specification,
-design information on the VM itself, and so on.</p>
+<h2 id="art-technical-information">ART Technical Information</h2>
+<p>The Android runtime (ART) is the heart of Android. It's a fast, ahead-of-time
+compiled runtime with modern garbage collection designed to scale. Android applications are
+compiled to Dalvik bytecode and run with ART. This section includes
+detailed information such as the Dalvik Executable format specification,
+and design information on the runtime itself.</p>
<p><a href="{@docRoot}devices/tech/dalvik/index.html">&raquo; Dalvik Information</a></p>
<h2 id="data-usage-technical-information">Data Usage Technical Information</h2>
diff --git a/src/devices/tech/security/index.jd b/src/devices/tech/security/index.jd
index f143b3fe..74b7a84f 100644
--- a/src/devices/tech/security/index.jd
+++ b/src/devices/tech/security/index.jd
@@ -78,9 +78,9 @@ accessed through the operating system.</p>
</li>
<li>
<p><strong>Android Application Runtime</strong>: Android applications are most often written
-in the Java programming language and run in the Dalvik virtual machine.
+in the Java programming language and run in the Android runtime (ART).
However, many applications, including core Android services and applications
-are native applications or include native libraries. Both Dalvik and native
+are native applications or include native libraries. Both ART and native
applications run within the same security environment, contained within the
Application Sandbox. Applications get a dedicated part of the filesystem in
which they can write private data, including databases and raw files.</p>
@@ -441,7 +441,7 @@ oper.android.com/guide/topics/admin/device-admin.html">https://developer.android
<p>Android provides an open source platform and application environment for mobile
devices. The core operating system is based on the Linux kernel. Android
applications are most often written in the Java programming language and run in
-the Dalvik virtual machine. However, applications can also be written in native
+the ART runtime. However, applications can also be written in native
code. Applications are installed from a single file with the .apk file
extension.</p>
<p>The main Android application building blocks are:</p>
@@ -767,7 +767,7 @@ is implemented in two architectural layers (see figure below):</p>
<ul>
<li>
<p>A DRM framework API, which is exposed to applications through the Android
-application framework and runs through the Dalvik VM for standard applications.</p>
+application framework and runs through the ART runtime for standard applications.</p>
</li>
<li>
<p>A native code DRM manager, which implements the DRM framework and exposes an
diff --git a/src/source/code-lines.jd b/src/source/code-lines.jd
index 59da8bd2..f2770193 100644
--- a/src/source/code-lines.jd
+++ b/src/source/code-lines.jd
@@ -91,7 +91,7 @@ page.title=Codelines, Branches, and Releases
<p>
An <em>upstream</em> project is an open-source project from which the Android stack is
pulling code. These include obvious projects such as the Linux kernel and WebKit.
- Over time we are migrating some of the semi-autonomous Android projects (such as Dalvik,
+ Over time we are migrating some of the semi-autonomous Android projects (such as ART,
the Android SDK tools, Bionic, and so on) to work as "upstream" projects. Generally,
these projects are developed entirely in the public tree. For some upstream projects,
development is done by contributing directly to the upstream project itself. See <a href=
diff --git a/src/source/faqs.jd b/src/source/faqs.jd
index 58a9a212..346ad981 100644
--- a/src/source/faqs.jd
+++ b/src/source/faqs.jd
@@ -169,7 +169,7 @@ Open Source Project.</p>
able to accept. For instance, someone might want to contribute an
alternative application API, such as a full C++-based environment. We would
decline that contribution, since Android encourages applications to be run
-in the Dalvik VM. Similarly, we won't accept contributions such as GPL
+in the ART runtime. Similarly, we won't accept contributions such as GPL
or LGPL libraries that are incompatible with our licensing goals.</p>
<p>We encourage those interested in contributing source code to contact us
via the channels listed on the <a href="{@docRoot}source/community/index.html">
diff --git a/src/source/report-bugs.jd b/src/source/report-bugs.jd
index 300df543..e0fcae9d 100644
--- a/src/source/report-bugs.jd
+++ b/src/source/report-bugs.jd
@@ -93,7 +93,7 @@ Observed results:
See above.
</blockquote>
<p>This is a poor bug report because it doesn't provide any context for the
-issue; is it a problem in the Dalvik virtual machine, the core framework, or
+issue; is it a problem in the ART runtime, the core framework, or
something else? It also doesn't provide any code or hint on how to reproduce
it. In other words, this bug report doesn't provide enough information for
anyone to take action on, so it would be ignored.</p>