blob: b7472cc0d6f3410b8beb78c7de920ad1d2e49f06 [file] [log] [blame]
; 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 public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperInterface
.source TestStubs.java
.interface public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperInterface2
.source TestStubs.java
.class public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperClass
.super java/lang/Object
.implements dot/junit/opcodes/check_cast/d/T_check_cast_2/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.check_cast.d.T_check_cast_2.SubClass
.super dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
.method public <init>()V
.limit regs 1
invoke-direct {v0}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass/<init>()V
return-void
.end method
.source T_check_cast_2.java
.class public dot.junit.opcodes.check_cast.d.T_check_cast_2
.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 20
const v1, 0
; (SubClass instanceof SuperClass)
new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V
check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
; (SubClass[] instanceof SuperClass[])
const v11, 1
new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
check-cast v10, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
; (SubClass[] instanceof Object)
new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
check-cast v10, java/lang/Object
; (SubClass instanceof SuperInterface)
new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V
check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface
; !(SuperClass instanceof SubClass)
Label1:
new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass/<init>()V
Label10:
check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
Label11:
goto Label2
Label12:
add-int/lit16 v1, v1, 1
goto Label2
; !(SubClass instanceof SuperInterface2)
Label2:
new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V
Label20:
check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface2
Label21:
goto Label3
Label22:
add-int/lit16 v1, v1, 1
goto Label3
; !(SubClass[] instanceof SuperInterface)
Label3:
new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
Label30:
check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface
Label31:
goto Label4
Label32:
add-int/lit16 v1, v1, 1
goto Label4
; !(SubClass[] instanceof SubClass)
Label4:
new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
Label40:
check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
Label41:
goto Label5
Label42:
add-int/lit16 v1, v1, 1
goto Label5
; !(SuperClass[] instanceof SubClass[])
Label5:
new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
Label50:
check-cast v10, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
Label51:
goto Label6
Label52:
add-int/lit16 v1, v1, 1
Label6:
return v1
.catch java/lang/ClassCastException from Label10 to Label11 using Label12
.catch java/lang/ClassCastException from Label20 to Label21 using Label22
.catch java/lang/ClassCastException from Label30 to Label31 using Label32
.catch java/lang/ClassCastException from Label40 to Label41 using Label42
.catch java/lang/ClassCastException from Label50 to Label51 using Label52
.end method