OSDN Git Service

original
[gb-231r1-is01/GB_2.3_IS01.git] / cts / tools / vm-tests / src / dot / junit / opcodes / aput_object / d / T_aput_object_3.d
diff --git a/cts/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d b/cts/tools/vm-tests/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d
new file mode 100644 (file)
index 0000000..4b2642d
--- /dev/null
@@ -0,0 +1,132 @@
+; 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
+
+