Skip to content

Instantly share code, notes, and snippets.

@killme2008
Created February 22, 2016 08:06
Show Gist options
  • Select an option

  • Save killme2008/356707a1c4949b4dda43 to your computer and use it in GitHub Desktop.

Select an option

Save killme2008/356707a1c4949b4dda43 to your computer and use it in GitHub Desktop.
double function bytecode in clojure 1.6
(defn double [n] (* 2 n))
public final class user$double extends clojure/lang/AFunction {
// compiled from: NO_SOURCE_FILE
// debug info: SMAP
NO_SOURCE_FILE.java
Clojure
*S Clojure
*F
+ 1 NO_SOURCE_FILE
NO_SOURCE_PATH
*L
0#1,1:0
*E
// access flags 0x19
public final static Lclojure/lang/Var; const__0
// access flags 0x19
public final static Ljava/lang/Object; const__1
// access flags 0x9
public static <clinit>()V
L0
LINENUMBER 1 L0
LDC "clojure.core"
LDC "*"
INVOKESTATIC clojure/lang/RT.var (Ljava/lang/String;Ljava/lang/String;)Lclojure/lang/Var;
CHECKCAST clojure/lang/Var
PUTSTATIC user$double.const__0 : Lclojure/lang/Var;
LDC 2
INVOKESTATIC java/lang/Long.valueOf (J)Ljava/lang/Long;
PUTSTATIC user$double.const__1 : Ljava/lang/Object;
RETURN
MAXSTACK = 0
MAXLOCALS = 0
// access flags 0x1
public <init>()V
L0
LINENUMBER 1 L0
L1
ALOAD 0
INVOKESPECIAL clojure/lang/AFunction.<init> ()V
L2
RETURN
MAXSTACK = 0
MAXLOCALS = 0
// access flags 0x1
public invoke(Ljava/lang/Object;)Ljava/lang/Object;
L0
LINENUMBER 1 L0
L1
LINENUMBER 1 L1
LDC 2
ALOAD 1
ACONST_NULL
ASTORE 1
INVOKESTATIC clojure/lang/Numbers.multiply (JLjava/lang/Object;)Ljava/lang/Number;
L2
LOCALVARIABLE this Ljava/lang/Object; L0 L2 0
LOCALVARIABLE n Ljava/lang/Object; L0 L2 1
ARETURN
MAXSTACK = 0
MAXLOCALS = 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment