# Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file # for details. All rights reserved. Use of this source code is governed by a # BSD-style license that can be found in the LICENSE file. .class public LTest; .super Ljava/lang/Object; .method static fibonacci(I)I .locals 2 if-eqz p0, :return const/4 v0, 0x1 if-ne p0, v0, :calc :return return p0 :calc add-int/lit8 v0, p0, -0x1 invoke-static {v0}, LTest;->fibonacci(I)I move-result v0 add-int/lit8 v1, p0, -0x2 invoke-static {v1}, LTest;->fibonacci(I)I move-result v1 add-int p0, v0, v1 goto :return .end method .method static fibonacciLong(J)J .locals 4 const-wide/16 v2, 0x1 const-wide/16 v0, 0x0 cmp-long v0, p0, v0 if-eqz v0, :return cmp-long v0, p0, v2 if-nez v0, :calc :return return-wide p0 :calc sub-long v0, p0, v2 invoke-static {v0, v1}, LTest;->fibonacciLong(J)J move-result-wide v0 const-wide/16 v2, 0x2 sub-long v2, p0, v2 invoke-static {v2, v3}, LTest;->fibonacciLong(J)J move-result-wide v2 add-long p0, v0, v2 goto :return .end method .method static fibonacciJack(I)I .locals 2 if-eqz p0, :return const/4 v0, 0x1 if-ne p0, v0, :calc :return return p0 :calc add-int/lit8 v0, p0, -0x1 invoke-static {v0}, LTest;->fibonacciJack(I)I move-result v0 add-int/lit8 v1, p0, -0x2 invoke-static {v1}, LTest;->fibonacciJack(I)I move-result v1 add-int/2addr v0, v1 return v0 .end method .method static fibonacciLongJack(J)J .locals 4 const-wide/16 v2, 0x1 const-wide/16 v0, 0x0 cmp-long v0, p0, v0 if-eqz v0, :return cmp-long v0, p0, v2 if-nez v0, :calc :return return-wide p0 :calc sub-long v0, p0, v2 invoke-static {v0, v1}, LTest;->fibonacciLongJack(J)J move-result-wide v0 const-wide/16 v2, 0x2 sub-long v2, p0, v2 invoke-static {v2, v3}, LTest;->fibonacciLongJack(J)J move-result-wide v2 add-long/2addr v0, v2 return-wide v0 .end method .method public static main([Ljava/lang/String;)V .registers 5 sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; const/16 v1, 0xa invoke-static {v1}, LTest;->fibonacci(I)I move-result v1 invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(I)V sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; const-wide/16 v2, 0xa invoke-static {v2, v3}, LTest;->fibonacciLong(J)J move-result-wide v2 invoke-virtual {v0, v2, v3}, Ljava/io/PrintStream;->println(J)V const/16 v1, 0xa invoke-static {v1}, LTest;->fibonacciJack(I)I move-result v1 invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(I)V sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; const-wide/16 v2, 0xa invoke-static {v2, v3}, LTest;->fibonacciLongJack(J)J move-result-wide v2 invoke-virtual {v0, v2, v3}, Ljava/io/PrintStream;->println(J)V return-void .end method