This is the mail archive of the
kawa@sources.redhat.com
mailing list for the Kawa project.
(another?) VerifyError with kawa-1.6.70
- To: kawa at sourceware dot cygnus dot com
- Subject: (another?) VerifyError with kawa-1.6.70
- From: John Kozak <jk at noontide dot demon dot co dot uk>
- Date: Tue, 21 Nov 2000 12:45:24 +0000 (GMT Standard Time)
The appended code produces this:
java.lang.VerifyError: atInteractiveLevel$lambda
at source unknown
at atInteractiveLevel.apply2(Unknown Source)
at gnu.expr.ModuleBody.applyN(ModuleBody.java:97)
at gnu.expr.ModuleMethod.applyN(ModuleMethod.java:61)
at gnu.expr.ApplyExp.eval(ApplyExp.java:38)
at gnu.expr.SetExp.eval(SetExp.java:88)
at gnu.expr.ModuleExp.evalModule(ModuleExp.java:38)
at kawa.Shell.run(Shell.java:85)
at kawa.standard.load.loadSource(load.java:124)
at kawa.standard.load.loadSource(load.java:102)
at kawa.standard.load.apply(load.java:173)
at kawa.standard.load.apply2(load.java:149)
at kawa.standard.load.apply1(load.java:140)
at gnu.mapping.Procedure1.applyN(Procedure1.java:49)
at gnu.expr.ApplyExp.eval(ApplyExp.java:38)
at gnu.expr.ModuleExp.evalModule(ModuleExp.java:38)
at kawa.Shell.run(Shell.java:85)
at kawa.Shell.run(Shell.java:35)
at kawa.Shell.run(Shell.java:19)
at kawa.repl.main(repl.java:356)
under IBM JDK 1.1.8 (and slightly more informative msgs under later
JDKs). Seems to provoked by the find-trans! code. Is this a repeat
of Brian Carlstrom's earlier bug?
John
-------------------------------------code-----------------------------
(define (and? . rest)
(cond ((null? rest) #t)
((not (car rest)) #f)
(else (apply and? (cdr rest)))))
(define (or? . rest)
(cond ((null? rest) #f)
((car rest) #t)
(else (apply or? (cdr rest)))))
(define (filter p? l)
(if (null? l)
'()
(if (p? (car l))
(cons (car l) (filter p? (cdr l)))
(filter p? (cdr l)))))
(define id (lambda (x) x))
(define (set-cadr! x v) (set-car! (cdr x) v))
(define (set-caddr! x v) (set-car! (cddr x) v))
(define (make-petri places transitions)
(letrec ((find-place (lambda (p)
(cond ((assq p places))
(else (error (format #f "can't find place: ~a" p))) ) ))
(find-trans (lambda (t)
(cond ((assq t transitions))
(else (error (format #f "can't find transition: ~a" t))) ) ))
(place-name car)
(place-count cadr)
(set-place-count! (lambda (p v) (set-car! (cdr p) v)))
(trans-name car)
(trans-inputs cadr)
(trans-outputs caddr)
(ready-trans (lambda ()
(filter
(lambda (t)
(apply and?
(map (lambda (p) (> (place-count (find-place p)) 0))
(trans-inputs t)) ) )
transitions) ))
(fire-trans! (lambda (t)
(let ((trans (find-trans t)))
(for-each (lambda (p)
(let ((place (find-place p)))
(set-place-count! place (- (place-count place) 1)) ) )
(trans-inputs trans) )
(for-each (lambda (p)
(let ((place (find-place p)))
(set-place-count! place (+ (place-count place) 1)) ) )
(trans-outputs trans) )
)) )
(self (lambda (op) ;user interface
(case op
((go)
(let loop ((ready (map trans-name (ready-trans))))
(format #t "~a: " ready)
(let ((ans (string->symbol (read-line))))
(cond ((not (memq ans ready))
(format #t "***bzzt!\n")
(loop ready) )
(else
(fire-trans! ans)
(format #t "places: ~a\n" places)
(loop (map trans-name (ready-trans))) ) ) ) ) )
(else
(format #t "??") ) ) ) ) )
self) )
;;; playpen
(define pn (make-petri ;from "Network Algebra" p. 308
'((p 1) (q 0) (r 0))
'((a (p) (q p))
(b (p q) (r q))
(c (q r) (r))
(d (r) (p)) ) ) )
------------------------------------end----------------------------------------