X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Fvm-tran.lisp;h=0557abc6013d7c898e104a011aab9b37a186cc1b;hb=942e45e3bb73fd55786e4a0ab4590324063c0c89;hp=06009ee8e2059555632f2a856def0c6b5e2bc50c;hpb=f1ffbf976aaa50b7b22f126b97e34afe06a91210;p=sbcl.git diff --git a/src/compiler/generic/vm-tran.lisp b/src/compiler/generic/vm-tran.lisp index 06009ee..0557abc 100644 --- a/src/compiler/generic/vm-tran.lisp +++ b/src/compiler/generic/vm-tran.lisp @@ -32,6 +32,10 @@ `(truly-the layout (%instance-ref ,x 0))) (define-source-transform %set-instance-layout (x val) `(%instance-set ,x 0 (the layout ,val))) +(define-source-transform %funcallable-instance-layout (x) + `(truly-the layout (%funcallable-instance-info ,x 0))) +(define-source-transform %set-funcallable-instance-layout (x val) + `(setf (%funcallable-instance-info ,x 0) (the layout ,val))) ;;;; character support @@ -75,6 +79,8 @@ `(the ,(type-specifier declared-element-ctype) ,bare-form))))))) +;;; Transform multi-dimensional array to one dimensional data vector +;;; access. (deftransform data-vector-ref ((array index) (simple-array t)) (let ((array-type (lvar-type array)))