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