Skip to content

Instantly share code, notes, and snippets.

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

  • Save killme2008/7490899965b18dfc352a to your computer and use it in GitHub Desktop.

Select an option

Save killme2008/7490899965b18dfc352a to your computer and use it in GitHub Desktop.
Invoke function bytecode with direct-linking in clojure 1.8
(-> 1 double square) ;;=> 4
public final class user$eval5993 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 0x1
public <init>()V
L0
LINENUMBER 5 L0
L1
ALOAD 0
INVOKESPECIAL clojure/lang/AFunction.<init> ()V
L2
RETURN
MAXSTACK = 0
MAXLOCALS = 0
// access flags 0x9
public static invokeStatic()Ljava/lang/Object;
L0
LINENUMBER 5 L0
GETSTATIC user$eval5993.const__2 : Ljava/lang/Object;
INVOKESTATIC user$double.invokeStatic (Ljava/lang/Object;)Ljava/lang/Object;
INVOKESTATIC user$square.invokeStatic (Ljava/lang/Object;)Ljava/lang/Object;
L1
ARETURN
MAXSTACK = 0
MAXLOCALS = 0
// access flags 0x1
public invoke()Ljava/lang/Object;
L0
LINENUMBER 5 L0
INVOKESTATIC user$eval5993.invokeStatic ()Ljava/lang/Object;
ARETURN
MAXSTACK = 0
MAXLOCALS = 0
// access flags 0x19
public final static Ljava/lang/Object; const__2
// access flags 0x9
public static <clinit>()V
L0
LINENUMBER 5 L0
LCONST_1
INVOKESTATIC java/lang/Long.valueOf (J)Ljava/lang/Long;
PUTSTATIC user$eval5993.const__2 : Ljava/lang/Object;
RETURN
MAXSTACK = 0
MAXLOCALS = 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment