Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@ztellman
Last active December 18, 2015 14:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ztellman/5800916 to your computer and use it in GitHub Desktop.
Save ztellman/5800916 to your computer and use it in GitHub Desktop.
> (definterface ISubstring (subs ^String [^long start ^long len]))
ISubstring
> (deftype Substringable [^String s] ISubstring (subs [_ start len] (.substring s start len)))
Substringable
> (println (disassemble Substringable))
// Compiled from NO_SOURCE_FILE (version 1.5 : 49.0, super bit)
public final class vertigo.bytes.Substringable implements vertigo.bytes.ISubstring, clojure.lang.IType {
// Field descriptor #13 Ljava/lang/Object;
public final java.lang.Object s;
// Method descriptor #11 ()V
// Stack: 0, Locals: 0
public static {};
0 return
Line numbers:
[pc: 0, line: 1]
// Method descriptor #15 (Ljava/lang/Object;)V
// Stack: 2, Locals: 2
public Substringable(java.lang.Object arg0);
0 aload_0
1 invokespecial java.lang.Object() [17]
4 aload_0
5 aload_1
6 putfield vertigo.bytes.Substringable.s : java.lang.Object [19]
9 return
Line numbers:
[pc: 0, line: 1]
// snip some stuff
// Method descriptor #56 (JJ)Ljava/lang/Object;
// Stack: 4, Locals: 5
public java.lang.Object subs(long start, long arg1);
0 aload_0 [this]
1 getfield vertigo.bytes.Substringable.s : java.lang.Object [19]
4 checkcast java.lang.String [58]
7 lload_1 [start]
8 invokestatic clojure.lang.RT.intCast(long) : int [62]
11 lload_3
12 invokestatic clojure.lang.RT.intCast(long) : int [62]
15 invokevirtual java.lang.String.substring(int, int) : java.lang.String [66]
18 areturn
Line numbers:
[pc: 0, line: 1]
[pc: 0, line: 1]
Local variable table:
[pc: 0, pc: 18] local: this index: 0 type: vertigo.bytes.Substringable
[pc: 0, pc: 18] local: start index: 1 type: long
[pc: 0, pc: 18] local: len index: 2 type: long
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment