Home | History | Annotate | Download | only in jasmin
      1 ; Copyright (C) 2017 The Android Open Source Project
      2 ;
      3 ; Licensed under the Apache License, Version 2.0 (the "License");
      4 ; you may not use this file except in compliance with the License.
      5 ; You may obtain a copy of the License at
      6 ;
      7 ;      http://www.apache.org/licenses/LICENSE-2.0
      8 ;
      9 ; Unless required by applicable law or agreed to in writing, software
     10 ; distributed under the License is distributed on an "AS IS" BASIS,
     11 ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 ; See the License for the specific language governing permissions and
     13 ; limitations under the License.
     14 
     15 .class public Test5User
     16 .super java/lang/Object
     17 
     18 .method public static test()V
     19     .limit stack 2
     20     .limit locals 1
     21     new Test5Derived
     22     dup
     23     invokespecial Test5Derived.<init>()V
     24     astore_0
     25 
     26     ; Call an unresolved method bar() to force verification at runtime
     27     ; to populate the dex cache entry for Test5Base.foo()V.
     28     ; try { b.bar(); } catch (IncompatibleClassChangeError icce) { }
     29     aload_0
     30     dup ; Bogus operand to be swallowed by the pop in the non-exceptional path.
     31   catch_begin:
     32     invokevirtual Test5Derived.bar()V
     33   catch_end:
     34     pop ; Pops the exception or the bogus operand from above.
     35   .catch java/lang/IncompatibleClassChangeError from catch_begin to catch_end using catch_end
     36 
     37     aload_0
     38     invokevirtual Test5Derived.foo()V
     39     return
     40 .end method
     41