diff options
| author | Carl Shapiro <cshapiro@google.com> | 2010-06-08 16:37:12 -0700 |
|---|---|---|
| committer | Carl Shapiro <cshapiro@google.com> | 2010-06-08 17:04:11 -0700 |
| commit | de75089fb7216d19e9c22cce4dc62a49513477d3 (patch) | |
| tree | 8c4035cc05218ddb7595e9a5c5997b53e58c2572 /docs/dalvik-constraints.html | |
| parent | 52ec072cc4dd215ff541a0b0842e91ea529a6e5d (diff) | |
| download | android_dalvik-de75089fb7216d19e9c22cce4dc62a49513477d3.tar.gz android_dalvik-de75089fb7216d19e9c22cce4dc62a49513477d3.tar.bz2 android_dalvik-de75089fb7216d19e9c22cce4dc62a49513477d3.zip | |
Remove trailing whitespace.
Change-Id: I95534bb2b88eaf48f2329282041118cd034c812b
Diffstat (limited to 'docs/dalvik-constraints.html')
| -rw-r--r-- | docs/dalvik-constraints.html | 330 |
1 files changed, 165 insertions, 165 deletions
diff --git a/docs/dalvik-constraints.html b/docs/dalvik-constraints.html index 105225a7b..69abf3af3 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 file_size must match the actual file size in bytes. 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 @@ type_ids list. The referenced entry must be a non-array reference type. ... --> - + <h2> Static constraints </h2> @@ -134,153 +134,153 @@ type_ids list. The referenced entry must be a non-array reference type. 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 @@ type_ids list. The referenced entry must be a non-array reference type. <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 @@ type_ids list. The referenced entry must be a non-array reference type. <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 @@ type_ids list. The referenced entry must be a non-array reference type. <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 @@ type_ids list. The referenced entry must be a non-array reference type. <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 @@ type_ids list. The referenced entry must be a non-array reference type. <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 @@ type_ids list. The referenced entry must be a non-array reference type. <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 @@ type_ids list. The referenced entry must be a non-array reference type. <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 @@ type_ids list. The referenced entry must be a non-array reference type. <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> |
