headius (owner)

Revisions

gist: 129973 Download_button fork
public
Public Clone URL: git://gist.github.com/129973.git
Embed All Files: show embed
Text only #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
~/projects/juby ➔ cat loop.jb
a = 0
b = 0
while a.compareTo(123_456) == -1
  a += 1
  b += a
end
puts b
 
~/projects/juby ➔ JAVA_OPTS=-XX:+EnableInvokeDynamic CLASSPATH=src jruby bin/jubyc loop.jb
 
~/projects/juby ➔ javap -c dash_e
Compiled from "dash_e"
public class dash_e extends java.lang.Object {
public static void main(java.lang.String[]);
  Code:
   0: ldc2_w #7; //long 0l
   3: invokestatic #14; //Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
   6: dup
   7: astore_0
   8: pop
   9: aload_0
   10: ldc2_w #15; //long 5l
   13: invokestatic #14; //Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
   16: invokedynamic #34, 0; //NameAndType compareTo:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
   21: ldc2_w #35; //long -1l
   24: invokestatic #14; //Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
   27: invokedynamic #38, 0; //NameAndType "==":(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
   32: getstatic #44; //Field java/lang/Boolean.FALSE:Ljava/lang/Boolean;
   35: if_acmpeq 77
   38: aload_0
   39: ldc2_w #45; //long 1l
   42: invokestatic #14; //Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
   45: invokedynamic #48, 0; //NameAndType "+":(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
   50: dup
   51: astore_0
   52: pop
   53: aload_0
   54: ldc2_w #49; //long 10l
   57: invokestatic #14; //Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
   60: invokedynamic #48, 0; //NameAndType "+":(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
   65: getstatic #56; //Field java/lang/System.out:Ljava/io/PrintStream;
   68: swap
   69: invokevirtual #62; //Method java/io/PrintStream.println:(Ljava/lang/Object;)V
   72: aconst_null
   73: pop
   74: goto 9
   77: aconst_null
   78: pop
   79: return
 
static {};
  Code:
   0: ldc #19; //String dash_e
   2: invokestatic #25; //Method java/lang/Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
   5: invokestatic #31; //Method com/headius/juby/SimpleJavaBootstrap.registerBootstrap:(Ljava/lang/Class;)V
   8: return
 
}
 
 
~/projects/juby ➔ java -Xint -cp src:. -XX:+EnableInvokeDynamic loop
7620753696