Skip to content

Instantly share code, notes, and snippets.

@chemikadze
Created February 26, 2013 15:36
Show Gist options
  • Save chemikadze/5039385 to your computer and use it in GitHub Desktop.
Save chemikadze/5039385 to your computer and use it in GitHub Desktop.
Structural type argument
public class structural.C extends java.lang.Object implements scala.ScalaObject{
public static {};
Code:
0: iconst_0
1: anewarray #8; //class java/lang/Class
4: putstatic #14; //Field reflParams$Cache1:[Ljava/lang/Class;
7: new #16; //class java/lang/ref/SoftReference
10: dup
11: new #18; //class scala/runtime/EmptyMethodCache
14: dup
15: invokespecial #21; //Method scala/runtime/EmptyMethodCache."<init>":()V
18: invokespecial #24; //Method java/lang/ref/SoftReference."<init>":(Ljava/lang/Object;)V
21: putstatic #28; //Field reflPoly$Cache1:Ljava/lang/ref/SoftReference;
24: return
public static java.lang.reflect.Method reflMethod$Method1(java.lang.Class);
Code:
0: getstatic #28; //Field reflPoly$Cache1:Ljava/lang/ref/SoftReference;
3: invokevirtual #34; //Method java/lang/ref/SoftReference.get:()Ljava/lang/Object;
6: checkcast #36; //class scala/runtime/MethodCache
9: ifnonnull 29
12: new #16; //class java/lang/ref/SoftReference
15: dup
16: new #18; //class scala/runtime/EmptyMethodCache
19: dup
20: invokespecial #21; //Method scala/runtime/EmptyMethodCache."<init>":()V
23: invokespecial #24; //Method java/lang/ref/SoftReference."<init>":(Ljava/lang/Object;)V
26: putstatic #28; //Field reflPoly$Cache1:Ljava/lang/ref/SoftReference;
29: getstatic #28; //Field reflPoly$Cache1:Ljava/lang/ref/SoftReference;
32: invokevirtual #34; //Method java/lang/ref/SoftReference.get:()Ljava/lang/Object;
35: checkcast #36; //class scala/runtime/MethodCache
38: aload_0
39: invokevirtual #39; //Method scala/runtime/MethodCache.find:(Ljava/lang/Class;)Ljava/lang/reflect/Method;
42: astore_1
43: aload_1
44: ifnonnull 89
47: getstatic #45; //Field scala/runtime/ScalaRunTime$.MODULE$:Lscala/runtime/ScalaRunTime$;
50: aload_0
51: ldc #47; //String y
53: getstatic #14; //Field reflParams$Cache1:[Ljava/lang/Class;
56: invokevirtual #51; //Method java/lang/Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
59: invokevirtual #55; //Method scala/runtime/ScalaRunTime$.ensureAccessible:(Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
62: astore_1
63: new #16; //class java/lang/ref/SoftReference
66: dup
67: getstatic #28; //Field reflPoly$Cache1:Ljava/lang/ref/SoftReference;
70: invokevirtual #34; //Method java/lang/ref/SoftReference.get:()Ljava/lang/Object;
73: checkcast #36; //class scala/runtime/MethodCache
76: aload_0
77: aload_1
78: invokevirtual #59; //Method scala/runtime/MethodCache.add:(Ljava/lang/Class;Ljava/lang/reflect/Method;)Lscala/runtime/MethodCache;
81: invokespecial #24; //Method java/lang/ref/SoftReference."<init>":(Ljava/lang/Object;)V
84: putstatic #28; //Field reflPoly$Cache1:Ljava/lang/ref/SoftReference;
87: aload_1
88: areturn
89: aload_1
90: areturn
public int f(java.lang.Object);
Code:
0: aload_1
1: astore_2
2: aconst_null
3: astore_3
4: aload_2
5: invokevirtual #70; //Method java/lang/Object.getClass:()Ljava/lang/Class;
8: invokestatic #72; //Method reflMethod$Method1:(Ljava/lang/Class;)Ljava/lang/reflect/Method;
11: aload_2
12: iconst_0
13: anewarray #66; //class java/lang/Object
16: invokevirtual #78; //Method java/lang/reflect/Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
19: astore_3
20: aload_3
21: checkcast #80; //class java/lang/Integer
24: invokestatic #85; //Method scala/runtime/BoxesRunTime.unboxToInt:(Ljava/lang/Object;)I
27: ireturn
28: astore 4
30: aload 4
32: invokevirtual #91; //Method java/lang/reflect/InvocationTargetException.getCause:()Ljava/lang/Throwable;
35: athrow
Exception table:
from to target type
4 20 28 Class java/lang/reflect/InvocationTargetException
public structural.C();
Code:
0: aload_0
1: invokespecial #98; //Method java/lang/Object."<init>":()V
4: return
}
package structural
class C {
def f(x: {val y: Int}) = x.y
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment