16bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#
26bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#  Copyright (C) 2015 The Android Open Source Project
36bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#
46bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#  Licensed under the Apache License, Version 2.0 (the "License");
56bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#  you may not use this file except in compliance with the License.
66bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#  You may obtain a copy of the License at
76bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#
86bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#       http://www.apache.org/licenses/LICENSE-2.0
96bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#
106bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#  Unless required by applicable law or agreed to in writing, software
116bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#  distributed under the License is distributed on an "AS IS" BASIS,
126bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#  See the License for the specific language governing permissions and
146bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#  limitations under the License.
156bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin#
166bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.class public LMoveResult;
176bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.super Ljava/lang/Object;
186bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
196bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.method public constructor <init>()V
206bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.registers 1
216bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
226bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-void
236bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
246bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
256bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.method public static run()V
266bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.registers 8
276bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-static {}, LMoveResult;->testZ()V
286bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-static {}, LMoveResult;->testB()V
296bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-static {}, LMoveResult;->testS()V
306bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-static {}, LMoveResult;->testI()V
316bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-static {}, LMoveResult;->testC()V
326bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-static {}, LMoveResult;->testJ()V
336bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-static {}, LMoveResult;->testF()V
346bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-static {}, LMoveResult;->testD()V
356bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-static {}, LMoveResult;->testL()V
366bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
376bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-void
386bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
396bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
406bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Test that booleans are returned correctly via move-result.
416bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.method public static testZ()V
426bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 6
436bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
446918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    create-lambda v0, LMoveResult;->lambdaZ(J)Z
456bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-lambda v0, {}
466bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    move-result v2
476bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const v3, 1
486bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
496bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    if-ne v3, v2, :is_not_equal
506bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testZ success"
516bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    goto :end
526bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
536bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:is_not_equal
546bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testZ failed"
556bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
566bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:end
576bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream;
586bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
596bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-void
606bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
616bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
626bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
636bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Lambda target for testZ. Always returns "true".
646918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin.method public static lambdaZ(J)Z
656bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 3
666bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
676bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const v0, 1
686bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return v0
696bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
706bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
716bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
726bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Test that bytes are returned correctly via move-result.
736bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.method public static testB()V
746bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 6
756bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
766918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    create-lambda v0, LMoveResult;->lambdaB(J)B
776bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-lambda v0, {}
786bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    move-result v2
796bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const v3, 15
806bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
816bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    if-ne v3, v2, :is_not_equal
826bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testB success"
836bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    goto :end
846bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
856bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:is_not_equal
866bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testB failed"
876bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
886bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:end
896bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream;
906bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
916bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-void
926bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
936bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
946bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
956bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Lambda target for testB. Always returns "15".
966918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin.method public static lambdaB(J)B
976bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 3 # 1 parameters, 2 locals
986bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
996bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const v0, 15
1006bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return v0
1016bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1026bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
1036bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1046bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Test that shorts are returned correctly via move-result.
1056bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.method public static testS()V
1066bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 6
1076bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1086918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    create-lambda v0, LMoveResult;->lambdaS(J)S
1096bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-lambda v0, {}
1106bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    move-result v2
1116bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const/16 v3, 31000
1126bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1136bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    if-ne v3, v2, :is_not_equal
1146bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testS success"
1156bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    goto :end
1166bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1176bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:is_not_equal
1186bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testS failed"
1196bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1206bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:end
1216bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream;
1226bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
1236bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-void
1246bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1256bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
1266bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1276bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Lambda target for testS. Always returns "31000".
1286918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin.method public static lambdaS(J)S
1296bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 3
1306bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1316bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const/16 v0, 31000
1326bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return v0
1336bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1346bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
1356bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1366bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Test that ints are returned correctly via move-result.
1376bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.method public static testI()V
1386bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 6
1396bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1406918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    create-lambda v0, LMoveResult;->lambdaI(J)I
1416bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-lambda v0, {}
1426bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    move-result v2
1436bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const v3, 128000
1446bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1456bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    if-ne v3, v2, :is_not_equal
1466bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testI success"
1476bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    goto :end
1486bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1496bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:is_not_equal
1506bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testI failed"
1516bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1526bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:end
1536bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream;
1546bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
1556bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-void
1566bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1576bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
1586bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1596bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Lambda target for testI. Always returns "128000".
1606918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin.method public static lambdaI(J)I
1616bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 3
1626bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1636bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const v0, 128000
1646bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return v0
1656bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1666bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
1676bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1686bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Test that chars are returned correctly via move-result.
1696bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.method public static testC()V
1706918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    .registers 7
1716bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1726918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    create-lambda v0, LMoveResult;->lambdaC(J)C
1736bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-lambda v0, {}
1746bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    move-result v2
1756bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const v3, 65535
1766bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1776bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    if-ne v3, v2, :is_not_equal
1786bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testC success"
1796bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    goto :end
1806bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1816bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:is_not_equal
1826bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testC failed"
1836bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1846bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:end
1856bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream;
1866bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
1876bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-void
1886bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1896bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
1906bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1916bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Lambda target for testC. Always returns "65535".
1926918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin.method public static lambdaC(J)C
1936bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 3
1946bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1956bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const v0, 65535
1966bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return v0
1976bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
1986bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
1996bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2006bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Test that longs are returned correctly via move-result.
2016bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.method public static testJ()V
2026918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    .registers 9
2036bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2046918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    create-lambda v0, LMoveResult;->lambdaJ(J)J
2056bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-lambda v0, {}
2066bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    move-result v2
2076918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    const-wide v4, 0xdeadf00dc0ffeeL
2086bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2096bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    if-ne v4, v2, :is_not_equal
2106bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v6, "(MoveResult) testJ success"
2116bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    goto :end
2126bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2136bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:is_not_equal
2146bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v6, "(MoveResult) testJ failed"
2156bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2166bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:end
2176bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    sget-object v7, Ljava/lang/System;->out:Ljava/io/PrintStream;
2186bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-virtual {v7, v6}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
2196bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-void
2206bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2216bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
2226bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2236918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin# Lambda target for testC. Always returns "0xdeadf00dc0ffeeL".
2246918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin.method public static lambdaJ(J)J
2256918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    .registers 5
2266bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2276918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    const-wide v0, 0xdeadf00dc0ffeeL
2286bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-wide v0
2296bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2306bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
2316bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2326bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Test that floats are returned correctly via move-result.
2336bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.method public static testF()V
2346bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 6
2356bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2366918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    create-lambda v0, LMoveResult;->lambdaF(J)F
2376bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-lambda v0, {}
2386bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    move-result v2
2396bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const v3, infinityf
2406bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2416bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    if-ne v3, v2, :is_not_equal
2426bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testF success"
2436bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    goto :end
2446bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2456bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:is_not_equal
2466bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "(MoveResult) testF failed"
2476bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2486bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:end
2496bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    sget-object v5, Ljava/lang/System;->out:Ljava/io/PrintStream;
2506bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-virtual {v5, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
2516bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-void
2526bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2536bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
2546bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2556bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Lambda target for testF. Always returns "infinityf".
2566918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin.method public static lambdaF(J)F
2576918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    .registers 4
2586bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2596bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const v0, infinityf
2606bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return v0
2616bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2626bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
2636bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2646bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Test that doubles are returned correctly via move-result.
2656bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.method public static testD()V
2666bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 8
2676bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2686918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    create-lambda v0, LMoveResult;->lambdaD(J)D
2696bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-lambda v0, {}
2706bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    move-result-wide v2
2716918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    const-wide v4, -infinity
2726bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2736bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    if-ne v4, v2, :is_not_equal
2746bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v6, "(MoveResult) testD success"
2756bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    goto :end
2766bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2776bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:is_not_equal
2786bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v6, "(MoveResult) testD failed"
2796bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2806bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:end
2816bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    sget-object v7, Ljava/lang/System;->out:Ljava/io/PrintStream;
2826bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-virtual {v7, v6}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
2836bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-void
2846bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2856bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
2866bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2876bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Lambda target for testD. Always returns "infinity".
2886918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin.method public static lambdaD(J)D
2896918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    .registers 5
2906bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2916918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    const-wide v0, -infinity
2926bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-wide v0
2936bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2946bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
2956bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2966bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
2976bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Test that objects are returned correctly via move-result.
2986bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.method public static testL()V
2996bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    .registers 8
3006bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
3016918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    create-lambda v0, LMoveResult;->lambdaL(J)Ljava/lang/String;
3026bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-lambda v0, {}
3036bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    move-result-object v2
3046bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v4, "Interned string"
3056bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
3066bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    # relies on string interning returning identical object references
3076bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    if-ne v4, v2, :is_not_equal
3086bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v6, "(MoveResult) testL success"
3096bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    goto :end
3106bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
3116bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:is_not_equal
3126bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v6, "(MoveResult) testL failed"
3136bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
3146bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin:end
3156bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    sget-object v7, Ljava/lang/System;->out:Ljava/io/PrintStream;
3166bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    invoke-virtual {v7, v6}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
3176bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-void
3186bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
3196bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
3206bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
3216bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin# Lambda target for testL. Always returns "Interned string" (string).
3226918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin.method public static lambdaL(J)Ljava/lang/String;
3236918bf13eb855b3aa8ccdddda2d27ae8c60cec56Igor Murashkin    .registers 5
3246bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
3256bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    const-string v0, "Interned string"
3266bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin    return-object v0
3276bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
3286bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin.end method
3296bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
3306bd980c17a023d99ae84acf62a033832caf13f58Igor Murashkin
331