X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-alieneval.lisp;h=63f7f2c45b761da621ce98b03c9c5e483535486d;hb=ffa9a31f62e3e2abab8ebcbb3bfdab9725feaf7f;hp=a2e8324871f7a2d54b46ce75e4cefbffd8e8c76d;hpb=75b52379bdc2269961af6a1308eca63610f38ac3;p=sbcl.git diff --git a/src/code/target-alieneval.lisp b/src/code/target-alieneval.lisp index a2e8324..63f7f2c 100644 --- a/src/code/target-alieneval.lisp +++ b/src/code/target-alieneval.lisp @@ -580,6 +580,7 @@ (parms (make-gensym-list (length args)))) (compile nil `(lambda (,fun ,@parms) + (declare (optimize (sb!c::insert-step-conditions 0))) (declare (type (alien ,type) ,fun)) (alien-funcall ,fun ,@parms))))) (setf (alien-fun-type-stub type) stub)) @@ -607,25 +608,25 @@ way that the argument is passed. :IN - An :IN argument is simply passed by value. The value to be passed is - obtained from argument(s) to the interface function. No values are - returned for :In arguments. This is the default mode. + An :IN argument is simply passed by value. The value to be passed is + obtained from argument(s) to the interface function. No values are + returned for :In arguments. This is the default mode. :OUT - The specified argument type must be a pointer to a fixed sized object. - A pointer to a preallocated object is passed to the routine, and the - the object is accessed on return, with the value being returned from - the interface function. :OUT and :IN-OUT cannot be used with pointers - to arrays, records or functions. + The specified argument type must be a pointer to a fixed sized object. + A pointer to a preallocated object is passed to the routine, and the + the object is accessed on return, with the value being returned from + the interface function. :OUT and :IN-OUT cannot be used with pointers + to arrays, records or functions. :COPY - This is similar to :IN, except that the argument values are stored + This is similar to :IN, except that the argument values are stored on the stack, and a pointer to the object is passed instead of - the value itself. + the value itself. :IN-OUT - This is a combination of :OUT and :COPY. A pointer to the argument is - passed, with the object being initialized from the supplied argument + This is a combination of :OUT and :COPY. A pointer to the argument is + passed, with the object being initialized from the supplied argument and the return value being determined by accessing the object on return." (multiple-value-bind (lisp-name alien-name)