This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

disassembling functions [was: Kawa proposed typing changes]


On 09/26/2009 11:21 AM, Helmut Eller wrote:
BTW, it would be useful if Kawa had a disassemble function which takes
procedures as argument.  That would be much more convenient than
compiling to a class file and calling javap on it.

Your wish is my command - within reason. (Note that disassemble is a function that essentially returns a string.)

$ bin/kawa
#|kawa:1|# (disassemble cons)
In class kawa.lib.lists at file:/home/bothner/Kawa/unmodified/kawa/lib/lists.class


Method name:"cons" public static Signature: (java.lang.Object,java.lang.Object)gnu.lists.Pair
Attribute "Code", length:66, max_stack:4, max_locals:2, code_length:10
0: new <Class gnu.lists.Pair>
3: dup
4: aload_0
5: aload_1
6: invokespecial <Method gnu.lists.Pair.<init> (java.lang.Object,java.lang.Object)void>
9: areturn
Attribute "LineNumberTable", length:10, count: 2
line: 17 at pc: 0
line: 18 at pc: 0
Attribute "LocalVariableTable", length:22, count: 2
slot#0: name: car, type: java.lang.Object (pc: 0 length: 10)
slot#1: name: cdr, type: java.lang.Object (pc: 0 length: 10)
#|kawa:2|# (define (foo x) (list x x))
#|kawa:3|# (define foo-bc (disassemble foo))
#|kawa:4|# foo-bc
In class atInteractiveLevel$2


Method name:"foo" public static Signature: (java.lang.Object)gnu.lists.Pair
Attribute "Code", length:48, max_stack:2, max_locals:1, code_length:6
0: aload_0
1: aload_0
2: invokestatic <Method gnu.lists.LList.list2 (java.lang.Object,java.lang.Object)gnu.lists.Pair>
5: areturn
Attribute "LineNumberTable", length:6, count: 1
line: 2 at pc: 0
Attribute "LocalVariableTable", length:12, count: 1
slot#0: name: x, type: java.lang.Object (pc: 0 length: 6)
#|kawa:5|#
--
--Per Bothner
per@bothner.com http://per.bothner.com/



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]