[armedbear-devel] compiler problem

Alan Ruttenberg alanruttenberg at gmail.com
Wed Jan 6 03:21:42 UTC 2010


The problem appears to be with symbol-macrolet operating past the
bounds of it's lexical environment.

(defun foo (a) (symbol-macrolet ((b :foo)) ((lambda (b) (+ b 1)) a)))
(foo 1)

Debugger invoked on condition of type TYPE-ERROR:
  The value :FOO is not of type NUMBER.

-Alan

On Tue, Jan 5, 2010 at 5:48 PM, Alan Ruttenberg
<alanruttenberg at gmail.com> wrote:
> I sent a message earlier in the week about a miscompilation - a case
> where jss was landing up calling a java function on a cons rather than
> the intended object. In case it helps, here is a function in which
> that happens as well as the disassembly.
>
> The call that is miscompiled is the call to #"setLayout, which expands to
>
> ((LAMBDA (OBJECT &REST ARGS)
>   (INVOKE-RESTARGS "setLayout" OBJECT ARGS NIL))
>  PANEL LAYOUT)
>
> It's hard for me to follow the disassembly, but I see:
>
> ;     //  142  242:getstatic       #88  <Field Symbol SYM13802_GET_JAVA_FIELD>
> ;     //  143  245:getstatic       #86  <Field Symbol
> SYM13801_JAVAAWTGRIDBAGCONSTRAINTS>
> ;     //  144  248:getstatic       #90  <Field SimpleString STR13803>
> ;     //  145  251:invokevirtual   #93  <Method LispObject
> LispThread.execute(LispObject, LispObject, LispObject)>
>
> which apparently is the call to compute the value for remainder,
> immediately before the setLayout call.
>
> I'm guessing that <Field LispObject LFUN13809> is the compiled
> function for the lambda in the macroexpansion.
>
> (BTW, I don't see why there would be an actual function created here -
> should be optimized away)
>
> You can see that the values to the call to setLayout, are java objects.
>
> (panel (new 'javax.swing.JPanel))
> (layout (new 'java.awt.GridBagLayout))
>
> However the call results in the error
>
> Debugger invoked on condition of type JAVA-EXCEPTION:
>  SchemeException: ERROR:
> NO INSTANCE METHOD OF TYPE
>
>  (.setLayout org.armedbear.lisp.Cons ...)
>        at jsint.E.error(E.java:14)
>        at jsint.E.error(E.java:19)
>        at jsint.Invoke.methodTable(Invoke.java:221)
>        at jsint.Invoke.invokeMethod(Invoke.java:117)
>        at jsint.Invoke.invokeInstance(Invoke.java:110)
>        at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:592)
>        at org.armedbear.lisp.Java.jstatic(Java.java:393)
>        at org.armedbear.lisp.Java.access$600(Java.java:51)
>        at org.armedbear.lisp.Java$8.execute(Java.java:424)
>        at org.armedbear.lisp.Primitive.execute(Primitive.java:174)
> ....
>
> So apparently the wrong argument is being passed in.
>
> As I said, the function executes properly when evaluated.  The same
> error occurs in other methods that call java function in this way -
> the wrong argument is passed in. In another call (in a different
> function) I see
>
>  (.setLayout org.armedbear.lisp.StandardGenericFunction ...)
>        at jsint.E.error(E.java:14)
>        at jsint.E.error(E.java:19)
>
> And elsewhere with calls to different java functions.
>
> Hope this gives you something to go on.
>
> -Alan
>
>
> (defmethod make-contents ((this inspector))
>  (with-slots (object header fields table table-maker history) this
>    (let ((table-panel nil)
>          (panel (new 'javax.swing.JPanel))
>          (layout (new 'java.awt.GridBagLayout))
>          (constraints (new 'java.awt.GridBagConstraints))
>          (remainder (get-java-field 'java.awt.GridBagConstraints "REMAINDER")))
>
>      (#"setLayout" panel layout)
>      (labels ((add-component (comp)
>                 (#"setConstraints" layout comp constraints)
>                 (#"add" panel comp))
>               (jump-selected ()
>                 (multiple-value-bind (field row)
>                     (selected-field this)
>                   (oojump this field row t))))
>
>        (loop for button in (make-inspector-buttons this)
>             do (add-component button))
>
>        (setq table-maker
>              #'(lambda ()
>                  (if table-panel
>                      (let ((parent (#"getParent" table-panel)))
>                        (#"remove" parent table-panel)))
>
>                  (set-java-field constraints "gridwidth" remainder)
>                  (set-java-field constraints "gridheight" remainder)
>                  (set-java-field constraints "weightx" 1.0)
>                  (set-java-field constraints "weighty" 1.0)
>                  (set-java-field constraints "gridx" 0)
>                  (set-java-field constraints "gridy" 1)
>                  (set-java-field constraints "fill" (get-java-field
> 'java.awt.GridBagConstraints "BOTH"))
>
>
>                  (let ((data (oinspect-data this object)))
>                    (setq header (car data))
>                    (setq fields (cdr data))
>                    (setq table (make-table (mapcar #'(lambda (row)
>                                                        (mapcar #'(lambda (field)
>                                                                    (tostring this field))
>                                                                row))
>                                                    fields)
>                                            header)))
>                  (#"addMouseListener" table
>                                       (jinterface-safe-implementation (jclass
> "java.awt.event.MouseListener")
>                                                                  "mousePressed"
>                                                                  #'(lambda (evt)
>                                                                      (if (= (#"getClickCount" evt) 2)
>                                                                          (jump-selected)))))
>
>                  (#"addMouseMotionListener" table
>                                       (jinterface-safe-implementation (jclass
> "java.awt.event.MouseMotionListener")
>                                                                       "mouseMoved"
>                                                                       #'(lambda (evt)
>                                                                           (let* ((point (#"getPoint" evt))
>                                                                                  (col (#"columnAtPoint" table point))
>                                                                                  (row (#"rowAtPoint" table point))
>                                                                                  (value (value-at this row col)))
>                                                                             (#"setToolTipText" table (html-wrap-string (tostring
> this value)))))))
>
>                  (setq table-panel (make-table-panel table 350 200))
>                  (add-component table-panel)))
>
>        (funcall table-maker)
>        panel))))
>
> CL-USER(82): (disassemble (mop::%method-function (car
> (mop::%compute-applicable-methods #'make-contents (list (make-instance
> 'inspector))))))
>
> ; Couldn't fully decompile method execute
> ; // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
> ; // Jad home page: http://www.kpdus.com/jad.html
> ; // Decompiler options: packimports(3) annotate
> ; // Source File Name:   oinspect.lisp
> ;
> ; package org.armedbear.lisp;
> ;
> ;
> ; // Referenced classes of package org.armedbear.lisp:
> ; //            Primitive, LispThread, ClosureBinding, LispObject,
> ; //            Lisp, CompiledClosure, Symbol, SimpleString,
> ; //            AutoloadedFunctionProxy
> ;
> ; public class oinspect_21 extends Primitive
> ; {
> ;
> ;     public LispObject execute(LispObject lispobject, LispObject lispobject1)
> ;     {
> ;         LispThread lispthread;
> ;         ClosureBinding aclosurebinding[];
> ;         lispthread = LispThread.currentThread();
> ;     //    0    0:invokestatic    #54  <Method LispThread
> LispThread.currentThread()>
> ;     //    1    3:astore_3
> ;         aclosurebinding = (new ClosureBinding[] {
> ;             new ClosureBinding(null), new ClosureBinding(null), new
> ClosureBinding(null), new ClosureBinding(null), new
> ClosureBinding(null), new ClosureBinding(null), new
> ClosureBinding(null), new ClosureBinding(null), new
> ClosureBinding(null)
> ;         });
> ;     //    2    4:bipush          9
> ;     //    3    6:anewarray       ClosureBinding[]
> ;     //    4    9:dup
> ;     //    5   10:iconst_0
> ;     //    6   11:new             #56  <Class ClosureBinding>
> ;     //    7   14:dup
> ;     //    8   15:aconst_null
> ;     //    9   16:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;     //   10   19:aastore
> ;     //   11   20:dup
> ;     //   12   21:iconst_1
> ;     //   13   22:new             #56  <Class ClosureBinding>
> ;     //   14   25:dup
> ;     //   15   26:aconst_null
> ;     //   16   27:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;     //   17   30:aastore
> ;     //   18   31:dup
> ;     //   19   32:iconst_2
> ;     //   20   33:new             #56  <Class ClosureBinding>
> ;     //   21   36:dup
> ;     //   22   37:aconst_null
> ;     //   23   38:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;     //   24   41:aastore
> ;     //   25   42:dup
> ;     //   26   43:iconst_3
> ;     //   27   44:new             #56  <Class ClosureBinding>
> ;     //   28   47:dup
> ;     //   29   48:aconst_null
> ;     //   30   49:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;     //   31   52:aastore
> ;     //   32   53:dup
> ;     //   33   54:iconst_4
> ;     //   34   55:new             #56  <Class ClosureBinding>
> ;     //   35   58:dup
> ;     //   36   59:aconst_null
> ;     //   37   60:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;     //   38   63:aastore
> ;     //   39   64:dup
> ;     //   40   65:iconst_5
> ;     //   41   66:new             #56  <Class ClosureBinding>
> ;     //   42   69:dup
> ;     //   43   70:aconst_null
> ;     //   44   71:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;     //   45   74:aastore
> ;     //   46   75:dup
> ;     //   47   76:bipush          6
> ;     //   48   78:new             #56  <Class ClosureBinding>
> ;     //   49   81:dup
> ;     //   50   82:aconst_null
> ;     //   51   83:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;     //   52   86:aastore
> ;     //   53   87:dup
> ;     //   54   88:bipush          7
> ;     //   55   90:new             #56  <Class ClosureBinding>
> ;     //   56   93:dup
> ;     //   57   94:aconst_null
> ;     //   58   95:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;     //   59   98:aastore
> ;     //   60   99:dup
> ;     //   61  100:bipush          8
> ;     //   62  102:new             #56  <Class ClosureBinding>
> ;     //   63  105:dup
> ;     //   64  106:aconst_null
> ;     //   65  107:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;     //   66  110:aastore
> ;     //   67  111:astore          4
> ;         new ClosureBinding(lispobject.car());
> ;     //   68  113:aload_1
> ;     //   69  114:invokevirtual   #66  <Method LispObject LispObject.car()>
> ;     //   70  117:new             #56  <Class ClosureBinding>
> ;     //   71  120:dup_x1
> ;     //   72  121:swap
> ;     //   73  122:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;         aclosurebinding;
> ;     //   74  125:aload           4
> ;         JVM INSTR swap ;
> ;     //   75  127:swap
> ;         0;
> ;     //   76  128:iconst_0
> ;         JVM INSTR swap ;
> ;     //   77  129:swap
> ;         JVM INSTR aastore ;
> ;     //   78  130:aastore
> ;         new ClosureBinding(aclosurebinding[0].value);
> ;     //   79  131:aload           4
> ;     //   80  133:iconst_0
> ;     //   81  134:aaload
> ;     //   82  135:getfield        #69  <Field LispObject ClosureBinding.value>
> ;     //   83  138:new             #56  <Class ClosureBinding>
> ;     //   84  141:dup_x1
> ;     //   85  142:swap
> ;     //   86  143:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;         aclosurebinding;
> ;     //   87  146:aload           4
> ;         JVM INSTR swap ;
> ;     //   88  148:swap
> ;         1;
> ;     //   89  149:iconst_1
> ;         JVM INSTR swap ;
> ;     //   90  150:swap
> ;         JVM INSTR aastore ;
> ;     //   91  151:aastore
> ;         new ClosureBinding(Lisp.NIL);
> ;     //   92  152:getstatic       #74  <Field LispObject Lisp.NIL>
> ;     //   93  155:new             #56  <Class ClosureBinding>
> ;     //   94  158:dup_x1
> ;     //   95  159:swap
> ;     //   96  160:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;         aclosurebinding;
> ;     //   97  163:aload           4
> ;         JVM INSTR swap ;
> ;     //   98  165:swap
> ;         2;
> ;     //   99  166:iconst_2
> ;         JVM INSTR swap ;
> ;     //  100  167:swap
> ;         JVM INSTR aastore ;
> ;     //  101  168:aastore
> ;         new ClosureBinding(lispthread.execute(SYM13798_NEW,
> SYM13799_JAVAXSWINGJPANEL));
> ;     //  102  169:aload_3
> ;     //  103  170:getstatic       #78  <Field Symbol SYM13798_NEW>
> ;     //  104  173:getstatic       #80  <Field Symbol SYM13799_JAVAXSWINGJPANEL>
> ;     //  105  176:invokevirtual   #82  <Method LispObject
> LispThread.execute(LispObject, LispObject)>
> ;     //  106  179:new             #56  <Class ClosureBinding>
> ;     //  107  182:dup_x1
> ;     //  108  183:swap
> ;     //  109  184:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;         aclosurebinding;
> ;     //  110  187:aload           4
> ;         JVM INSTR swap ;
> ;     //  111  189:swap
> ;         3;
> ;     //  112  190:iconst_3
> ;         JVM INSTR swap ;
> ;     //  113  191:swap
> ;         JVM INSTR aastore ;
> ;     //  114  192:aastore
> ;         new ClosureBinding(lispthread.execute(SYM13798_NEW,
> SYM13800_JAVAAWTGRIDBAGLAYOUT));
> ;     //  115  193:aload_3
> ;     //  116  194:getstatic       #78  <Field Symbol SYM13798_NEW>
> ;     //  117  197:getstatic       #84  <Field Symbol
> SYM13800_JAVAAWTGRIDBAGLAYOUT>
> ;     //  118  200:invokevirtual   #82  <Method LispObject
> LispThread.execute(LispObject, LispObject)>
> ;     //  119  203:new             #56  <Class ClosureBinding>
> ;     //  120  206:dup_x1
> ;     //  121  207:swap
> ;     //  122  208:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;         aclosurebinding;
> ;     //  123  211:aload           4
> ;         JVM INSTR swap ;
> ;     //  124  213:swap
> ;         4;
> ;     //  125  214:iconst_4
> ;         JVM INSTR swap ;
> ;     //  126  215:swap
> ;         JVM INSTR aastore ;
> ;     //  127  216:aastore
> ;         new ClosureBinding(lispthread.execute(SYM13798_NEW,
> SYM13801_JAVAAWTGRIDBAGCONSTRAINTS));
> ;     //  128  217:aload_3
> ;     //  129  218:getstatic       #78  <Field Symbol SYM13798_NEW>
> ;     //  130  221:getstatic       #86  <Field Symbol
> SYM13801_JAVAAWTGRIDBAGCONSTRAINTS>
> ;     //  131  224:invokevirtual   #82  <Method LispObject
> LispThread.execute(LispObject, LispObject)>
> ;     //  132  227:new             #56  <Class ClosureBinding>
> ;     //  133  230:dup_x1
> ;     //  134  231:swap
> ;     //  135  232:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;         aclosurebinding;
> ;     //  136  235:aload           4
> ;         JVM INSTR swap ;
> ;     //  137  237:swap
> ;         5;
> ;     //  138  238:iconst_5
> ;         JVM INSTR swap ;
> ;     //  139  239:swap
> ;         JVM INSTR aastore ;
> ;     //  140  240:aastore
> ;         new ClosureBinding(lispthread.execute(SYM13802_GET_JAVA_FIELD,
> SYM13801_JAVAAWTGRIDBAGCONSTRAINTS, STR13803));
> ;     //  141  241:aload_3
> ;     //  142  242:getstatic       #88  <Field Symbol SYM13802_GET_JAVA_FIELD>
> ;     //  143  245:getstatic       #86  <Field Symbol
> SYM13801_JAVAAWTGRIDBAGCONSTRAINTS>
> ;     //  144  248:getstatic       #90  <Field SimpleString STR13803>
> ;     //  145  251:invokevirtual   #93  <Method LispObject
> LispThread.execute(LispObject, LispObject, LispObject)>
> ;     //  146  254:new             #56  <Class ClosureBinding>
> ;     //  147  257:dup_x1
> ;     //  148  258:swap
> ;     //  149  259:invokespecial   #60  <Method void ClosureBinding(LispObject)>
> ;         aclosurebinding;
> ;     //  150  262:aload           4
> ;         JVM INSTR swap ;
> ;     //  151  264:swap
> ;         6;
> ;     //  152  265:bipush          6
> ;         JVM INSTR swap ;
> ;     //  153  267:swap
> ;         JVM INSTR aastore ;
> ;     //  154  268:aastore
> ;         ClosureBinding aclosurebinding1[];
> ;         lispthread._values = null;
> ;     //  155  269:aload_3
> ;     //  156  270:aconst_null
> ;     //  157  271:putfield        #97  <Field LispObject[] LispThread._values>
> ;     //* 158  274:getstatic       #99  <Field LispObject LFUN13809>
> ;         System.arraycopy(aclosurebinding, 0, aclosurebinding1 = new
> ClosureBinding[9], 0, 9);
> ;     //  159  277:aload           4
> ;     //  160  279:iconst_0
> ;     //  161  280:bipush          9
> ;     //  162  282:anewarray       ClosureBinding[]
> ;     //  163  285:dup
> ;     //  164  286:astore          5
> ;     //  165  288:iconst_0
> ;     //  166  289:bipush          9
> ;     //  167  291:invokestatic    #105 <Method void
> System.arraycopy(Object, int, Object, int, int)>
> ;         Lisp.makeCompiledClosure(LFUN13809, aclosurebinding1);
> ;     //  168  294:aload           5
> ;     //  169  296:invokestatic    #109 <Method LispObject
> Lisp.makeCompiledClosure(LispObject, ClosureBinding[])>
> ;         lispthread;
> ;     //  170  299:aload_3
> ;         JVM INSTR swap ;
> ;     //  171  300:swap
> ;         aclosurebinding[3].value;
> ;     //  172  301:aload           4
> ;     //  173  303:iconst_3
> ;     //  174  304:aaload
> ;     //  175  305:getfield        #69  <Field LispObject ClosureBinding.value>
> ;         aclosurebinding[4].value;
> ;     //  176  308:aload           4
> ;     //  177  310:iconst_4
> ;     //  178  311:aaload
> ;     //  179  312:getfield        #69  <Field LispObject ClosureBinding.value>
> ;         execute();
> ;     //  180  315:invokevirtual   #93  <Method LispObject
> LispThread.execute(LispObject, LispObject, LispObject)>
> ;         JVM INSTR pop ;
> ;     //  181  318:pop
> ;         lispthread._values = null;
> ;     //  182  319:aload_3
> ;     //  183  320:aconst_null
> ;     //  184  321:putfield        #97  <Field LispObject[] LispThread._values>
> ;     //* 185  324:getstatic       #111 <Field LispObject LFUN13827>
> ;     //* 186  327:checkcast       #113 <Class CompiledClosure>
> ;         System.arraycopy(aclosurebinding, 0, aclosurebinding1 = new
> ClosureBinding[9], 0, 9);
> ;     //  187  330:aload           4
> ;     //  188  332:iconst_0
> ;     //  189  333:bipush          9
> ;     //  190  335:anewarray       ClosureBinding[]
> ;     //  191  338:dup
> ;     //  192  339:astore          5
> ;     //  193  341:iconst_0
> ;     //  194  342:bipush          9
> ;     //  195  344:invokestatic    #105 <Method void
> System.arraycopy(Object, int, Object, int, int)>
> ;         Lisp.makeCompiledClosure((CompiledClosure)LFUN13827,
> aclosurebinding1);
> ;     //  196  347:aload           5
> ;     //  197  349:invokestatic    #109 <Method LispObject
> Lisp.makeCompiledClosure(LispObject, ClosureBinding[])>
> ;         aclosurebinding[7];
> ;     //  198  352:aload           4
> ;     //  199  354:bipush          7
> ;     //  200  356:aaload
> ;         JVM INSTR swap ;
> ;     //  201  357:swap
> ;         value;
> ;     //  202  358:putfield        #69  <Field LispObject ClosureBinding.value>
> ;     //* 203  361:getstatic       #115 <Field LispObject LFUN13838>
> ;     //* 204  364:checkcast       #113 <Class CompiledClosure>
> ;         System.arraycopy(aclosurebinding, 0, aclosurebinding1 = new
> ClosureBinding[9], 0, 9);
> ;     //  205  367:aload           4
> ;     //  206  369:iconst_0
> ;     //  207  370:bipush          9
> ;     //  208  372:anewarray       ClosureBinding[]
> ;     //  209  375:dup
> ;     //  210  376:astore          5
> ;     //  211  378:iconst_0
> ;     //  212  379:bipush          9
> ;     //  213  381:invokestatic    #105 <Method void
> System.arraycopy(Object, int, Object, int, int)>
> ;         Lisp.makeCompiledClosure((CompiledClosure)LFUN13838,
> aclosurebinding1);
> ;     //  214  384:aload           5
> ;     //  215  386:invokestatic    #109 <Method LispObject
> Lisp.makeCompiledClosure(LispObject, ClosureBinding[])>
> ;         aclosurebinding[8];
> ;     //  216  389:aload           4
> ;     //  217  391:bipush          8
> ;     //  218  393:aaload
> ;         JVM INSTR swap ;
> ;     //  219  394:swap
> ;         value;
> ;     //  220  395:putfield        #69  <Field LispObject ClosureBinding.value>
> ;         LispObject lispobject2 = Lisp.NIL;
> ;     //  221  398:getstatic       #74  <Field LispObject Lisp.NIL>
> ;     //  222  401:astore          5
> ;         LispObject lispobject4 =
> lispthread.execute(SYM13842_MAKE_INSPECTOR_BUTTONS,
> aclosurebinding[0].value);
> ;     //  223  403:aload_3
> ;     //  224  404:getstatic       #117 <Field Symbol
> SYM13842_MAKE_INSPECTOR_BUTTONS>
> ;     //  225  407:aload           4
> ;     //  226  409:iconst_0
> ;     //  227  410:aaload
> ;     //  228  411:getfield        #69  <Field LispObject ClosureBinding.value>
> ;     //  229  414:invokevirtual   #82  <Method LispObject
> LispThread.execute(LispObject, LispObject)>
> ;     //  230  417:astore          6
> ;         lispthread._values = null;
> ;     //  231  419:aload_3
> ;     //  232  420:aconst_null
> ;     //  233  421:putfield        #97  <Field LispObject[] LispThread._values>
> ;         do
> ;         {
> ;             if(lispobject4.endp())
> ;     //* 234  424:aload           6
> ;     //* 235  426:invokevirtual   #121 <Method boolean LispObject.endp()>
> ;     //* 236  429:ifeq            444
> ;             {
> ;                 if(Lisp.interrupted)
> ;     //* 237  432:getstatic       #125 <Field boolean Lisp.interrupted>
> ;     //* 238  435:ifeq            441
> ;                     Lisp.handleInterrupt();
> ;     //  239  438:invokestatic    #129 <Method void Lisp.handleInterrupt()>
> ;                 break;
> ;     //  240  441:goto            484
> ;             }
> ;             LispObject lispobject3 = lispobject4.car();
> ;     //  241  444:aload           6
> ;     //  242  446:invokevirtual   #66  <Method LispObject LispObject.car()>
> ;     //  243  449:astore          5
> ;             lispobject4 = lispobject4.cdr();
> ;     //  244  451:aload           6
> ;     //  245  453:invokevirtual   #132 <Method LispObject LispObject.cdr()>
> ;     //  246  456:astore          6
> ;             aclosurebinding[7].value.execute(lispobject3);
> ;     //  247  458:aload           4
> ;     //  248  460:bipush          7
> ;     //  249  462:aaload
> ;     //  250  463:getfield        #69  <Field LispObject ClosureBinding.value>
> ;     //  251  466:aload           5
> ;     //  252  468:invokevirtual   #135 <Method LispObject
> LispObject.execute(LispObject)>
> ;     //  253  471:pop
> ;             if(Lisp.interrupted)
> ;     //* 254  472:getstatic       #125 <Field boolean Lisp.interrupted>
> ;     //* 255  475:ifeq            481
> ;                 Lisp.handleInterrupt();
> ;     //  256  478:invokestatic    #129 <Method void Lisp.handleInterrupt()>
> ;         } while(true);
> ;     //  257  481:goto            424
> ;         lispthread._values = null;
> ;     //  258  484:aload_3
> ;     //  259  485:aconst_null
> ;     //  260  486:putfield        #97  <Field LispObject[] LispThread._values>
> ;     //* 261  489:aload_3
> ;     //* 262  490:getstatic       #137 <Field Symbol SYM13851_SET_SLOT_VALUE>
> ;     //* 263  493:aload           4
> ;     //* 264  495:iconst_1
> ;     //* 265  496:aaload
> ;     //* 266  497:getfield        #69  <Field LispObject ClosureBinding.value>
> ;     //* 267  500:getstatic       #139 <Field Symbol SYM13852_TABLE_MAKER>
> ;     //* 268  503:getstatic       #141 <Field LispObject LFUN13987>
> ;         ClosureBinding aclosurebinding2[];
> ;         System.arraycopy(aclosurebinding, 0, aclosurebinding2 = new
> ClosureBinding[9], 0, 9);
> ;     //  269  506:aload           4
> ;     //  270  508:iconst_0
> ;     //  271  509:bipush          9
> ;     //  272  511:anewarray       ClosureBinding[]
> ;     //  273  514:dup
> ;     //  274  515:astore          5
> ;     //  275  517:iconst_0
> ;     //  276  518:bipush          9
> ;     //  277  520:invokestatic    #105 <Method void
> System.arraycopy(Object, int, Object, int, int)>
> ;         lispthread.execute(SYM13851_SET_SLOT_VALUE,
> aclosurebinding[1].value, SYM13852_TABLE_MAKER,
> Lisp.makeCompiledClosure(LFUN13987, aclosurebinding2));
> ;     //  278  523:aload           5
> ;     //  279  525:invokestatic    #109 <Method LispObject
> Lisp.makeCompiledClosure(LispObject, ClosureBinding[])>
> ;     //  280  528:invokevirtual   #144 <Method LispObject
> LispThread.execute(LispObject, LispObject, LispObject, LispObject)>
> ;     //  281  531:pop
> ;         lispthread.execute(Symbol.SLOT_VALUE,
> aclosurebinding[1].value, SYM13852_TABLE_MAKER);
> ;     //  282  532:aload_3
> ;     //  283  533:getstatic       #149 <Field Symbol Symbol.SLOT_VALUE>
> ;     //  284  536:aload           4
> ;     //  285  538:iconst_1
> ;     //  286  539:aaload
> ;     //  287  540:getfield        #69  <Field LispObject ClosureBinding.value>
> ;     //  288  543:getstatic       #139 <Field Symbol SYM13852_TABLE_MAKER>
> ;     //  289  546:invokevirtual   #93  <Method LispObject
> LispThread.execute(LispObject, LispObject, LispObject)>
> ;         lispthread;
> ;     //  290  549:aload_3
> ;         JVM INSTR swap ;
> ;     //  291  550:swap
> ;         execute();
> ;     //  292  551:invokevirtual   #150 <Method LispObject
> LispThread.execute(LispObject)>
> ;         JVM INSTR pop ;
> ;     //  293  554:pop
> ;         lispthread._values = null;
> ;     //  294  555:aload_3
> ;     //  295  556:aconst_null
> ;     //  296  557:putfield        #97  <Field LispObject[] LispThread._values>
> ;         return aclosurebinding[3].value;
> ;     //  297  560:aload           4
> ;     //  298  562:iconst_3
> ;     //  299  563:aaload
> ;     //  300  564:getfield        #69  <Field LispObject ClosureBinding.value>
> ;     //  301  567:areturn
> ;     }
> ;
> ;     public oinspect_21()
> ;     {
> ;         super(Lisp.NIL, Lisp.readObjectFromString("(MOP::ARGS
> MOP::NEXT-EMFUN)"));
> ;     //    0    0:aload_0
> ;     //    1    1:getstatic       #74  <Field LispObject Lisp.NIL>
> ;     //    2    4:ldc1            #154 <String "(MOP::ARGS MOP::NEXT-EMFUN)">
> ;     //    3    6:invokestatic    #158 <Method LispObject
> Lisp.readObjectFromString(String)>
> ;     //    4    9:invokespecial   #161 <Method void
> Primitive(LispObject, LispObject)>
> ;     //    5   12:ldc1            #6   <String "NEW">
> ;     //    6   14:ldc1            #8   <String "COMMON-LISP-USER">
> ;     //    7   16:invokestatic    #165 <Method Symbol
> Lisp.internInPackage(String, String)>
> ;     //    8   19:putstatic       #78  <Field Symbol SYM13798_NEW>
> ;     //    9   22:ldc1            #11  <String "JAVAX.SWING.JPANEL">
> ;     //   10   24:ldc1            #8   <String "COMMON-LISP-USER">
> ;     //   11   26:invokestatic    #165 <Method Symbol
> Lisp.internInPackage(String, String)>
> ;     //   12   29:putstatic       #80  <Field Symbol SYM13799_JAVAXSWINGJPANEL>
> ;     //   13   32:ldc1            #14  <String "JAVA.AWT.GRIDBAGLAYOUT">
> ;     //   14   34:ldc1            #8   <String "COMMON-LISP-USER">
> ;     //   15   36:invokestatic    #165 <Method Symbol
> Lisp.internInPackage(String, String)>
> ;     //   16   39:putstatic       #84  <Field Symbol
> SYM13800_JAVAAWTGRIDBAGLAYOUT>
> ;     //   17   42:ldc1            #17  <String "JAVA.AWT.GRIDBAGCONSTRAINTS">
> ;     //   18   44:ldc1            #8   <String "COMMON-LISP-USER">
> ;     //   19   46:invokestatic    #165 <Method Symbol
> Lisp.internInPackage(String, String)>
> ;     //   20   49:putstatic       #86  <Field Symbol
> SYM13801_JAVAAWTGRIDBAGCONSTRAINTS>
> ;     //   21   52:ldc1            #20  <String "GET-JAVA-FIELD">
> ;     //   22   54:ldc1            #8   <String "COMMON-LISP-USER">
> ;     //   23   56:invokestatic    #165 <Method Symbol
> Lisp.internInPackage(String, String)>
> ;     //   24   59:putstatic       #88  <Field Symbol SYM13802_GET_JAVA_FIELD>
> ;     //   25   62:new             #167 <Class SimpleString>
> ;     //   26   65:dup
> ;     //   27   66:ldc1            #24  <String "REMAINDER">
> ;     //   28   68:invokespecial   #170 <Method void SimpleString(String)>
> ;     //   29   71:putstatic       #90  <Field SimpleString STR13803>
> ;     //   30   74:ldc1            #28  <String "oinspect-22.cls">
> ;     //   31   76:invokestatic    #175 <Method LispObject
> AutoloadedFunctionProxy.loadPreloadedFunction(String)>
> ;     //   32   79:putstatic       #99  <Field LispObject LFUN13809>
> ;     //   33   82:ldc1            #31  <String "oinspect-23.cls">
> ;     //   34   84:invokestatic    #175 <Method LispObject
> AutoloadedFunctionProxy.loadPreloadedFunction(String)>
> ;     //   35   87:putstatic       #111 <Field LispObject LFUN13827>
> ;     //   36   90:ldc1            #34  <String "oinspect-26.cls">
> ;     //   37   92:invokestatic    #175 <Method LispObject
> AutoloadedFunctionProxy.loadPreloadedFunction(String)>
> ;     //   38   95:putstatic       #115 <Field LispObject LFUN13838>
> ;     //   39   98:ldc1            #37  <String "MAKE-INSPECTOR-BUTTONS">
> ;     //   40  100:ldc1            #8   <String "COMMON-LISP-USER">
> ;     //   41  102:invokestatic    #165 <Method Symbol
> Lisp.internInPackage(String, String)>
> ;     //   42  105:putstatic       #117 <Field Symbol
> SYM13842_MAKE_INSPECTOR_BUTTONS>
> ;     //   43  108:ldc1            #40  <String "%SET-SLOT-VALUE">
> ;     //   44  110:ldc1            #42  <String "MOP">
> ;     //   45  112:invokestatic    #165 <Method Symbol
> Lisp.internInPackage(String, String)>
> ;     //   46  115:putstatic       #137 <Field Symbol SYM13851_SET_SLOT_VALUE>
> ;     //   47  118:ldc1            #45  <String "TABLE-MAKER">
> ;     //   48  120:ldc1            #8   <String "COMMON-LISP-USER">
> ;     //   49  122:invokestatic    #165 <Method Symbol
> Lisp.internInPackage(String, String)>
> ;     //   50  125:putstatic       #139 <Field Symbol SYM13852_TABLE_MAKER>
> ;     //   51  128:ldc1            #48  <String "oinspect-27.cls">
> ;     //   52  130:invokestatic    #175 <Method LispObject
> AutoloadedFunctionProxy.loadPreloadedFunction(String)>
> ;     //   53  133:putstatic       #141 <Field LispObject LFUN13987>
> ;     //   54  136:return
> ;     }
> ;
> ;     static final LispObject LFUN13987 =
> AutoloadedFunctionProxy.loadPreloadedFunction("oinspect-27.cls");
> ;     private static final Symbol SYM13852_TABLE_MAKER =
> Lisp.internInPackage("TABLE-MAKER", "COMMON-LISP-USER");
> ;     private static final Symbol SYM13851_SET_SLOT_VALUE =
> Lisp.internInPackage("%SET-SLOT-VALUE", "MOP");
> ;     private static final Symbol SYM13842_MAKE_INSPECTOR_BUTTONS =
> Lisp.internInPackage("MAKE-INSPECTOR-BUTTONS", "COMMON-LISP-USER");
> ;     static final LispObject LFUN13838 =
> AutoloadedFunctionProxy.loadPreloadedFunction("oinspect-26.cls");
> ;     static final LispObject LFUN13827 =
> AutoloadedFunctionProxy.loadPreloadedFunction("oinspect-23.cls");
> ;     static final LispObject LFUN13809 =
> AutoloadedFunctionProxy.loadPreloadedFunction("oinspect-22.cls");
> ;     private static final SimpleString STR13803 = new
> SimpleString("REMAINDER");
> ;     private static final Symbol SYM13802_GET_JAVA_FIELD =
> Lisp.internInPackage("GET-JAVA-FIELD", "COMMON-LISP-USER");
> ;     private static final Symbol SYM13801_JAVAAWTGRIDBAGCONSTRAINTS =
> Lisp.internInPackage("JAVA.AWT.GRIDBAGCONSTRAINTS",
> "COMMON-LISP-USER");
> ;     private static final Symbol SYM13800_JAVAAWTGRIDBAGLAYOUT =
> Lisp.internInPackage("JAVA.AWT.GRIDBAGLAYOUT", "COMMON-LISP-USER");
> ;     private static final Symbol SYM13799_JAVAXSWINGJPANEL =
> Lisp.internInPackage("JAVAX.SWING.JPANEL", "COMMON-LISP-USER");
> ;     private static final Symbol SYM13798_NEW =
> Lisp.internInPackage("NEW", "COMMON-LISP-USER");
> ; }
>




More information about the armedbear-devel mailing list