Ignore:
Timestamp:
Nov 17, 2008, 11:27:27 AM (11 years ago)
Author:
gb
Message:

Use 'jni-init' import to call JNI functions that clobber Mach exception
ports on Darwin.
(This still needs lots of work ...)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/examples/jni.lisp

    r6 r11381  
    2222              (pref initargs :<J>ava<VMI>nit<A>rgs.options) options
    2323              (pref initargs :<J>ava<VMI>nit<A>rgs.ignore<U>nrecognized) #$JNI_TRUE)
    24         (let* ((result (#_JNI_CreateJavaVM  :monitor-exception-ports vm env initargs)))
     24        (let* ((result
     25                (ff-call (%kernel-import target::kernel-import-jvm-init)
     26                         :address (foreign-symbol-address "JNI_CreateJavaVM")
     27                         :address vm
     28                         :address env
     29                         :address initargs
     30                         :int)))
    2531          (if (>= result 0)
    2632            (values (%get-ptr vm) (%get-ptr env))
    2733            (error "Can't create Java VM: result = ~d" result)))))))
     34
     35; (%init-java-vm)
     36
     37(defun %attach-to-jvm (jvm)
     38  (rlet ((envp :address +null-ptr+))
     39    (let* ((result (ff-call (%kernel-import target::kernel-import-jvm-init)
     40                            :address (pref jvm #>JavaVM.AttachCurrentThread)
     41                            :address jvm
     42                            :address envp
     43                            :address +null-ptr+
     44                            :int))
     45           (env (pref envp :address)))
     46      (if (eql 0 result)
     47        env))))
     48           
    2849             
    29              
Note: See TracChangeset for help on using the changeset viewer.