58 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Smali
		
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Smali
		
	
	
	
| # Copyright (C) 2016 The Android Open Source Project
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| #      http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| 
 | |
| # We cannot implement Main in Java, as this would require to run
 | |
| # dexmerger (to merge the Dex file produced from Smali code and the
 | |
| # Dex file produced from Java code), which loops indefinitely when
 | |
| # processing class B28685551, as this class inherits from itself.  As
 | |
| # a workaround, implement Main using Smali (we could also have used
 | |
| # multidex, but this requires a custom build script).
 | |
| 
 | |
| .class public LMain;
 | |
| .super Ljava/lang/Object;
 | |
| 
 | |
| .method public static main([Ljava/lang/String;)V
 | |
|     .registers 3
 | |
|     .param p0, "args"
 | |
| 
 | |
|     invoke-static {}, LMain;->test()V
 | |
|     sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
 | |
|     const-string v1, "Done!"
 | |
|     invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
 | |
|     return-void
 | |
| .end method
 | |
| 
 | |
| .method static test()V
 | |
|     .registers 4
 | |
| 
 | |
|     :try_start
 | |
|     const-string v2, "B28685551"
 | |
|     invoke-static {v2}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
 | |
|     :try_end
 | |
|     .catch Ljava/lang/ClassCircularityError; {:try_start .. :try_end} :catch
 | |
| 
 | |
|     move-result-object v0
 | |
| 
 | |
|     :goto_7
 | |
|     return-void
 | |
| 
 | |
|     :catch
 | |
|     move-exception v1
 | |
|     .local v1, "e":Ljava/lang/ClassCircularityError;
 | |
|     sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
 | |
|     const-string v3, "Caught ClassCircularityError"
 | |
|     invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
 | |
|     goto :goto_7
 | |
| .end method
 |