46 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Smali
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.9 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.
 | |
| 
 | |
| .source "Subclass.smali"
 | |
| 
 | |
| .class public LSubclass;
 | |
| .super Ljava/lang/Object;
 | |
| 
 | |
| .method public constructor <init>()V
 | |
| .registers 3
 | |
|   invoke-direct {p0}, Ljava/lang/Object;-><init>()V
 | |
|   goto :happy
 | |
|   # Get a MethodHandleImpl instance (subclass of MethodHandle).
 | |
|   invoke-static {}, LSubclass;->getMethodHandleSubclassInstance()Ljava/lang/invoke/MethodHandleImpl;
 | |
|   move-result-object v0
 | |
|   const-string v1, "1"
 | |
|   const-string v2, "2"
 | |
|   # Calling MethodHandle.invoke() on MethodHandleImpl instance (subclass of MethodHandle) => Okay
 | |
|   invoke-polymorphic {v0, v1, v2}, Ljava/lang/invoke/MethodHandle;->invoke([Ljava/lang/Object;)Ljava/lang/Object;, (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 | |
|   # Calling MethodHandleImpl.invoke() rather than MethodHandle.invoke() [ declaring class is okay ] => Okay
 | |
|   invoke-polymorphic {v0, v1, v2}, Ljava/lang/invoke/MethodHandleImpl;->invoke([Ljava/lang/Object;)Ljava/lang/Object;, (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 | |
| :happy
 | |
|   sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
 | |
|   const-string v2, "Passed Subclass test"
 | |
|   invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
 | |
|   return-void
 | |
| .end method
 | |
| 
 | |
| .method public static getMethodHandleSubclassInstance()Ljava/lang/invoke/MethodHandleImpl;
 | |
| .registers 1
 | |
|   const/4 v0, 0
 | |
|   return-object v0
 | |
| .end method
 |