Home | History | Annotate | Download | only in smali
      1 # Copyright (C) 2015 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 LEquivalent;
     16 
     17 .super Ljava/lang/Object;
     18 
     19 .method public static method([I)V
     20    .registers 3
     21    const/4 v0, 0
     22    if-eq p0, v0, :first_if
     23    move-object v0, p0
     24    :first_if
     25    if-eqz v0, :second_if
     26    # Having this move-object used to confuse the type propagation
     27    # phase of the optimizing compiler: the phase propagates types
     28    # based on uses, but a move-object disappears after SSA, leaving
     29    # the compiler with a reference equivalent that has no use. So
     30    # we would consider the phi equivalent reference of v0, as dead,
     31    # even though it is the one that has the correct type.
     32    move-object v1, v0
     33    :second_if
     34    return-void
     35 .end method
     36