xref: /aosp_15_r20/external/google-smali/examples/InvokeCustom/BootstrapLinker.smali (revision 37f5703ca959d1ce24046e7595880d209e15c133)
1*37f5703cSAndroid Build Coastguard Worker.class public LBootstrapLinker;
2*37f5703cSAndroid Build Coastguard Worker
3*37f5703cSAndroid Build Coastguard Worker.super Ljava/lang/Object;
4*37f5703cSAndroid Build Coastguard Worker
5*37f5703cSAndroid Build Coastguard Worker.method public static normalLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
6*37f5703cSAndroid Build Coastguard Worker    .registers 15
7*37f5703cSAndroid Build Coastguard Worker
8*37f5703cSAndroid Build Coastguard Worker    sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
9*37f5703cSAndroid Build Coastguard Worker    const-string v3, "BootstrapLinker.normalLink - "
10*37f5703cSAndroid Build Coastguard Worker    invoke-virtual {v0, v3}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
11*37f5703cSAndroid Build Coastguard Worker    invoke-virtual {p3}, Ljava/lang/Object;->toString()Ljava/lang/String;
12*37f5703cSAndroid Build Coastguard Worker    move-result-object v1
13*37f5703cSAndroid Build Coastguard Worker    invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
14*37f5703cSAndroid Build Coastguard Worker
15*37f5703cSAndroid Build Coastguard Worker    const v0, 0
16*37f5703cSAndroid Build Coastguard Worker    const v1, 1
17*37f5703cSAndroid Build Coastguard Worker    invoke-virtual {p2, v0, v1}, Ljava/lang/invoke/MethodType;->dropParameterTypes(II)Ljava/lang/invoke/MethodType;
18*37f5703cSAndroid Build Coastguard Worker    move-result-object p2
19*37f5703cSAndroid Build Coastguard Worker
20*37f5703cSAndroid Build Coastguard Worker    const-class v1, LCustom;
21*37f5703cSAndroid Build Coastguard Worker
22*37f5703cSAndroid Build Coastguard Worker    invoke-virtual {p0, v1, p1, p2}, Ljava/lang/invoke/MethodHandles$Lookup;->findVirtual(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
23*37f5703cSAndroid Build Coastguard Worker    move-result-object v2
24*37f5703cSAndroid Build Coastguard Worker
25*37f5703cSAndroid Build Coastguard Worker    new-instance v0, Ljava/lang/invoke/ConstantCallSite;
26*37f5703cSAndroid Build Coastguard Worker    invoke-direct {v0, v2}, Ljava/lang/invoke/ConstantCallSite;-><init>(Ljava/lang/invoke/MethodHandle;)V
27*37f5703cSAndroid Build Coastguard Worker
28*37f5703cSAndroid Build Coastguard Worker    return-object v0
29*37f5703cSAndroid Build Coastguard Worker.end method
30*37f5703cSAndroid Build Coastguard Worker
31*37f5703cSAndroid Build Coastguard Worker
32*37f5703cSAndroid Build Coastguard Worker.method public static backwardsLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;)Ljava/lang/invoke/CallSite;
33*37f5703cSAndroid Build Coastguard Worker    .registers 15
34*37f5703cSAndroid Build Coastguard Worker
35*37f5703cSAndroid Build Coastguard Worker    sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
36*37f5703cSAndroid Build Coastguard Worker    const-string v3, "BootstrapLinker.backwardsLink - "
37*37f5703cSAndroid Build Coastguard Worker    invoke-virtual {v0, v3}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
38*37f5703cSAndroid Build Coastguard Worker    invoke-virtual {v0, p3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
39*37f5703cSAndroid Build Coastguard Worker
40*37f5703cSAndroid Build Coastguard Worker    const v0, 0
41*37f5703cSAndroid Build Coastguard Worker    const v1, 1
42*37f5703cSAndroid Build Coastguard Worker    invoke-virtual {p2, v0, v1}, Ljava/lang/invoke/MethodType;->dropParameterTypes(II)Ljava/lang/invoke/MethodType;
43*37f5703cSAndroid Build Coastguard Worker    move-result-object p2
44*37f5703cSAndroid Build Coastguard Worker
45*37f5703cSAndroid Build Coastguard Worker    new-instance v0, Ljava/lang/StringBuffer;
46*37f5703cSAndroid Build Coastguard Worker    invoke-direct {v0, p1}, Ljava/lang/StringBuffer;-><init>(Ljava/lang/String;)V
47*37f5703cSAndroid Build Coastguard Worker    invoke-virtual {v0}, Ljava/lang/StringBuffer;->reverse()Ljava/lang/StringBuffer;
48*37f5703cSAndroid Build Coastguard Worker    invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
49*37f5703cSAndroid Build Coastguard Worker    move-result-object p1
50*37f5703cSAndroid Build Coastguard Worker
51*37f5703cSAndroid Build Coastguard Worker    const-class v1, LCustom;
52*37f5703cSAndroid Build Coastguard Worker
53*37f5703cSAndroid Build Coastguard Worker    invoke-virtual {p0, v1, p1, p2}, Ljava/lang/invoke/MethodHandles$Lookup;->findVirtual(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
54*37f5703cSAndroid Build Coastguard Worker    move-result-object v2
55*37f5703cSAndroid Build Coastguard Worker
56*37f5703cSAndroid Build Coastguard Worker    new-instance v0, Ljava/lang/invoke/ConstantCallSite;
57*37f5703cSAndroid Build Coastguard Worker    invoke-direct {v0, v2}, Ljava/lang/invoke/ConstantCallSite;-><init>(Ljava/lang/invoke/MethodHandle;)V
58*37f5703cSAndroid Build Coastguard Worker
59*37f5703cSAndroid Build Coastguard Worker    return-object v0
60*37f5703cSAndroid Build Coastguard Worker.end method
61