| # Tests invoke-polymorphic added in DEX version 38. |
| # Disassembled from dexdump test files. |
| # Repo: https://android.googlesource.com/platform/art/ |
| # File: test/dexdump/invoke-polymorphic.dex |
| |
| # Compile using smali: https://github.com/JesusFreke/smali |
| # java -jar smali.jar assemble invoke-polymorphic.smali --api 28 |
| |
| .class public LMain; |
| .super Ljava/lang/Object; |
| .source "Main.java" |
| |
| |
| # direct methods |
| .method public constructor <init>()V |
| .registers 1 |
| |
| .prologue |
| .line 9 |
| invoke-direct {p0}, Ljava/lang/Object;-><init>()V |
| |
| return-void |
| .end method |
| |
| .method public static main([Ljava/lang/String;)V |
| .registers 10 |
| .param p0, "args" # [Ljava/lang/String; |
| .annotation system Ldalvik/annotation/Throws; |
| value = { |
| Ljava/lang/Throwable; |
| } |
| .end annotation |
| |
| .prologue |
| const-wide v2, 0x400199999999999aL # 2.2 |
| |
| const/4 v4, 0x1 |
| |
| .line 31 |
| const/4 v0, 0x0 |
| |
| .line 32 |
| .local v0, "handle":Ljava/lang/invoke/MethodHandle; |
| const/4 v5, 0x0 |
| |
| .line 33 |
| .local v5, "o":Ljava/lang/Object; |
| const-string/jumbo v1, "a" |
| |
| move v6, v4 |
| |
| invoke-polymorphic/range {v0 .. v6}, Ljava/lang/invoke/MethodHandle;->invoke([Ljava/lang/Object;)Ljava/lang/Object;, (Ljava/lang/String;DILjava/lang/Object;I)Ljava/lang/String; |
| |
| move-result-object v7 |
| |
| .line 34 |
| .local v7, "s":Ljava/lang/String; |
| invoke-polymorphic {v0, v2, v3, v4}, Ljava/lang/invoke/MethodHandle;->invokeExact([Ljava/lang/Object;)Ljava/lang/Object;, (DI)I |
| |
| move-result v8 |
| |
| .line 35 |
| .local v8, "x":I |
| const-string/jumbo v1, "a" |
| |
| invoke-polymorphic {v0, v1, v2, v3, v4}, Ljava/lang/invoke/MethodHandle;->invoke([Ljava/lang/Object;)Ljava/lang/Object;, (Ljava/lang/String;DI)V |
| |
| .line 56 |
| return-void |
| .end method |