Remove trailing whitespace.
Change-Id: I95534bb2b88eaf48f2329282041118cd034c812b
diff --git a/docs/dalvik-constraints.html b/docs/dalvik-constraints.html
index 105225a..69abf3a 100644
--- a/docs/dalvik-constraints.html
+++ b/docs/dalvik-constraints.html
@@ -5,11 +5,11 @@
<title>Dalvik bytecode constraints</title>
<link rel=stylesheet href="dalvik-constraints.css">
</head>
-
+
<body>
-
+
<h1>Dalvik bytecode constraints</h1>
-
+
<!--
<h1>General integrity constraints</h1>
@@ -18,17 +18,17 @@
<th>
Identifier
</th>
-
+
<th>
Description
</th>
</tr>
-
+
<tr>
<td>
A1
</td>
-
+
<td>
The magic number of the DEX file must be "dex\n035\0".
</td>
@@ -38,7 +38,7 @@
<td>
A1
</td>
-
+
<td>
The checksum must be an Adler-32 checksum of the whole file contents
except magic and checksum field.
@@ -54,14 +54,14 @@
The header_size must have the value 0x70.
The endian_tag must have either the value ENDIAN_CONSTANT or
-REVERSE_ENDIAN_CONSTANT.
-
+REVERSE_ENDIAN_CONSTANT.
+
For each of the link, string_ids, type_ids, proto_ids, field_ids, method_ids, class_defs
and data sections, the offset and size fields must be either both zero or both
non-zero. In the latter case, the offset must be four-byte-aligned.
All offset fields in the header except map_off must be four-byte-aligned.
-
+
The map_off field must be either zero or point into the data section. In the
latter case, the data section must exist.
@@ -124,7 +124,7 @@
...
-->
-
+
<h2>
Static constraints
</h2>
@@ -134,153 +134,153 @@
They usually can be checked without employing control or data-flow analysis
techniques.
</p>
-
+
<table>
<tr>
<th>
Identifier
</th>
-
+
<th>
Description
</th>
-
+
<th>
Spec equivalent
</th>
</tr>
-
+
<tr>
<td>
A1
</td>
-
+
<td>
- The <code>insns</code> array must not be empty.
+ The <code>insns</code> array must not be empty.
</td>
-
+
<td>
4.8.1.1
</td>
</tr>
-
+
<tr>
<td>
A2
</td>
-
+
<td>
The first opcode in the <code>insns</code> array must have index zero.
</td>
-
+
<td>
4.8.1.3
</td>
</tr>
-
+
<tr>
<td>
A3
</td>
-
+
<td>
The <code>insns</code> array must only contain valid Dalvik opcodes.
</td>
-
+
<td>
4.8.1.4
</td>
</tr>
-
+
<tr>
<td>
A4
</td>
-
+
<td>
The index of instruction <code>n+1</code> must equal the index of
instruction <code>n</code> plus the length of instruction
<code>n</code>, taking into account possible operands.
</td>
-
+
<td>
4.8.1.5
</td>
</tr>
-
+
<tr>
<td>
A5
</td>
-
+
<td>
The last instruction in the <code>insns</code> array must end at index
- <code>insns_size-1</code>.
+ <code>insns_size-1</code>.
</td>
-
+
<td>
4.8.1.6
</td>
</tr>
-
+
<tr>
<td>
A6
</td>
-
+
<td>
All <code>goto</code> and <code>if-<kind></code> targets must
be opcodes within in the same method.
</td>
-
+
<td>
4.8.1.7
</td>
</tr>
-
+
<tr>
<td>
A7
</td>
-
+
<td>
All targets of a <code>packed-switch</code> instruction must be
opcodes within in the same method. The size and the list of targets
- must be consistent.
+ must be consistent.
</td>
-
+
<td>
4.8.1.8
</td>
</tr>
-
+
<tr>
<td>
A8
</td>
-
+
<td>
All targets of a <code>sparse-switch</code> instruction must be
opcodes within in the same method. The corresponding table must be
- consistent and sorted low-to-high.
+ consistent and sorted low-to-high.
</td>
-
+
<td>
4.8.1.9
</td>
</tr>
-
+
<tr>
<td>
A9
</td>
-
+
<td>
The <code>B</code> operand of the <code>const-string</code> and
<code>const-string/jumbo</code> instructions must be a valid index
into the string constant pool.
</td>
-
+
<td>
4.8.1.10
</td>
@@ -290,31 +290,31 @@
<td>
A10
</td>
-
+
<td>
The <code>C</code> operand of the <code>iget<kind></code> and
<code>iput<kind></code> instructions must be a valid index into
the field constant pool. The referenced entry must represent an
instance field.
</td>
-
+
<td>
4.8.1.12
</td>
</tr>
-
+
<tr>
<td>
A11
</td>
-
+
<td>
The <code>C</code> operand of the <code>sget<kind></code> and
<code>sput<kind></code> instructions must be a valid index into
the field constant pool. The referenced entry must represent a static
field.
</td>
-
+
<td>
4.8.1.12
</td>
@@ -324,33 +324,33 @@
<td>
A12
</td>
-
+
<td>
The <code>C</code> operand of the <code>invoke-virtual</code>,
<code>invoke-super</code>, <code<invoke-direct</code> and
<code>invoke-static</code> instructions must be a valid index into the
method constant pool. In all cases, the referenced
- <code>method_id</code> must belong to a class (not an interface).
+ <code>method_id</code> must belong to a class (not an interface).
</td>
-
+
<td>
4.8.1.13
</td>
</tr>
-
+
<tr>
<td>
A13
</td>
-
+
<td>
The <code>B</code> operand of the <code>invoke-virtual/range</code>,
<code>invoke-super/range</code>, <code>invoke-direct/range</code>, and
<code>invoke-static/range</code> instructions must be a valid index
into the method constant pool. In all cases, the referenced
- <code>method_id</code> must belong to a class (not an interface).
+ <code>method_id</code> must belong to a class (not an interface).
</td>
-
+
<td>
4.8.1.13
</td>
@@ -360,81 +360,81 @@
<td>
A14
</td>
-
+
<td>
A method the name of which starts with a '<' must only be invoked
implicitly by the VM, not by code originating from a Dex file. The
only exception is the instance initializer, which may be invoked by
<code>invoke-direct</code>.
</td>
-
+
<td>
4.8.1.14
</td>
</tr>
-
+
<tr>
<td>
A15
</td>
-
+
<td>
The <code>C</code> operand of the <code>invoke-interface</code>
instruction must be a valid index into the method constant pool. The
referenced <code>method_id</code> must belong to an interface (not a
class).
</td>
-
+
<td>
4.8.1.15
</td>
</tr>
-
+
<tr>
<td>
A16
</td>
-
+
<td>
The <code>B</code> operand of the <code>invoke-interface/range</code>
instruction must be a valid index into the method constant pool.
The referenced <code>method_id</code> must belong to an interface (not
a class).
</td>
-
+
<td>
4.8.1.15
</td>
</tr>
-
+
<tr>
<td>
A17
</td>
-
+
<td>
The <code>B</code> operand of the <code>const-class</code>,
<code>check-cast</code>, <code>new-instance</code>, and
<code>filled-new-array/range</code> instructions must be a valid index
into the type constant pool.
</td>
-
+
<td>
4.8.1.16
</td>
</tr>
-
+
<tr>
<td>
A18
</td>
-
+
<td>
The <code>C</code> operand of the <code>instance-of</code>,
<code>new-array</code>, and <code>filled-new-array</code>
instructions must be a valid index into the type constant pool.
</td>
-
+
<td>
4.8.1.16
</td>
@@ -444,85 +444,85 @@
<td>
A19
</td>
-
+
<td>
The dimensions of an array created by a <code>new-array</code>
instruction must be less than <code>256</code>.
</td>
-
+
<td>
4.8.1.17
</td>
</tr>
-
+
<tr>
<td>
A20
</td>
-
+
<td>
The <code>new</code> instruction must not refer to array classes,
interfaces, or abstract classes.
</td>
-
+
<td>
4.8.1.18
</td>
</tr>
-
+
<tr>
<td>
A21
</td>
-
+
<td>
The type referred to by a <code>new-array</code> instruction must be
a valid, non-reference type.
</td>
-
+
<td>
4.8.1.20
</td>
</tr>
-
+
<tr>
<td>
A22
</td>
-
+
<td>
All registers referred to by an instruction in a single-width
(non-pair) fashion must be valid for the current method. That is,
their indices must be non-negative and smaller than
- <code>registers_size</code>.
+ <code>registers_size</code>.
</td>
-
+
<td>
4.8.1.21
</td>
</tr>
-
+
<tr>
<td>
A23
</td>
-
+
<td>
All registers referred to by an instruction in a double-width (pair)
fashion must be valid for the current method. That is, their indices
- must be non-negative and smaller than <code>registers_size-1</code>.
+ must be non-negative and smaller than <code>registers_size-1</code>.
</td>
-
+
<td>
4.8.1.23
</td>
</tr>
</table>
-
+
<h2>
Structural constraints
</h2>
-
+
<p>
Structural constraints are constraints on relationships between several
elements of the bytecode. They usually can't be checked without employing
@@ -534,291 +534,291 @@
<th>
Identifier
</th>
-
+
<th>
Description
</th>
-
+
<th>
Spec equivalent
</th>
</tr>
-
+
<tr>
<td>
B1
</td>
-
+
<td>
The number and types of arguments (registers and immediate values)
must always match the instruction.
</td>
-
+
<td>
4.8.2.1
</td>
</tr>
-
+
<tr>
<td>
B2
</td>
-
+
<td>
- Register pairs must never be broken up.
+ Register pairs must never be broken up.
</td>
-
+
<td>
4.8.2.3
</td>
</tr>
-
+
<tr>
<td>
B3
</td>
-
+
<td>
A register (or pair) has to be assigned first before it can be
read.
</td>
-
+
<td>
4.8.2.4
</td>
</tr>
-
+
<tr>
<td>
B4
</td>
-
+
<td>
An <code>invoke-direct</code> instruction must only invoke an instance
initializer or a method in the current class or one of its
- superclasses.
+ superclasses.
</td>
-
+
<td>
4.8.2.7
</td>
</tr>
-
+
<tr>
<td>
B5
</td>
-
+
<td>
An instance initializer must only be invoked on an uninitialized
instance.
</td>
-
+
<td>
4.8.2.8
</td>
</tr>
-
+
<tr>
<td>
B6
</td>
-
+
<td>
Instance methods may only be invoked on and instance fields may only
- be accessed on already initialized instances.
+ be accessed on already initialized instances.
</td>
-
+
<td>
4.8.2.9
</td>
</tr>
-
+
<tr>
<td>
B7
</td>
-
+
<td>
A register which holds the result of a <code>new-instance</code>code>
instruction must not be used if the same
<code>new-instance</code>code> instruction is again executed before
- the instance is initialized.
+ the instance is initialized.
</td>
-
+
<td>
4.8.2.10
</td>
</tr>
-
+
<tr>
<td>
B8
</td>
-
+
<td>
An instance initializer must call another instance initializer (same
class or superclass) before any instance members can be accessed.
Exceptions are non-inherited instance fields, which can be assigned
before calling another initializer, and the <code>Object</code> class
- in general.
+ in general.
</td>
-
+
<td>
4.8.2.11
</td>
</tr>
-
+
<tr>
<td>
B9
</td>
-
+
<td>
All actual method arguments must be assignment-compatible with their
- respective formal arguments.
+ respective formal arguments.
</td>
-
+
<td>
4.8.2.12
</td>
</tr>
-
+
<tr>
<td>
B10
</td>
-
+
<td>
For each instance method invocation, the actual instance must be
assignment-compatible with the class or interface specified in the
instruction.
</td>
-
+
<td>
4.8.2.13
</td>
</tr>
-
+
<tr>
<td>
B11
</td>
-
+
<td>
A <code>return<kind></code> instruction must match its
- method's return type.
+ method's return type.
</td>
-
+
<td>
4.8.2.14
</td>
</tr>
-
+
<tr>
<td>
B12
</td>
-
+
<td>
When accessing protected members of a superclass, the actual type of
the instance being accessed must be either the current class or one
of its subclasses.
</td>
-
+
<td>
4.8.2.15
</td>
</tr>
-
+
<tr>
<td>
B13
</td>
-
+
<td>
The type of a value stored into a static field must be
assignment-compatible with or convertible to the field's type.
</td>
-
+
<td>
4.8.2.16
</td>
</tr>
-
+
<tr>
<td>
B14
</td>
-
+
<td>
The type of a value stored into a field must be assignment-compatible
with or convertible to the field's type.
</td>
-
+
<td>
4.8.2.17
</td>
</tr>
-
+
<tr>
<td>
B15
</td>
-
+
<td>
The type of every value stored into an array must be
assignment-compatible with the array's component type.
</td>
-
+
<td>
4.8.2.18
</td>
</tr>
-
+
<tr>
<td>
B16
</td>
-
+
<td>
The <code>A</code> operand of a <code>throw</code> instruction must
- be assignment-compatible with <code>java.lang.Throwable</code>.
+ be assignment-compatible with <code>java.lang.Throwable</code>.
</td>
-
+
<td>
4.8.2.19
</td>
</tr>
-
+
<tr>
<td>
B17
</td>
-
+
<td>
The last reachable instruction of a method must either be a backwards
<code>goto</code> or branch, a <code>return</code>, or a
<code>throw</code> instruction. It must not be possible to leave the
<code>insns</code> array at the bottom.
</td>
-
+
<td>
4.8.2.20
</td>
</tr>
-
+
<tr>
<td>
B18
</td>
-
+
<td>
The unassigned half of a former register pair may not be read (is
considered invalid) until it has been re-assigned by some other
instruction.
- </td>
-
+ </td>
+
<td>
4.8.2.3, 4.8.2.4
</td>
@@ -828,15 +828,15 @@
<td>
B19
</td>
-
+
<td>
A <code>move-result<kind></code> instruction must be immediately
preceded (in the <code>insns</code> array) by an
<code><invoke-kind></code> instruction. The only exception is
the <code>move-result-object</code> instruction, which may also be
- preceded by a <code>filled-new-array</code> instruction.
+ preceded by a <code>filled-new-array</code> instruction.
</td>
-
+
<td>
-
</td>
@@ -846,16 +846,16 @@
<td>
B20
</td>
-
+
<td>
A <code>move-result<kind></code> instruction must be immediately
preceded (in actual control flow) by a matching
<code>return-<kind></code> instruction (it must not be jumped
to). The only exception is the <code>move-result-object</code>
instruction, which may also be preceded by a
- <code>filled-new-array</code> instruction.
+ <code>filled-new-array</code> instruction.
</td>
-
+
<td>
-
</td>
@@ -865,28 +865,28 @@
<td>
B21
</td>
-
+
<td>
A <code>move-exception</code> instruction must only appear as the
first instruction in an exception handler.
</td>
-
+
<td>
-
</td>
</tr>
-
+
<tr>
<td>
B22
</td>
-
+
<td>
The <code>packed-switch-data</code>, <code>sparse-switch-data</code>,
and <code>fill-array-data</code> pseudo-instructions must not be
reachable by control flow.
</td>
-
+
<td>
-
</td>