Menu

#1 no object creation possible under clisp

open
nobody
None
5
2005-05-16
2005-05-16
jkalsbach
No

Hi, I tried to run foil under clisp on a windows machine.
When I instantiate anything (e.g. a java.util.Date) I get
the following exception:

[44]> (setf *fvm* (make-instance 'foreign-vm
:stream
(socket-connect 13581)))

#<FOREIGN-VM #x19F9289D>
[45]> (date.new)

*** - java.lang.Exception: unsupported macro sequence
'1'
at com.richhickey.foil.MessageReader.
readMacro(MessageReader.java:113)
at com.richhickey.foil.MessageReader.
readDelimitedList(MessageReader.java:81)
at com.richhickey.foil.MessageReader.
readSexpr(MessageReader.java:45)
at com.richhickey.foil.MessageReader.
readMessage(MessageReader.java:39)
at com.richhickey.foil.RuntimeServer.
processMessages(RuntimeServer.java:68)
at com.richhickey.foil.RuntimeServer.
processMessagesOnSocket(RuntimeServer.java:391)
at com.richhickey.foil.RuntimeServer.
main(RuntimeServer.java:429)

Break 1 [46]>

Any help with this problem is appreciated.

Many thanks in advance. If you have any further
questions please do not hesitate to contact me.

Best regards

J Kalsbach

On the java side the RuntimeServer sees the following
forms in its processMessages method:

(:TREF "java.util.Date")
(:NEW #1=#}1. 1. 0. NIL)

Discussion

  • Rich Hickey

    Rich Hickey - 2005-05-17

    Logged In: YES
    user_id=803844

    There was a thread on this on the mailing list:

    http://sourceforge.net/mailarchive/message.php?msg_id=11484644

     
  • jkalsbach

    jkalsbach - 2005-05-18

    Logged In: YES
    user_id=1279756

    Hi, I patched send-message to
    (defun send-message (&rest args)
    (with-standard-io-syntax
    (let* ((send-stream (get-fvm-stream))
    (free-list (fvm-free-list *fvm*)))
    (when free-list
    (setf (fvm-free-list *fvm*) nil)
    (free-frefs send-stream free-list))
    (format send-stream "~A" args)
    (force-output send-stream)
    (process-return-message))))

    as recommended. Now there is another error.

    Executing
    (load "./foil")
    (load "./java-util")
    (use-package :foil)
    (use-package :ext)
    (use-package "java.util")
    (setf *fvm* (make-instance 'foreign-vm
    :stream
    (socket-connect 13580)))

    (date.new)

    gives
    [1]> (setf (default-directory) "c:/software/foil")

    "c:/software/foil"
    [2]> (load "cfoil")

    ;; Loading file C:\software\foil\cfoil.lisp ...
    ;; Loading file C:\software\foil\foil.fas ...
    ;; Loaded file C:\software\foil\foil.fas
    ;; Loading file C:\software\foil\java-util.fas ...
    ;; Loaded file C:\software\foil\java-util.fas
    *** - java.lang.Exception: unsupported message
    at com.richhickey.foil.RuntimeServer.
    processMessages(RuntimeServer.java:249)
    at com.richhickey.foil.RuntimeServer.
    processMessagesOnSocket(RuntimeServer.java:391)
    at com.richhickey.foil.RuntimeServer.main(RuntimeServer.
    java:429)

    Break 1 [3]>
    on the repl and
    c:\software\foil>java -jar ./foil.jar 13580
    java -jar ./foil.jar 13580
    (TREF java.util.Date)

    on the java side. The ":" before TREF seems to be missing.
    Any clues? Many thanks in advance!

    Regards,

    J Kalsbach

     

Log in to post a comment.