Home | History | Annotate | Download | only in smali
      1 #
      2 # Copyright (C) 2018 The Android Open Source Project
      3 #
      4 # Licensed under the Apache License, Version 2.0 (the "License");
      5 # you may not use this file except in compliance with the License.
      6 # You may obtain a copy of the License at
      7 #
      8 #     http://www.apache.org/licenses/LICENSE-2.0
      9 #
     10 # Unless required by applicable law or agreed to in writing, software
     11 # distributed under the License is distributed on an "AS IS" BASIS,
     12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13 # See the License for the specific language governing permissions and
     14 # limitations under the License.
     15 
     16 .source "VarHandleUnhappyAccessors.smali"
     17 
     18 .class public LVarHandleUnhappyAccessors;
     19 .super Ljava/lang/Object;
     20 
     21 .method public constructor <init>()V
     22 .registers 4
     23   invoke-direct {p0}, Ljava/lang/Object;-><init>()V
     24   invoke-static {}, LVarHandleUnhappyAccessors;->getVarHandle()Ljava/lang/invoke/VarHandle;
     25   move-result-object v0
     26   invoke-static {}, LVarHandleUnhappyAccessors;->getObjectArray()[Ljava/lang/Object;
     27   move-result-object v1
     28   invoke-static {v0, v1}, LVarHandleUnhappyAccessors;->compareAndExchange(Ljava/lang/invoke/VarHandle;[Ljava/lang/Object;)V
     29   invoke-static {v0}, LVarHandleUnhappyAccessors;->compareAndExchangeAcquire(Ljava/lang/invoke/VarHandle;)V
     30   invoke-static {v0}, LVarHandleUnhappyAccessors;->compareAndExchangeRelease(Ljava/lang/invoke/VarHandle;)V
     31   invoke-static {v0}, LVarHandleUnhappyAccessors;->compareAndSet(Ljava/lang/invoke/VarHandle;)V
     32   return-void
     33 .end method
     34 
     35 # The following methods all invoke VarHandle accessors but the targetted
     36 # accessor methods have the wrong signature.
     37 
     38 .method public static compareAndExchange(Ljava/lang/invoke/VarHandle;[Ljava/lang/Object;)V
     39 .registers 2
     40   invoke-polymorphic {p0, p1}, Ljava/lang/invoke/VarHandle;->compareAndExchange([Ljava/lang/Object;)Ljava/lang/Integer;, ([Ljava/lang/Object;)Ljava/lang/Object;
     41 .end method
     42 
     43 .method public static compareAndExchangeAcquire(Ljava/lang/invoke/VarHandle;)V
     44 .registers 2
     45   const/4 v0, 1
     46   invoke-polymorphic {p0, v0}, Ljava/lang/invoke/VarHandle;->compareAndExchangeAcquire(I)Ljava/lang/Object;, ([Ljava/lang/Object;)Ljava/lang/Object;
     47 .end method
     48 
     49 .method public static compareAndExchangeRelease(Ljava/lang/invoke/VarHandle;)V
     50 .registers 1
     51   invoke-polymorphic {p0}, Ljava/lang/invoke/VarHandle;->compareAndExchangeRelease()V, ([Ljava/lang/Object;)Ljava/lang/Object;
     52 .end method
     53 
     54 .method public static compareAndSet(Ljava/lang/invoke/VarHandle;)V
     55 .registers 2
     56   const/4 v0, 1
     57   invoke-polymorphic {p0, v0}, Ljava/lang/invoke/VarHandle;->compareAndSet(I)Z, ([Ljava/lang/Object;)Ljava/lang/Object;
     58 .end method
     59 
     60 .method public static getVarHandle()Ljava/lang/invoke/VarHandle;
     61 .registers 1
     62   const/4 v0, 0
     63   return-object v0
     64 .end method
     65 
     66 .method public static getObjectArray()[Ljava/lang/Object;
     67 .registers 1
     68   const/4 v0, 0
     69   return-object v0
     70 .end method
     71