| ; Copyright (C) 2008 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. |
| |
| .source TestStubs.java |
| .interface abstract dot.junit.opcodes.aput_object.d.SuperInterface |
| |
| .source TestStubs.java |
| .interface public dot.junit.opcodes.aput_object.d.SuperInterface2 |
| |
| .source TestStubs.java |
| .class public dot.junit.opcodes.aput_object.d.SuperClass |
| .super java/lang/Object |
| .implements dot.junit.opcodes.aput_object.d.SuperInterface |
| .method public <init>()V |
| .limit regs 1 |
| |
| invoke-direct {v0}, java/lang/Object/<init>()V |
| return-void |
| .end method |
| |
| .source TestStubs.java |
| .class public dot.junit.opcodes.aput_object.d.SubClass |
| .super dot.junit.opcodes.aput_object.d.SuperClass |
| .method public <init>()V |
| .limit regs 1 |
| |
| invoke-direct {v0}, dot/junit/opcodes/aput_object/d/SuperClass/<init>()V |
| return-void |
| .end method |
| |
| |
| .source T_aput_object_3.java |
| .class public dot.junit.opcodes.aput_object.d.T_aput_object_3 |
| .super java/lang/Object |
| |
| |
| .method public <init>()V |
| .limit regs 1 |
| |
| invoke-direct {v0}, java/lang/Object/<init>()V |
| return-void |
| .end method |
| |
| .method public run()I |
| .limit regs 32 |
| |
| const v1, 0 |
| |
| const v0, 1 |
| ; v2 = SubClass[] |
| new-array v2, v0, [Ldot/junit/opcodes/aput_object/d/SubClass; |
| |
| ; v3 = SuperClass[] |
| new-array v3, v0, [Ldot/junit/opcodes/aput_object/d/SuperClass; |
| |
| ; v4 = SubClass |
| new-instance v4, dot/junit/opcodes/aput_object/d/SubClass |
| invoke-direct {v4}, dot/junit/opcodes/aput_object/d/SubClass/<init>()V |
| |
| ; v5 = SuperClass |
| new-instance v5, dot/junit/opcodes/aput_object/d/SuperClass |
| invoke-direct {v5}, dot/junit/opcodes/aput_object/d/SuperClass/<init>()V |
| |
| ; v6 = SuperInterface[] |
| new-array v6, v0, [Ldot/junit/opcodes/aput_object/d/SuperInterface; |
| |
| ; v7 = Object[] |
| new-array v7, v0, [Ljava/lang/Object; |
| |
| ; v8 = SuperInterface2[] |
| new-array v8, v0, [Ldot/junit/opcodes/aput_object/d/SuperInterface2; |
| |
| const/4 v0, 0 |
| |
| ; (SubClass -> SuperClass[]) |
| aput-object v4, v3, v0 |
| |
| ; (SubClass -> SuperInterface[]) |
| aput-object v4, v6, v0 |
| |
| ; (SubClass -> Object[]) |
| aput-object v4, v7, v0 |
| |
| ; !(SuperClass -> SubClass[]) |
| Label10: |
| aput-object v5, v2, v0 |
| Label11: |
| goto Label2 |
| Label12: |
| add-int/lit8 v1, v1, 1 |
| goto Label2 |
| |
| ; !(SuperClass -> SuperInterface2[]) |
| Label2: |
| Label20: |
| aput-object v5, v8, v0 |
| Label21: |
| goto Label3 |
| Label22: |
| add-int/lit8 v1, v1, 1 |
| goto Label3 |
| |
| ; !(SubClass[] -> SuperInterface[]) |
| Label3: |
| Label30: |
| aput-object v2, v6, v0 |
| Label31: |
| goto Label4 |
| Label32: |
| add-int/lit8 v1, v1, 1 |
| goto Label4 |
| |
| Label4: |
| return v1 |
| |
| .catch java/lang/ArrayStoreException from Label10 to Label11 using Label12 |
| .catch java/lang/ArrayStoreException from Label20 to Label21 using Label22 |
| .catch java/lang/ArrayStoreException from Label30 to Label31 using Label32 |
| .end method |
| |
| |