Skip to content

Instantly share code, notes, and snippets.

@noisesmith
Created January 13, 2017 19:11
Show Gist options
  • Save noisesmith/f3a65c3ecfd29d765901f8384934f0d9 to your computer and use it in GitHub Desktop.
Save noisesmith/f3a65c3ecfd29d765901f8384934f0d9 to your computer and use it in GitHub Desktop.
clojure compiler doesn't try to be clever
kingfisher.core=> (require 'no.disassemble)
nil
kingfisher.core=> (no.disassemble/disassemble (fn [] (= 1 1)))
"// Compiled from form-init3743260354239398999.clj (version 1.5 : 49.0, super bit)\npublic final class kingfisher.core$eval42227$fn__42228 extends clojure.lang.AFunction {\n \n // Method descriptor #7 ()V\n // Stack: 1, Locals: 1\n public core$eval42227$fn__42228();\n 0 aload_0 [this]\n 1 invokespecial clojure.lang.AFunction() [9]\n 4 return\n Line numbers:\n [pc: 0, line: 1]\n \n // Method descriptor #11 ()Ljava/lang/Object;\n // Stack: 4, Locals: 1\n public java.lang.Object invoke();\n 0 lconst_1\n 1 lconst_1\n 2 invokestatic clojure.lang.Util.equiv(long, long) : boolean [17]\n 5 ifeq 14\n 8 getstatic java.lang.Boolean.TRUE : java.lang.Boolean [23]\n 11 goto 17\n 14 getstatic java.lang.Boolean.FALSE : java.lang.Boolean [26]\n 17 areturn\n Line numbers:\n [pc: 0, line: 1]\n [pc: 2, line: 1]\n Local variable table:\n [pc: 0, pc: 17] local: this index: 0 type: java.lang.Object\n \n // Method descriptor #7 ()V\n // Stack: 0, Locals: 0\n public static {};\n 0 return\n Line numbers:\n [pc: 0, line: 1]\n\n}"
kingfisher.core=> (println *1)
// Compiled from form-init3743260354239398999.clj (version 1.5 : 49.0, super bit)
public final class kingfisher.core$eval42227$fn__42228 extends clojure.lang.AFunction {
// Method descriptor #7 ()V
// Stack: 1, Locals: 1
public core$eval42227$fn__42228();
0 aload_0 [this]
1 invokespecial clojure.lang.AFunction() [9]
4 return
Line numbers:
[pc: 0, line: 1]
// Method descriptor #11 ()Ljava/lang/Object;
// Stack: 4, Locals: 1
public java.lang.Object invoke();
0 lconst_1
1 lconst_1
2 invokestatic clojure.lang.Util.equiv(long, long) : boolean [17]
5 ifeq 14
8 getstatic java.lang.Boolean.TRUE : java.lang.Boolean [23]
11 goto 17
14 getstatic java.lang.Boolean.FALSE : java.lang.Boolean [26]
17 areturn
Line numbers:
[pc: 0, line: 1]
[pc: 2, line: 1]
Local variable table:
[pc: 0, pc: 17] local: this index: 0 type: java.lang.Object
// Method descriptor #7 ()V
// Stack: 0, Locals: 0
public static {};
0 return
Line numbers:
[pc: 0, line: 1]
}
nil
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment