xref: /aosp_15_r20/dalvik/docs/java-constraints.html (revision 055d459012065f78d96b68be8421640240ddf631)
1*055d4590SKeyi Gui<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2*055d4590SKeyi Gui
3*055d4590SKeyi Gui<html>
4*055d4590SKeyi Gui  <head>
5*055d4590SKeyi Gui    <title>Java bytecode constraints</title>
6*055d4590SKeyi Gui    <link rel=stylesheet href="java-constraints.css">
7*055d4590SKeyi Gui  </head>
8*055d4590SKeyi Gui
9*055d4590SKeyi Gui  <body>
10*055d4590SKeyi Gui    <h1>
11*055d4590SKeyi Gui      Bytecode constraints
12*055d4590SKeyi Gui    </h1>
13*055d4590SKeyi Gui
14*055d4590SKeyi Gui    <p>
15*055d4590SKeyi Gui      From the point of view of a piece of code written in the Java
16*055d4590SKeyi Gui      programming language or targeted in the same way to <code>.class</code>
17*055d4590SKeyi Gui      files, the Dalvik VM aims to behave in a way
18*055d4590SKeyi Gui      that is fully consistent with the language's definition.
19*055d4590SKeyi Gui      That is, the code running in Dalvik will behave the same as it
20*055d4590SKeyi Gui      would have running in any other virtual machine. This includes
21*055d4590SKeyi Gui      verification failures.
22*055d4590SKeyi Gui      The Dx/Dalvik system will check roughly the same
23*055d4590SKeyi Gui      constraints that any other VM would, except as noted in the file
24*055d4590SKeyi Gui      <a href="verifier.html">verifier.html</a>. The following table briefly
25*055d4590SKeyi Gui      lists all Dx/Dalvik verification constraints together their analogs
26*055d4590SKeyi Gui      from the book <i>The Java<super>TM</super> Language Specification</i>,
27*055d4590SKeyi Gui      second edition. In the numbering scheme, the first three
28*055d4590SKeyi Gui      elements refer to the specification chapter, the fourth one to the
29*055d4590SKeyi Gui      bullet inside that chapter. The failure mode specifies whether the
30*055d4590SKeyi Gui      constraint will fail during the Dx conversion or during verification in
31*055d4590SKeyi Gui      the VM itself.
32*055d4590SKeyi Gui    </p>
33*055d4590SKeyi Gui
34*055d4590SKeyi Gui    <h2>
35*055d4590SKeyi Gui      Static constraints
36*055d4590SKeyi Gui    </h2>
37*055d4590SKeyi Gui
38*055d4590SKeyi Gui    <p>
39*055d4590SKeyi Gui    Static constraints are constraints on individual elements of the bytecode.
40*055d4590SKeyi Gui    They usually can be checked without employing control or data-flow analysis
41*055d4590SKeyi Gui    techniques.
42*055d4590SKeyi Gui    </p>
43*055d4590SKeyi Gui
44*055d4590SKeyi Gui    <table>
45*055d4590SKeyi Gui      <tr>
46*055d4590SKeyi Gui        <th>
47*055d4590SKeyi Gui          Identifier
48*055d4590SKeyi Gui        </th>
49*055d4590SKeyi Gui
50*055d4590SKeyi Gui        <th>
51*055d4590SKeyi Gui          Description
52*055d4590SKeyi Gui        </th>
53*055d4590SKeyi Gui
54*055d4590SKeyi Gui        <th>
55*055d4590SKeyi Gui          Spec equivalent
56*055d4590SKeyi Gui        </th>
57*055d4590SKeyi Gui
58*055d4590SKeyi Gui        <th>
59*055d4590SKeyi Gui          Failure mode
60*055d4590SKeyi Gui        </th>
61*055d4590SKeyi Gui      </tr>
62*055d4590SKeyi Gui
63*055d4590SKeyi Gui      <tr>
64*055d4590SKeyi Gui        <td>
65*055d4590SKeyi Gui          A1
66*055d4590SKeyi Gui        </td>
67*055d4590SKeyi Gui
68*055d4590SKeyi Gui        <td>
69*055d4590SKeyi Gui          The <code>code</code> array must not be empty.
70*055d4590SKeyi Gui        </td>
71*055d4590SKeyi Gui
72*055d4590SKeyi Gui        <td>
73*055d4590SKeyi Gui          4.8.1.1
74*055d4590SKeyi Gui        </td>
75*055d4590SKeyi Gui
76*055d4590SKeyi Gui        <td>
77*055d4590SKeyi Gui          DX
78*055d4590SKeyi Gui        </td>
79*055d4590SKeyi Gui      </tr>
80*055d4590SKeyi Gui
81*055d4590SKeyi Gui      <tr>
82*055d4590SKeyi Gui        <td>
83*055d4590SKeyi Gui          A2
84*055d4590SKeyi Gui        </td>
85*055d4590SKeyi Gui
86*055d4590SKeyi Gui        <td>
87*055d4590SKeyi Gui          The <code>code</code> array must not be larger than 65535 bytes.
88*055d4590SKeyi Gui        </td>
89*055d4590SKeyi Gui
90*055d4590SKeyi Gui        <td>
91*055d4590SKeyi Gui          4.8.1.2
92*055d4590SKeyi Gui        </td>
93*055d4590SKeyi Gui
94*055d4590SKeyi Gui        <td>
95*055d4590SKeyi Gui          DX
96*055d4590SKeyi Gui        </td>
97*055d4590SKeyi Gui      </tr>
98*055d4590SKeyi Gui
99*055d4590SKeyi Gui      <tr>
100*055d4590SKeyi Gui        <td>
101*055d4590SKeyi Gui          A3
102*055d4590SKeyi Gui        </td>
103*055d4590SKeyi Gui
104*055d4590SKeyi Gui        <td>
105*055d4590SKeyi Gui          The first opcode in <code>code</code> array must have index
106*055d4590SKeyi Gui          <code>0</code>.
107*055d4590SKeyi Gui        </td>
108*055d4590SKeyi Gui
109*055d4590SKeyi Gui        <td>
110*055d4590SKeyi Gui          4.8.1.3
111*055d4590SKeyi Gui        </td>
112*055d4590SKeyi Gui
113*055d4590SKeyi Gui        <td>
114*055d4590SKeyi Gui          DX
115*055d4590SKeyi Gui        </td>
116*055d4590SKeyi Gui      </tr>
117*055d4590SKeyi Gui
118*055d4590SKeyi Gui      <tr>
119*055d4590SKeyi Gui        <td>
120*055d4590SKeyi Gui          A4
121*055d4590SKeyi Gui        </td>
122*055d4590SKeyi Gui
123*055d4590SKeyi Gui        <td>
124*055d4590SKeyi Gui          The <code>code</code> array must only contain valid opcodes.
125*055d4590SKeyi Gui        </td>
126*055d4590SKeyi Gui
127*055d4590SKeyi Gui        <td>
128*055d4590SKeyi Gui          4.8.1.4
129*055d4590SKeyi Gui        </td>
130*055d4590SKeyi Gui
131*055d4590SKeyi Gui        <td>
132*055d4590SKeyi Gui          DX
133*055d4590SKeyi Gui        </td>
134*055d4590SKeyi Gui      </tr>
135*055d4590SKeyi Gui
136*055d4590SKeyi Gui      <tr>
137*055d4590SKeyi Gui        <td>
138*055d4590SKeyi Gui          A5
139*055d4590SKeyi Gui        </td>
140*055d4590SKeyi Gui
141*055d4590SKeyi Gui        <td>
142*055d4590SKeyi Gui          The index of instruction <code>n+1</code> must equal the index of
143*055d4590SKeyi Gui          instruction <code>n</code> plus the length of instruction
144*055d4590SKeyi Gui          <code>n</code>, taking into account a possible <code>wide</code>
145*055d4590SKeyi Gui          instruction. Opcodes modified by a <code>wide</code> instruction must
146*055d4590SKeyi Gui          not be directly reachable.
147*055d4590SKeyi Gui        </td>
148*055d4590SKeyi Gui
149*055d4590SKeyi Gui        <td>
150*055d4590SKeyi Gui          4.8.1.5
151*055d4590SKeyi Gui        </td>
152*055d4590SKeyi Gui
153*055d4590SKeyi Gui        <td>
154*055d4590SKeyi Gui          DX
155*055d4590SKeyi Gui        </td>
156*055d4590SKeyi Gui      </tr>
157*055d4590SKeyi Gui
158*055d4590SKeyi Gui      <tr>
159*055d4590SKeyi Gui        <td>
160*055d4590SKeyi Gui          A6
161*055d4590SKeyi Gui        </td>
162*055d4590SKeyi Gui
163*055d4590SKeyi Gui        <td>
164*055d4590SKeyi Gui          The last instruction in <code>code</code> array must end at index
165*055d4590SKeyi Gui          <code>code_length-1</code>.
166*055d4590SKeyi Gui        </td>
167*055d4590SKeyi Gui
168*055d4590SKeyi Gui        <td>
169*055d4590SKeyi Gui          4.8.1.6
170*055d4590SKeyi Gui        </td>
171*055d4590SKeyi Gui
172*055d4590SKeyi Gui        <td>
173*055d4590SKeyi Gui          DX
174*055d4590SKeyi Gui        </td>
175*055d4590SKeyi Gui      </tr>
176*055d4590SKeyi Gui
177*055d4590SKeyi Gui      <tr>
178*055d4590SKeyi Gui        <td>
179*055d4590SKeyi Gui          A7
180*055d4590SKeyi Gui        </td>
181*055d4590SKeyi Gui
182*055d4590SKeyi Gui        <td>
183*055d4590SKeyi Gui          All jump and branch targets must be opcodes within the same method.
184*055d4590SKeyi Gui          Opcodes modified by a <code>wide</code> instruction must not be
185*055d4590SKeyi Gui          directly reachable via a jump or branch instruction.
186*055d4590SKeyi Gui        </td>
187*055d4590SKeyi Gui
188*055d4590SKeyi Gui        <td>
189*055d4590SKeyi Gui          4.8.1.7
190*055d4590SKeyi Gui        </td>
191*055d4590SKeyi Gui
192*055d4590SKeyi Gui        <td>
193*055d4590SKeyi Gui          DX
194*055d4590SKeyi Gui        </td>
195*055d4590SKeyi Gui      </tr>
196*055d4590SKeyi Gui
197*055d4590SKeyi Gui      <tr>
198*055d4590SKeyi Gui        <td>
199*055d4590SKeyi Gui          A8
200*055d4590SKeyi Gui        </td>
201*055d4590SKeyi Gui
202*055d4590SKeyi Gui        <td>
203*055d4590SKeyi Gui          All targets of a <code>tableswitch</code> instruction must be opcodes
204*055d4590SKeyi Gui          within the same method. Upper and lower bounds must be consistent.
205*055d4590SKeyi Gui          Opcodes modified by a <code>wide</code> instruction must not be
206*055d4590SKeyi Gui          directly reachable via a <code>tableswitch</code> instruction.
207*055d4590SKeyi Gui        </td>
208*055d4590SKeyi Gui
209*055d4590SKeyi Gui        <td>
210*055d4590SKeyi Gui          4.8.1.8
211*055d4590SKeyi Gui        </td>
212*055d4590SKeyi Gui
213*055d4590SKeyi Gui        <td>
214*055d4590SKeyi Gui          DX
215*055d4590SKeyi Gui        </td>
216*055d4590SKeyi Gui      </tr>
217*055d4590SKeyi Gui
218*055d4590SKeyi Gui      <tr>
219*055d4590SKeyi Gui        <td>
220*055d4590SKeyi Gui          A9
221*055d4590SKeyi Gui        </td>
222*055d4590SKeyi Gui
223*055d4590SKeyi Gui        <td>
224*055d4590SKeyi Gui          All targets of a <code>lookupswitch</code> instruction must be opcodes
225*055d4590SKeyi Gui          within the same method. Its table must be consistent and sorted
226*055d4590SKeyi Gui          low-to-high. Opcodes modified by a <code>wide</code> instruction must
227*055d4590SKeyi Gui          not be directly reachable via a <code>lookupswitch</code> instruction.
228*055d4590SKeyi Gui        </td>
229*055d4590SKeyi Gui
230*055d4590SKeyi Gui        <td>
231*055d4590SKeyi Gui          4.8.1.9
232*055d4590SKeyi Gui        </td>
233*055d4590SKeyi Gui
234*055d4590SKeyi Gui        <td>
235*055d4590SKeyi Gui          DX
236*055d4590SKeyi Gui        </td>
237*055d4590SKeyi Gui      </tr>
238*055d4590SKeyi Gui
239*055d4590SKeyi Gui      <tr>
240*055d4590SKeyi Gui        <td>
241*055d4590SKeyi Gui          A10
242*055d4590SKeyi Gui        </td>
243*055d4590SKeyi Gui
244*055d4590SKeyi Gui        <td>
245*055d4590SKeyi Gui          The operands of <code>ldc</code> and <code>ldc_w</code> instructions
246*055d4590SKeyi Gui          must be valid indices into the constant pool. The respective entries
247*055d4590SKeyi Gui          must be of type <code>CONSTANT_Integer</code>,
248*055d4590SKeyi Gui          <code>CONSTANT_Float</code>, or <code>CONSTANT_String</code>.
249*055d4590SKeyi Gui        </td>
250*055d4590SKeyi Gui
251*055d4590SKeyi Gui        <td>
252*055d4590SKeyi Gui          4.8.1.10
253*055d4590SKeyi Gui        </td>
254*055d4590SKeyi Gui
255*055d4590SKeyi Gui        <td>
256*055d4590SKeyi Gui          DX
257*055d4590SKeyi Gui        </td>
258*055d4590SKeyi Gui      </tr>
259*055d4590SKeyi Gui
260*055d4590SKeyi Gui      <tr>
261*055d4590SKeyi Gui        <td>
262*055d4590SKeyi Gui          A11
263*055d4590SKeyi Gui        </td>
264*055d4590SKeyi Gui
265*055d4590SKeyi Gui        <td>
266*055d4590SKeyi Gui          The operands of <code>ldc2_w</code> instructions must be valid indices
267*055d4590SKeyi Gui          into the constant pool. The respective entries must be of type
268*055d4590SKeyi Gui          <code>CONSTANT_Long</code> or <code>CONSTANT_Double</code>. The
269*055d4590SKeyi Gui          subsequent constant pool entry must be valid and remain unused.
270*055d4590SKeyi Gui        </td>
271*055d4590SKeyi Gui
272*055d4590SKeyi Gui        <td>
273*055d4590SKeyi Gui          4.8.1.11
274*055d4590SKeyi Gui        </td>
275*055d4590SKeyi Gui
276*055d4590SKeyi Gui        <td>
277*055d4590SKeyi Gui          DX
278*055d4590SKeyi Gui        </td>
279*055d4590SKeyi Gui      </tr>
280*055d4590SKeyi Gui
281*055d4590SKeyi Gui      <tr>
282*055d4590SKeyi Gui        <td>
283*055d4590SKeyi Gui          A12
284*055d4590SKeyi Gui        </td>
285*055d4590SKeyi Gui
286*055d4590SKeyi Gui        <td>
287*055d4590SKeyi Gui          The Operands of <code>get&lt;kind&gt;</code> and
288*055d4590SKeyi Gui          <code>put&lt;kind&gt;</code> instructions must be valid indices into
289*055d4590SKeyi Gui          constant pool. The respective entries must be of type
290*055d4590SKeyi Gui          <code>CONSTANT_Fieldref</code>.
291*055d4590SKeyi Gui        </td>
292*055d4590SKeyi Gui
293*055d4590SKeyi Gui        <td>
294*055d4590SKeyi Gui          4.8.1.12
295*055d4590SKeyi Gui        </td>
296*055d4590SKeyi Gui
297*055d4590SKeyi Gui        <td>
298*055d4590SKeyi Gui          DX
299*055d4590SKeyi Gui        </td>
300*055d4590SKeyi Gui      </tr>
301*055d4590SKeyi Gui
302*055d4590SKeyi Gui      <tr>
303*055d4590SKeyi Gui        <td>
304*055d4590SKeyi Gui          A13
305*055d4590SKeyi Gui        </td>
306*055d4590SKeyi Gui
307*055d4590SKeyi Gui        <td>
308*055d4590SKeyi Gui          The first two operands of <code>invokevirtual</code>,
309*055d4590SKeyi Gui          <code>invokespecial</code>, and <code>invokestatic</code> must form a
310*055d4590SKeyi Gui          valid 16-bit index into the constant pool. The respective entries must
311*055d4590SKeyi Gui          be of type <code>CONSTANT_Methodref</code>.
312*055d4590SKeyi Gui        </td>
313*055d4590SKeyi Gui
314*055d4590SKeyi Gui        <td>
315*055d4590SKeyi Gui          4.8.1.13
316*055d4590SKeyi Gui        </td>
317*055d4590SKeyi Gui
318*055d4590SKeyi Gui        <td>
319*055d4590SKeyi Gui          DX
320*055d4590SKeyi Gui        </td>
321*055d4590SKeyi Gui      </tr>
322*055d4590SKeyi Gui
323*055d4590SKeyi Gui      <tr>
324*055d4590SKeyi Gui        <td>
325*055d4590SKeyi Gui          A14
326*055d4590SKeyi Gui        </td>
327*055d4590SKeyi Gui
328*055d4590SKeyi Gui        <td>
329*055d4590SKeyi Gui          Methods whose names start with '<' must only be invoked implicitly by
330*055d4590SKeyi Gui          the VM, not by class file code. The only exception is the instance
331*055d4590SKeyi Gui          initializer, which may be invoked by <code>invokespecial</code>.
332*055d4590SKeyi Gui        </td>
333*055d4590SKeyi Gui
334*055d4590SKeyi Gui        <td>
335*055d4590SKeyi Gui          4.8.1.14
336*055d4590SKeyi Gui        </td>
337*055d4590SKeyi Gui
338*055d4590SKeyi Gui        <td>
339*055d4590SKeyi Gui          DX
340*055d4590SKeyi Gui        </td>
341*055d4590SKeyi Gui      </tr>
342*055d4590SKeyi Gui
343*055d4590SKeyi Gui      <tr>
344*055d4590SKeyi Gui        <td>
345*055d4590SKeyi Gui          A15
346*055d4590SKeyi Gui        </td>
347*055d4590SKeyi Gui
348*055d4590SKeyi Gui        <td>
349*055d4590SKeyi Gui          The first two operands of <code>invokeinterface</code> must form a
350*055d4590SKeyi Gui          valid 16-bit index into the constant pool. The entry must be of type
351*055d4590SKeyi Gui          <code>CONSTANT_Interface_Methodref</code>. The third operand must
352*055d4590SKeyi Gui          specify number of local variables and the fourth operand must always
353*055d4590SKeyi Gui          be zero.
354*055d4590SKeyi Gui        </td>
355*055d4590SKeyi Gui
356*055d4590SKeyi Gui        <td>
357*055d4590SKeyi Gui          4.8.1.15
358*055d4590SKeyi Gui        </td>
359*055d4590SKeyi Gui
360*055d4590SKeyi Gui        <td>
361*055d4590SKeyi Gui          DX
362*055d4590SKeyi Gui        </td>
363*055d4590SKeyi Gui      </tr>
364*055d4590SKeyi Gui
365*055d4590SKeyi Gui      <tr>
366*055d4590SKeyi Gui        <td>
367*055d4590SKeyi Gui          A16
368*055d4590SKeyi Gui        </td>
369*055d4590SKeyi Gui
370*055d4590SKeyi Gui        <td>
371*055d4590SKeyi Gui          The operands of <code>instanceof</code>, <code>checkcast</code>,
372*055d4590SKeyi Gui          <code>new</code>, and <code>anewarray</code> instructions must
373*055d4590SKeyi Gui          be a valid index into the constant pool. The first two operands of
374*055d4590SKeyi Gui          <code>multianewarray</code> instruction must form a valid 16-bit index
375*055d4590SKeyi Gui          into the constant pool. All respective entries must be of type
376*055d4590SKeyi Gui          <code>CONSTANT_Class</code>.
377*055d4590SKeyi Gui        </td>
378*055d4590SKeyi Gui
379*055d4590SKeyi Gui        <td>
380*055d4590SKeyi Gui          4.8.1.16
381*055d4590SKeyi Gui        </td>
382*055d4590SKeyi Gui
383*055d4590SKeyi Gui        <td>
384*055d4590SKeyi Gui          DX
385*055d4590SKeyi Gui        </td>
386*055d4590SKeyi Gui      </tr>
387*055d4590SKeyi Gui
388*055d4590SKeyi Gui     <tr>
389*055d4590SKeyi Gui        <td>
390*055d4590SKeyi Gui          A17
391*055d4590SKeyi Gui        </td>
392*055d4590SKeyi Gui
393*055d4590SKeyi Gui        <td>
394*055d4590SKeyi Gui          The dimensions of an array created by <code>anewarray</code>
395*055d4590SKeyi Gui          instructions must be less than <code>256</code>.
396*055d4590SKeyi Gui        </td>
397*055d4590SKeyi Gui
398*055d4590SKeyi Gui        <td>
399*055d4590SKeyi Gui          4.8.1.17
400*055d4590SKeyi Gui        </td>
401*055d4590SKeyi Gui
402*055d4590SKeyi Gui        <td>
403*055d4590SKeyi Gui          DX
404*055d4590SKeyi Gui        </td>
405*055d4590SKeyi Gui      </tr>
406*055d4590SKeyi Gui
407*055d4590SKeyi Gui      <tr>
408*055d4590SKeyi Gui        <td>
409*055d4590SKeyi Gui          A18
410*055d4590SKeyi Gui        </td>
411*055d4590SKeyi Gui
412*055d4590SKeyi Gui        <td>
413*055d4590SKeyi Gui          The <code>new</code> instruction must not reference array classes,
414*055d4590SKeyi Gui          interfaces, or abstract classes.
415*055d4590SKeyi Gui        </td>
416*055d4590SKeyi Gui
417*055d4590SKeyi Gui        <td>
418*055d4590SKeyi Gui          4.8.1.18
419*055d4590SKeyi Gui        </td>
420*055d4590SKeyi Gui
421*055d4590SKeyi Gui        <td>
422*055d4590SKeyi Gui          DX
423*055d4590SKeyi Gui        </td>
424*055d4590SKeyi Gui      </tr>
425*055d4590SKeyi Gui
426*055d4590SKeyi Gui      <tr>
427*055d4590SKeyi Gui        <td>
428*055d4590SKeyi Gui          A19
429*055d4590SKeyi Gui        </td>
430*055d4590SKeyi Gui
431*055d4590SKeyi Gui        <td>
432*055d4590SKeyi Gui          The type referenced by a <code>multinewarray</code> instruction must
433*055d4590SKeyi Gui          have at least as many dimensions as specified in the instruction. The
434*055d4590SKeyi Gui          dimensions operand must not be <code>0</code>
435*055d4590SKeyi Gui        </td>
436*055d4590SKeyi Gui
437*055d4590SKeyi Gui        <td>
438*055d4590SKeyi Gui          4.8.1.19
439*055d4590SKeyi Gui        </td>
440*055d4590SKeyi Gui
441*055d4590SKeyi Gui        <td>
442*055d4590SKeyi Gui          DX
443*055d4590SKeyi Gui        </td>
444*055d4590SKeyi Gui      </tr>
445*055d4590SKeyi Gui
446*055d4590SKeyi Gui      <tr>
447*055d4590SKeyi Gui        <td>
448*055d4590SKeyi Gui          A20
449*055d4590SKeyi Gui        </td>
450*055d4590SKeyi Gui
451*055d4590SKeyi Gui        <td>
452*055d4590SKeyi Gui          The type referenced by a <code>newarray</code> instruction must be a
453*055d4590SKeyi Gui          valid, non-reference type.
454*055d4590SKeyi Gui        </td>
455*055d4590SKeyi Gui
456*055d4590SKeyi Gui        <td>
457*055d4590SKeyi Gui          4.8.1.20
458*055d4590SKeyi Gui        </td>
459*055d4590SKeyi Gui
460*055d4590SKeyi Gui        <td>
461*055d4590SKeyi Gui          DX
462*055d4590SKeyi Gui        </td>
463*055d4590SKeyi Gui      </tr>
464*055d4590SKeyi Gui
465*055d4590SKeyi Gui      <tr>
466*055d4590SKeyi Gui        <td>
467*055d4590SKeyi Gui          A21
468*055d4590SKeyi Gui        </td>
469*055d4590SKeyi Gui
470*055d4590SKeyi Gui        <td>
471*055d4590SKeyi Gui          The index operand of instructions explicitly referencing single-width
472*055d4590SKeyi Gui          local variables must be non-negative and smaller than
473*055d4590SKeyi Gui          <code>max_locals</code>.
474*055d4590SKeyi Gui        </td>
475*055d4590SKeyi Gui
476*055d4590SKeyi Gui        <td>
477*055d4590SKeyi Gui          4.8.1.21
478*055d4590SKeyi Gui        </td>
479*055d4590SKeyi Gui
480*055d4590SKeyi Gui        <td>
481*055d4590SKeyi Gui          DX
482*055d4590SKeyi Gui        </td>
483*055d4590SKeyi Gui      </tr>
484*055d4590SKeyi Gui
485*055d4590SKeyi Gui      <tr>
486*055d4590SKeyi Gui        <td>
487*055d4590SKeyi Gui          A22
488*055d4590SKeyi Gui        </td>
489*055d4590SKeyi Gui
490*055d4590SKeyi Gui        <td>
491*055d4590SKeyi Gui          The index operand of instructions implicitly referencing single-width
492*055d4590SKeyi Gui          local variables must be non-negative and smaller than
493*055d4590SKeyi Gui          <code>max_locals</code>.
494*055d4590SKeyi Gui        </td>
495*055d4590SKeyi Gui
496*055d4590SKeyi Gui        <td>
497*055d4590SKeyi Gui          4.8.1.22
498*055d4590SKeyi Gui        </td>
499*055d4590SKeyi Gui
500*055d4590SKeyi Gui        <td>
501*055d4590SKeyi Gui          DX
502*055d4590SKeyi Gui        </td>
503*055d4590SKeyi Gui      </tr>
504*055d4590SKeyi Gui
505*055d4590SKeyi Gui      <tr>
506*055d4590SKeyi Gui        <td>
507*055d4590SKeyi Gui          A23
508*055d4590SKeyi Gui        </td>
509*055d4590SKeyi Gui
510*055d4590SKeyi Gui        <td>
511*055d4590SKeyi Gui          The index operand of instructions explicitly referencing double-width
512*055d4590SKeyi Gui          local variables must be non-negative and smaller than
513*055d4590SKeyi Gui          <code>max_locals-1</code>.
514*055d4590SKeyi Gui        </td>
515*055d4590SKeyi Gui
516*055d4590SKeyi Gui        <td>
517*055d4590SKeyi Gui          4.8.1.23
518*055d4590SKeyi Gui        </td>
519*055d4590SKeyi Gui
520*055d4590SKeyi Gui        <td>
521*055d4590SKeyi Gui          DX
522*055d4590SKeyi Gui        </td>
523*055d4590SKeyi Gui      </tr>
524*055d4590SKeyi Gui
525*055d4590SKeyi Gui      <tr>
526*055d4590SKeyi Gui        <td>
527*055d4590SKeyi Gui          A24
528*055d4590SKeyi Gui        </td>
529*055d4590SKeyi Gui
530*055d4590SKeyi Gui        <td>
531*055d4590SKeyi Gui          The index operand of instructions implicitly referencing double-width
532*055d4590SKeyi Gui          local variables must be non-negative and smaller than
533*055d4590SKeyi Gui          <code>max_locals-1</code>.
534*055d4590SKeyi Gui        </td>
535*055d4590SKeyi Gui
536*055d4590SKeyi Gui        <td>
537*055d4590SKeyi Gui          4.8.1.24
538*055d4590SKeyi Gui        </td>
539*055d4590SKeyi Gui
540*055d4590SKeyi Gui        <td>
541*055d4590SKeyi Gui          DX
542*055d4590SKeyi Gui        </td>
543*055d4590SKeyi Gui      </tr>
544*055d4590SKeyi Gui
545*055d4590SKeyi Gui      <tr>
546*055d4590SKeyi Gui        <td>
547*055d4590SKeyi Gui          A25
548*055d4590SKeyi Gui        </td>
549*055d4590SKeyi Gui
550*055d4590SKeyi Gui        <td>
551*055d4590SKeyi Gui          The index operand of <code>wide</code> instructions explicitly
552*055d4590SKeyi Gui          referencing single-width local variables must be non-negative and
553*055d4590SKeyi Gui          smaller than <code>max_locals</code>.
554*055d4590SKeyi Gui        </td>
555*055d4590SKeyi Gui
556*055d4590SKeyi Gui        <td>
557*055d4590SKeyi Gui          4.8.1.25
558*055d4590SKeyi Gui        </td>
559*055d4590SKeyi Gui
560*055d4590SKeyi Gui        <td>
561*055d4590SKeyi Gui          DX
562*055d4590SKeyi Gui        </td>
563*055d4590SKeyi Gui      </tr>
564*055d4590SKeyi Gui
565*055d4590SKeyi Gui      <tr>
566*055d4590SKeyi Gui        <td>
567*055d4590SKeyi Gui          A26
568*055d4590SKeyi Gui        </td>
569*055d4590SKeyi Gui
570*055d4590SKeyi Gui        <td>
571*055d4590SKeyi Gui          The index operand of <code>wide</code> instructions explicitly
572*055d4590SKeyi Gui          referencing double-width local variables must be non-negative and
573*055d4590SKeyi Gui          smaller than <code>max_locals-1</code>.
574*055d4590SKeyi Gui        </td>
575*055d4590SKeyi Gui
576*055d4590SKeyi Gui        <td>
577*055d4590SKeyi Gui          4.8.1.25
578*055d4590SKeyi Gui        </td>
579*055d4590SKeyi Gui
580*055d4590SKeyi Gui        <td>
581*055d4590SKeyi Gui          DX
582*055d4590SKeyi Gui        </td>
583*055d4590SKeyi Gui      </tr>
584*055d4590SKeyi Gui    </table>
585*055d4590SKeyi Gui
586*055d4590SKeyi Gui    <h2>
587*055d4590SKeyi Gui      Structural constraints
588*055d4590SKeyi Gui    </h2>
589*055d4590SKeyi Gui
590*055d4590SKeyi Gui    <p>
591*055d4590SKeyi Gui    Structural constraints are constraints on relationships between several
592*055d4590SKeyi Gui    elements of the bytecode. They usually can't be checked without employing
593*055d4590SKeyi Gui    control or data-flow analysis techniques.
594*055d4590SKeyi Gui    </p>
595*055d4590SKeyi Gui
596*055d4590SKeyi Gui    <table>
597*055d4590SKeyi Gui      <tr>
598*055d4590SKeyi Gui        <th>
599*055d4590SKeyi Gui          Identifier
600*055d4590SKeyi Gui        </th>
601*055d4590SKeyi Gui
602*055d4590SKeyi Gui        <th>
603*055d4590SKeyi Gui          Description
604*055d4590SKeyi Gui        </th>
605*055d4590SKeyi Gui
606*055d4590SKeyi Gui        <th>
607*055d4590SKeyi Gui          Spec equivalent
608*055d4590SKeyi Gui        </th>
609*055d4590SKeyi Gui
610*055d4590SKeyi Gui        <th>
611*055d4590SKeyi Gui          Failure mode
612*055d4590SKeyi Gui        </th>
613*055d4590SKeyi Gui      </tr>
614*055d4590SKeyi Gui
615*055d4590SKeyi Gui      <tr>
616*055d4590SKeyi Gui        <td>
617*055d4590SKeyi Gui          B1
618*055d4590SKeyi Gui        </td>
619*055d4590SKeyi Gui
620*055d4590SKeyi Gui        <td>
621*055d4590SKeyi Gui          The number and types of arguments (operands and local variables) must
622*055d4590SKeyi Gui          always match the instruction.
623*055d4590SKeyi Gui        </td>
624*055d4590SKeyi Gui
625*055d4590SKeyi Gui        <td>
626*055d4590SKeyi Gui          4.8.2.1
627*055d4590SKeyi Gui        </td>
628*055d4590SKeyi Gui
629*055d4590SKeyi Gui        <td>
630*055d4590SKeyi Gui          DX
631*055d4590SKeyi Gui        </td>
632*055d4590SKeyi Gui      </tr>
633*055d4590SKeyi Gui
634*055d4590SKeyi Gui      <tr>
635*055d4590SKeyi Gui        <td>
636*055d4590SKeyi Gui          B2
637*055d4590SKeyi Gui        </td>
638*055d4590SKeyi Gui
639*055d4590SKeyi Gui        <td>
640*055d4590SKeyi Gui          The operand stack must have the same depth for all executions paths
641*055d4590SKeyi Gui          leading to an instruction.
642*055d4590SKeyi Gui        </td>
643*055d4590SKeyi Gui
644*055d4590SKeyi Gui        <td>
645*055d4590SKeyi Gui          4.8.2.2
646*055d4590SKeyi Gui        </td>
647*055d4590SKeyi Gui
648*055d4590SKeyi Gui        <td>
649*055d4590SKeyi Gui          DX
650*055d4590SKeyi Gui        </td>
651*055d4590SKeyi Gui      </tr>
652*055d4590SKeyi Gui
653*055d4590SKeyi Gui      <tr>
654*055d4590SKeyi Gui        <td>
655*055d4590SKeyi Gui          B3
656*055d4590SKeyi Gui        </td>
657*055d4590SKeyi Gui
658*055d4590SKeyi Gui        <td>
659*055d4590SKeyi Gui          Local variable pairs must never be broken up.
660*055d4590SKeyi Gui        </td>
661*055d4590SKeyi Gui
662*055d4590SKeyi Gui        <td>
663*055d4590SKeyi Gui          4.8.2.3
664*055d4590SKeyi Gui        </td>
665*055d4590SKeyi Gui
666*055d4590SKeyi Gui        <td>
667*055d4590SKeyi Gui          DX
668*055d4590SKeyi Gui        </td>
669*055d4590SKeyi Gui      </tr>
670*055d4590SKeyi Gui
671*055d4590SKeyi Gui      <tr>
672*055d4590SKeyi Gui        <td>
673*055d4590SKeyi Gui          B4
674*055d4590SKeyi Gui        </td>
675*055d4590SKeyi Gui
676*055d4590SKeyi Gui        <td>
677*055d4590SKeyi Gui          A local variable (or pair) has to be assigned first before it can be
678*055d4590SKeyi Gui          read.
679*055d4590SKeyi Gui        </td>
680*055d4590SKeyi Gui
681*055d4590SKeyi Gui        <td>
682*055d4590SKeyi Gui          4.8.2.4
683*055d4590SKeyi Gui        </td>
684*055d4590SKeyi Gui
685*055d4590SKeyi Gui        <td>
686*055d4590SKeyi Gui          DX
687*055d4590SKeyi Gui        </td>
688*055d4590SKeyi Gui      </tr>
689*055d4590SKeyi Gui
690*055d4590SKeyi Gui      <tr>
691*055d4590SKeyi Gui        <td>
692*055d4590SKeyi Gui          B5
693*055d4590SKeyi Gui        </td>
694*055d4590SKeyi Gui
695*055d4590SKeyi Gui        <td>
696*055d4590SKeyi Gui          The operand stack must never grow beyond <code>max_stack</code>.
697*055d4590SKeyi Gui        </td>
698*055d4590SKeyi Gui
699*055d4590SKeyi Gui        <td>
700*055d4590SKeyi Gui          4.8.2.5
701*055d4590SKeyi Gui        </td>
702*055d4590SKeyi Gui
703*055d4590SKeyi Gui        <td>
704*055d4590SKeyi Gui          DX
705*055d4590SKeyi Gui        </td>
706*055d4590SKeyi Gui      </tr>
707*055d4590SKeyi Gui
708*055d4590SKeyi Gui      <tr>
709*055d4590SKeyi Gui        <td>
710*055d4590SKeyi Gui          B6
711*055d4590SKeyi Gui        </td>
712*055d4590SKeyi Gui
713*055d4590SKeyi Gui        <td>
714*055d4590SKeyi Gui          The operand stack must never underflow.
715*055d4590SKeyi Gui        </td>
716*055d4590SKeyi Gui
717*055d4590SKeyi Gui        <td>
718*055d4590SKeyi Gui          4.8.2.6
719*055d4590SKeyi Gui        </td>
720*055d4590SKeyi Gui
721*055d4590SKeyi Gui        <td>
722*055d4590SKeyi Gui          DX
723*055d4590SKeyi Gui        </td>
724*055d4590SKeyi Gui      </tr>
725*055d4590SKeyi Gui
726*055d4590SKeyi Gui      <tr>
727*055d4590SKeyi Gui        <td>
728*055d4590SKeyi Gui          B7
729*055d4590SKeyi Gui        </td>
730*055d4590SKeyi Gui
731*055d4590SKeyi Gui        <td>
732*055d4590SKeyi Gui          An <code>invokespecial</code> instruction must only invoke an instance
733*055d4590SKeyi Gui          initializer or a method in the current class or one of its
734*055d4590SKeyi Gui          superclasses.
735*055d4590SKeyi Gui        </td>
736*055d4590SKeyi Gui
737*055d4590SKeyi Gui        <td>
738*055d4590SKeyi Gui          4.8.2.7
739*055d4590SKeyi Gui        </td>
740*055d4590SKeyi Gui
741*055d4590SKeyi Gui        <td>
742*055d4590SKeyi Gui          VM
743*055d4590SKeyi Gui        </td>
744*055d4590SKeyi Gui      </tr>
745*055d4590SKeyi Gui
746*055d4590SKeyi Gui      <tr>
747*055d4590SKeyi Gui        <td>
748*055d4590SKeyi Gui          B8
749*055d4590SKeyi Gui        </td>
750*055d4590SKeyi Gui
751*055d4590SKeyi Gui        <td>
752*055d4590SKeyi Gui          An instance initializer must only be invoked on an uninitialized
753*055d4590SKeyi Gui          instance residing on the operand stack.
754*055d4590SKeyi Gui        </td>
755*055d4590SKeyi Gui
756*055d4590SKeyi Gui        <td>
757*055d4590SKeyi Gui          4.8.2.8
758*055d4590SKeyi Gui        </td>
759*055d4590SKeyi Gui
760*055d4590SKeyi Gui        <td>
761*055d4590SKeyi Gui          VM
762*055d4590SKeyi Gui        </td>
763*055d4590SKeyi Gui      </tr>
764*055d4590SKeyi Gui
765*055d4590SKeyi Gui      <tr>
766*055d4590SKeyi Gui        <td>
767*055d4590SKeyi Gui          B9
768*055d4590SKeyi Gui        </td>
769*055d4590SKeyi Gui
770*055d4590SKeyi Gui        <td>
771*055d4590SKeyi Gui          Instance methods may only be invoked on and instance fields may only
772*055d4590SKeyi Gui          be accessed on already initialized instances.
773*055d4590SKeyi Gui        </td>
774*055d4590SKeyi Gui
775*055d4590SKeyi Gui        <td>
776*055d4590SKeyi Gui          4.8.2.9
777*055d4590SKeyi Gui        </td>
778*055d4590SKeyi Gui
779*055d4590SKeyi Gui        <td>
780*055d4590SKeyi Gui          VM
781*055d4590SKeyi Gui        </td>
782*055d4590SKeyi Gui      </tr>
783*055d4590SKeyi Gui
784*055d4590SKeyi Gui      <tr>
785*055d4590SKeyi Gui        <td>
786*055d4590SKeyi Gui          B10
787*055d4590SKeyi Gui        </td>
788*055d4590SKeyi Gui
789*055d4590SKeyi Gui        <td>
790*055d4590SKeyi Gui           The must be no backwards branches with uninitialized instances on the
791*055d4590SKeyi Gui           operand stack or in local variables. There must be no code protected
792*055d4590SKeyi Gui           by an exception handler that contains local variables with
793*055d4590SKeyi Gui           uninitialized instances.
794*055d4590SKeyi Gui        </td>
795*055d4590SKeyi Gui
796*055d4590SKeyi Gui        <td>
797*055d4590SKeyi Gui          4.8.2.10
798*055d4590SKeyi Gui        </td>
799*055d4590SKeyi Gui
800*055d4590SKeyi Gui        <td>
801*055d4590SKeyi Gui          DX
802*055d4590SKeyi Gui        </td>
803*055d4590SKeyi Gui      </tr>
804*055d4590SKeyi Gui
805*055d4590SKeyi Gui      <tr>
806*055d4590SKeyi Gui        <td>
807*055d4590SKeyi Gui          B11
808*055d4590SKeyi Gui        </td>
809*055d4590SKeyi Gui
810*055d4590SKeyi Gui        <td>
811*055d4590SKeyi Gui           An instance initializer must call another instance initializer (same
812*055d4590SKeyi Gui           class or superclass) before any instance members can be accessed.
813*055d4590SKeyi Gui           Exceptions are non-inherited instance fields, which can be assigned
814*055d4590SKeyi Gui           before calling another initializer, and the <code>Object</code> class
815*055d4590SKeyi Gui           in general.
816*055d4590SKeyi Gui        </td>
817*055d4590SKeyi Gui
818*055d4590SKeyi Gui        <td>
819*055d4590SKeyi Gui          4.8.2.11
820*055d4590SKeyi Gui        </td>
821*055d4590SKeyi Gui
822*055d4590SKeyi Gui        <td>
823*055d4590SKeyi Gui          VM
824*055d4590SKeyi Gui        </td>
825*055d4590SKeyi Gui      </tr>
826*055d4590SKeyi Gui
827*055d4590SKeyi Gui      <tr>
828*055d4590SKeyi Gui        <td>
829*055d4590SKeyi Gui          B12
830*055d4590SKeyi Gui        </td>
831*055d4590SKeyi Gui
832*055d4590SKeyi Gui        <td>
833*055d4590SKeyi Gui           All actual method arguments must be assignment-compatible with formal
834*055d4590SKeyi Gui           arguments.
835*055d4590SKeyi Gui        </td>
836*055d4590SKeyi Gui
837*055d4590SKeyi Gui        <td>
838*055d4590SKeyi Gui          4.8.2.12
839*055d4590SKeyi Gui        </td>
840*055d4590SKeyi Gui
841*055d4590SKeyi Gui        <td>
842*055d4590SKeyi Gui          VM
843*055d4590SKeyi Gui        </td>
844*055d4590SKeyi Gui      </tr>
845*055d4590SKeyi Gui
846*055d4590SKeyi Gui      <tr>
847*055d4590SKeyi Gui        <td>
848*055d4590SKeyi Gui          B13
849*055d4590SKeyi Gui        </td>
850*055d4590SKeyi Gui
851*055d4590SKeyi Gui        <td>
852*055d4590SKeyi Gui           For each instance method invocation, the actual instance must be
853*055d4590SKeyi Gui           assignment-compatible with the class or interface specified in the
854*055d4590SKeyi Gui           instruction.
855*055d4590SKeyi Gui        </td>
856*055d4590SKeyi Gui
857*055d4590SKeyi Gui        <td>
858*055d4590SKeyi Gui          4.8.2.13
859*055d4590SKeyi Gui        </td>
860*055d4590SKeyi Gui
861*055d4590SKeyi Gui        <td>
862*055d4590SKeyi Gui          VM
863*055d4590SKeyi Gui        </td>
864*055d4590SKeyi Gui      </tr>
865*055d4590SKeyi Gui
866*055d4590SKeyi Gui      <tr>
867*055d4590SKeyi Gui        <td>
868*055d4590SKeyi Gui          B14
869*055d4590SKeyi Gui        </td>
870*055d4590SKeyi Gui
871*055d4590SKeyi Gui        <td>
872*055d4590SKeyi Gui           A returns instruction must match its method's return type.
873*055d4590SKeyi Gui        </td>
874*055d4590SKeyi Gui
875*055d4590SKeyi Gui        <td>
876*055d4590SKeyi Gui          4.8.2.14
877*055d4590SKeyi Gui        </td>
878*055d4590SKeyi Gui
879*055d4590SKeyi Gui        <td>
880*055d4590SKeyi Gui          VM
881*055d4590SKeyi Gui        </td>
882*055d4590SKeyi Gui      </tr>
883*055d4590SKeyi Gui
884*055d4590SKeyi Gui      <tr>
885*055d4590SKeyi Gui        <td>
886*055d4590SKeyi Gui          B15
887*055d4590SKeyi Gui        </td>
888*055d4590SKeyi Gui
889*055d4590SKeyi Gui        <td>
890*055d4590SKeyi Gui           When accessing protected members of a superclass, the actual type of
891*055d4590SKeyi Gui           the instance being accessed must be either the current class or one
892*055d4590SKeyi Gui           of its subclasses.
893*055d4590SKeyi Gui        </td>
894*055d4590SKeyi Gui
895*055d4590SKeyi Gui        <td>
896*055d4590SKeyi Gui          4.8.2.15
897*055d4590SKeyi Gui        </td>
898*055d4590SKeyi Gui
899*055d4590SKeyi Gui        <td>
900*055d4590SKeyi Gui          VM
901*055d4590SKeyi Gui        </td>
902*055d4590SKeyi Gui      </tr>
903*055d4590SKeyi Gui
904*055d4590SKeyi Gui     <tr>
905*055d4590SKeyi Gui        <td>
906*055d4590SKeyi Gui          B16
907*055d4590SKeyi Gui        </td>
908*055d4590SKeyi Gui
909*055d4590SKeyi Gui        <td>
910*055d4590SKeyi Gui           The type of a value stored into a static field must be
911*055d4590SKeyi Gui           assignment-compatible with or convertible to the field's type.
912*055d4590SKeyi Gui        </td>
913*055d4590SKeyi Gui
914*055d4590SKeyi Gui        <td>
915*055d4590SKeyi Gui          4.8.2.16
916*055d4590SKeyi Gui        </td>
917*055d4590SKeyi Gui
918*055d4590SKeyi Gui        <td>
919*055d4590SKeyi Gui          VM
920*055d4590SKeyi Gui        </td>
921*055d4590SKeyi Gui      </tr>
922*055d4590SKeyi Gui
923*055d4590SKeyi Gui      <tr>
924*055d4590SKeyi Gui        <td>
925*055d4590SKeyi Gui          B17
926*055d4590SKeyi Gui        </td>
927*055d4590SKeyi Gui
928*055d4590SKeyi Gui        <td>
929*055d4590SKeyi Gui           The type of a value stored into a field must be assignment-compatible
930*055d4590SKeyi Gui           with or convertible to the field's type.
931*055d4590SKeyi Gui        </td>
932*055d4590SKeyi Gui
933*055d4590SKeyi Gui        <td>
934*055d4590SKeyi Gui          4.8.2.17
935*055d4590SKeyi Gui        </td>
936*055d4590SKeyi Gui
937*055d4590SKeyi Gui        <td>
938*055d4590SKeyi Gui          VM
939*055d4590SKeyi Gui        </td>
940*055d4590SKeyi Gui      </tr>
941*055d4590SKeyi Gui
942*055d4590SKeyi Gui      <tr>
943*055d4590SKeyi Gui        <td>
944*055d4590SKeyi Gui          B18
945*055d4590SKeyi Gui        </td>
946*055d4590SKeyi Gui
947*055d4590SKeyi Gui        <td>
948*055d4590SKeyi Gui           The type of every value stored into an array must be
949*055d4590SKeyi Gui           assignment-compatible with the array's component type.
950*055d4590SKeyi Gui        </td>
951*055d4590SKeyi Gui
952*055d4590SKeyi Gui        <td>
953*055d4590SKeyi Gui          4.8.2.18
954*055d4590SKeyi Gui        </td>
955*055d4590SKeyi Gui
956*055d4590SKeyi Gui        <td>
957*055d4590SKeyi Gui          VM
958*055d4590SKeyi Gui        </td>
959*055d4590SKeyi Gui      </tr>
960*055d4590SKeyi Gui
961*055d4590SKeyi Gui      <tr>
962*055d4590SKeyi Gui        <td>
963*055d4590SKeyi Gui          B19
964*055d4590SKeyi Gui        </td>
965*055d4590SKeyi Gui
966*055d4590SKeyi Gui        <td>
967*055d4590SKeyi Gui           The operand of an <code>athrow</code> instruction must be
968*055d4590SKeyi Gui           assignment-compatible with <code>java.lang.Throwable</code>.
969*055d4590SKeyi Gui        </td>
970*055d4590SKeyi Gui
971*055d4590SKeyi Gui        <td>
972*055d4590SKeyi Gui          4.8.2.19
973*055d4590SKeyi Gui        </td>
974*055d4590SKeyi Gui
975*055d4590SKeyi Gui        <td>
976*055d4590SKeyi Gui          VM
977*055d4590SKeyi Gui        </td>
978*055d4590SKeyi Gui      </tr>
979*055d4590SKeyi Gui
980*055d4590SKeyi Gui      <tr>
981*055d4590SKeyi Gui        <td>
982*055d4590SKeyi Gui          B20
983*055d4590SKeyi Gui        </td>
984*055d4590SKeyi Gui
985*055d4590SKeyi Gui        <td>
986*055d4590SKeyi Gui           The last reachable instruction of a method must either be a backwards
987*055d4590SKeyi Gui           jump or branch, a return, or an <code>athrow</code> instruction. It
988*055d4590SKeyi Gui           must not be possible to leave the <code>code</code> array at the
989*055d4590SKeyi Gui           bottom.
990*055d4590SKeyi Gui        </td>
991*055d4590SKeyi Gui
992*055d4590SKeyi Gui        <td>
993*055d4590SKeyi Gui          4.8.2.20
994*055d4590SKeyi Gui        </td>
995*055d4590SKeyi Gui
996*055d4590SKeyi Gui        <td>
997*055d4590SKeyi Gui          VM
998*055d4590SKeyi Gui        </td>
999*055d4590SKeyi Gui      </tr>
1000*055d4590SKeyi Gui
1001*055d4590SKeyi Gui      <tr>
1002*055d4590SKeyi Gui        <td>
1003*055d4590SKeyi Gui          B21
1004*055d4590SKeyi Gui        </td>
1005*055d4590SKeyi Gui
1006*055d4590SKeyi Gui        <td>
1007*055d4590SKeyi Gui           Local variable values must not be used as return addresses.
1008*055d4590SKeyi Gui        </td>
1009*055d4590SKeyi Gui
1010*055d4590SKeyi Gui        <td>
1011*055d4590SKeyi Gui          4.8.2.21
1012*055d4590SKeyi Gui        </td>
1013*055d4590SKeyi Gui
1014*055d4590SKeyi Gui        <td>
1015*055d4590SKeyi Gui          VM
1016*055d4590SKeyi Gui        </td>
1017*055d4590SKeyi Gui      </tr>
1018*055d4590SKeyi Gui
1019*055d4590SKeyi Gui      <tr>
1020*055d4590SKeyi Gui        <td>
1021*055d4590SKeyi Gui          B22
1022*055d4590SKeyi Gui        </td>
1023*055d4590SKeyi Gui
1024*055d4590SKeyi Gui        <td>
1025*055d4590SKeyi Gui          There must be a single, uniquely determined return instruction per
1026*055d4590SKeyi Gui          subroutine call.
1027*055d4590SKeyi Gui        </td>
1028*055d4590SKeyi Gui
1029*055d4590SKeyi Gui        <td>
1030*055d4590SKeyi Gui          4.8.2.22
1031*055d4590SKeyi Gui        </td>
1032*055d4590SKeyi Gui
1033*055d4590SKeyi Gui        <td>
1034*055d4590SKeyi Gui          VM
1035*055d4590SKeyi Gui        </td>
1036*055d4590SKeyi Gui      </tr>
1037*055d4590SKeyi Gui
1038*055d4590SKeyi Gui      <tr>
1039*055d4590SKeyi Gui        <td>
1040*055d4590SKeyi Gui          B23
1041*055d4590SKeyi Gui        </td>
1042*055d4590SKeyi Gui
1043*055d4590SKeyi Gui        <td>
1044*055d4590SKeyi Gui          Subroutine calls must not be directly or indirectly self-recursive.
1045*055d4590SKeyi Gui        </td>
1046*055d4590SKeyi Gui
1047*055d4590SKeyi Gui        <td>
1048*055d4590SKeyi Gui          4.8.2.23
1049*055d4590SKeyi Gui        </td>
1050*055d4590SKeyi Gui
1051*055d4590SKeyi Gui        <td>
1052*055d4590SKeyi Gui          DX
1053*055d4590SKeyi Gui        </td>
1054*055d4590SKeyi Gui      </tr>
1055*055d4590SKeyi Gui
1056*055d4590SKeyi Gui      <tr>
1057*055d4590SKeyi Gui        <td>
1058*055d4590SKeyi Gui          B24
1059*055d4590SKeyi Gui        </td>
1060*055d4590SKeyi Gui
1061*055d4590SKeyi Gui        <td>
1062*055d4590SKeyi Gui           <code>ReturnAddress</code> instances must not be reused. If a
1063*055d4590SKeyi Gui           subroutine returns to a <code>ReturnAddress</code> further up the
1064*055d4590SKeyi Gui           stack than where its original call instruction is located, then all
1065*055d4590SKeyi Gui           <code>ReturnAddress</code> instances further down the stack must
1066*055d4590SKeyi Gui           never be used.
1067*055d4590SKeyi Gui        </td>
1068*055d4590SKeyi Gui
1069*055d4590SKeyi Gui        <td>
1070*055d4590SKeyi Gui          4.8.2.24
1071*055d4590SKeyi Gui        </td>
1072*055d4590SKeyi Gui
1073*055d4590SKeyi Gui        <td>
1074*055d4590SKeyi Gui          DX
1075*055d4590SKeyi Gui        </td>
1076*055d4590SKeyi Gui      </tr>
1077*055d4590SKeyi Gui
1078*055d4590SKeyi Gui    </table>
1079*055d4590SKeyi Gui  </body>
1080*055d4590SKeyi Gui</html>
1081