From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Daniel Llorens Newsgroups: gmane.lisp.guile.devel Subject: Re: [patch] literal arrays in master Date: Fri, 19 Sep 2014 14:31:35 +0200 Message-ID: References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_8491D407-661D-4536-8BF8-EF74D53DE513" X-Trace: ger.gmane.org 1411129950 27435 80.91.229.3 (19 Sep 2014 12:32:30 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 19 Sep 2014 12:32:30 +0000 (UTC) To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Fri Sep 19 14:32:22 2014 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XUxMG-0002Zx-Vl for guile-devel@m.gmane.org; Fri, 19 Sep 2014 14:32:17 +0200 Original-Received: from localhost ([::1]:57969 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUxMG-0007et-Jn for guile-devel@m.gmane.org; Fri, 19 Sep 2014 08:32:16 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47233) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUxM2-0007c9-6n for guile-devel@gnu.org; Fri, 19 Sep 2014 08:32:10 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XUxLo-0007cF-R0 for guile-devel@gnu.org; Fri, 19 Sep 2014 08:31:57 -0400 Original-Received: from zhhdzmsp-smta16.bluewin.ch ([195.186.227.132]:34544) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XUxLo-0007ax-D5 for guile-devel@gnu.org; Fri, 19 Sep 2014 08:31:48 -0400 Original-Received: from [195.186.99.130] ([195.186.99.130:62519] helo=zhbdzmsp-smta11.bluewin.ch) by zhhdzmsp-smta16.bluewin.ch (envelope-from ) (ecelerity 3.5.7.40067 r(Platform:3.5.7.0)) with ESMTP id E0/BD-13081-D222C145; Fri, 19 Sep 2014 12:31:41 +0000 Original-Received: from 4box.hq.corp.viasat.com (62.2.203.131) by zhbdzmsp-smta11.bluewin.ch (8.5.142) (authenticated as dll@bluewin.ch) id 51E5C44E1E9EA0C6 for guile-devel@gnu.org; Fri, 19 Sep 2014 12:31:41 +0000 In-Reply-To: X-Mailer: Apple Mail (2.1878.6) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 195.186.227.132 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:17487 Archived-At: --Apple-Mail=_8491D407-661D-4536-8BF8-EF74D53DE513 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Now with a test. The first patch makes most of = test-suite/tests/arrays.test run under both the compiler and the = interpreter. It produces a large amount of errors under the compiler. = The next two patches are the same as in the last email and fix these = errors. However, it's interesting to me that the errors in arrays.test somehow = don't count as a failure in the final summary of the test suite. I = believe this could be a bug in the test framework, but I'm not familiar = with that code. Regards, Daniel --Apple-Mail=_8491D407-661D-4536-8BF8-EF74D53DE513 Content-Disposition: attachment; filename=0001-Run-some-of-arrays.test-under-both-compiler-interpre.patch Content-Type: application/octet-stream; name="0001-Run-some-of-arrays.test-under-both-compiler-interpre.patch" Content-Transfer-Encoding: quoted-printable =46rom=20235e46ba42b19ac970d0ed268e32214e80662cff=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Daniel=20Llorens=20=0A= Date:=20Fri,=2019=20Sep=202014=2013:58:59=20+0200=0ASubject:=20[PATCH=20= 1/3]=20Run=20some=20of=20arrays.test=20under=20both=20compiler=20&=0A=20= interpreter=0A=0A*=20test-suite/test-suite/lib.scm=20(c&e):=20accept=20= (pass-if=20exp)=20clause.=0A=0A*=20test-suite/tests/arrays.test:=20use=20= with-prefix/c&e=20instead=20of=0A=20=20with-prefix=20where=20possible.=0A= ---=0A=20test-suite/test-suite/lib.scm=20|=20=20=20=202=20++=0A=20= test-suite/tests/arrays.test=20=20|=20=20=2052=20= ++++++++++++++++++++---------------------=0A=202=20files=20changed,=2028=20= insertions(+),=2026=20deletions(-)=0A=0Adiff=20--git=20= a/test-suite/test-suite/lib.scm=20b/test-suite/test-suite/lib.scm=0A= index=209ecaf89..b571122=20100644=0A---=20= a/test-suite/test-suite/lib.scm=0A+++=20b/test-suite/test-suite/lib.scm=0A= @@=20-462,6=20+462,8=20@@=0A=20(define-syntax=20c&e=0A=20=20=20= (syntax-rules=20(pass-if=20pass-if-equal=20pass-if-exception)=0A=20=20=20= =20=20"Run=20the=20given=20tests=20both=20with=20the=20evaluator=20and=20= the=20compiler/VM."=0A+=20=20=20=20((_=20(pass-if=20exp))=0A+=20=20=20=20= =20(c&e=20(pass-if=20"[unnamed=20test]"=20exp)))=0A=20=20=20=20=20((_=20= (pass-if=20test-name=20exp))=0A=20=20=20=20=20=20(begin=20(pass-if=20= (string-append=20test-name=20"=20(eval)")=0A=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20(primitive-eval=20'exp))=0Adiff=20= --git=20a/test-suite/tests/arrays.test=20b/test-suite/tests/arrays.test=0A= index=20415f183..803c297=20100644=0A---=20a/test-suite/tests/arrays.test=0A= +++=20b/test-suite/tests/arrays.test=0A@@=20-200,7=20+200,7=20@@=0A=20= ;;;=20array-equal?=0A=20;;;=0A=0A-(with-test-prefix=20"array-equal?"=0A= +(with-test-prefix/c&e=20"array-equal?"=0A=0A=20=20=20(pass-if=20= "#s16(...)"=0A=20=20=20=20=20(array-equal?=20#s16(1=202=203)=20#s16(1=20= 2=203))))=0A@@=20-212,7=20+212,7=20@@=0A=20(define=20= exception:mapping-out-of-range=0A=20=20=20(cons=20'misc-error=20= "^mapping=20out=20of=20range"))=20=20;;=20per=20scm_make_shared_array=0A=0A= -(with-test-prefix=20"make-shared-array"=0A+(with-test-prefix/c&e=20= "make-shared-array"=0A=0A=20=20=20;;=20this=20failed=20in=20guile=20= 1.8.0=0A=20=20=20(pass-if=20"vector=20unchanged"=0A@@=20-283,9=20+283,9=20= @@=0A=20;;;=20array-contents=0A=20;;;=0A=0A-(with-test-prefix=20= "array-contents"=0A+(define=20(every-two=20x)=20(make-shared-array=20x=20= (lambda=20(i)=20(list=20(*=20i=202)))=202))=0A=0A-=20=20(define=20= (every-two=20x)=20(make-shared-array=20x=20(lambda=20(i)=20(list=20(*=20= i=202)))=202))=0A+(with-test-prefix/c&e=20"array-contents"=0A=0A=20=20=20= (pass-if=20"simple=20vector"=0A=20=20=20=20=20(let*=20((a=20(make-array=20= 0=204)))=0A@@=20-362,10=20+362,10=20@@=0A=20;;;=20shared-array-root=0A=20= ;;;=0A=0A-(with-test-prefix=20"shared-array-root"=0A+(define=20amap1=20= (lambda=20(i)=20(list=20(*=202=20i))))=0A+(define=20amap2=20(lambda=20(i=20= j)=20(list=20(+=201=20(*=202=20i))=20(+=201=20(*=202=20j)))))=0A=0A-=20=20= (define=20amap1=20(lambda=20(i)=20(list=20(*=202=20i))))=0A-=20=20= (define=20amap2=20(lambda=20(i=20j)=20(list=20(+=201=20(*=202=20i))=20(+=20= 1=20(*=202=20j)))))=0A+(with-test-prefix/c&e=20"shared-array-root"=0A=0A=20= =20=20(pass-if=20"plain=20vector"=0A=20=20=20=20=20(let*=20((a=20= (make-vector=204=200))=0A@@=20-395,7=20+395,7=20@@=0A=20(define=20= exception:wrong-type-arg=0A=20=20=20(cons=20#t=20"Wrong=20type"))=0A=0A= -(with-test-prefix=20"transpose-array"=0A+(with-test-prefix/c&e=20= "transpose-array"=0A=0A=20=20=20(pass-if-exception=20"non=20array=20= argument"=20exception:wrong-type-arg=0A=20=20=20=20=20(transpose-array=20= 99))=0A@@=20-436,11=20+436,11=20@@=0A=20;;;=20array->list=0A=20;;;=0A=0A= -(with-test-prefix=20"array->list"=0A-=20=20(pass-if-equal=20'(1=202=20= 3)=20(array->list=20#s16(1=202=203)))=0A-=20=20(pass-if-equal=20'(1=202=20= 3)=20(array->list=20#(1=202=203)))=0A-=20=20(pass-if-equal=20'((1=202)=20= (3=204)=20(5=206))=20(array->list=20#2((1=202)=20(3=204)=20(5=206))))=0A= -=20=20(pass-if-equal=20'()=20=20(array->list=20#()))=0A= +(with-test-prefix/c&e=20"array->list"=0A+=20=20(pass-if-equal=20= "uniform=20vector"=20'(1=202=203)=20(array->list=20#s16(1=202=203)))=0A+=20= =20(pass-if-equal=20"vector"=20'(1=202=203)=20(array->list=20#(1=202=20= 3)))=0A+=20=20(pass-if-equal=20"rank=202=20array"=20'((1=202)=20(3=204)=20= (5=206))=20(array->list=20#2((1=202)=20(3=204)=20(5=206))))=0A+=20=20= (pass-if-equal=20"empty=20vector"=20'()=20=20(array->list=20#()))=0A=0A=20= =20=20(pass-if-equal=20"http://bugs.gnu.org/12465=20-=20ok"=0A=20=20=20=20= =20=20=20'(3=204)=0A@@=20-531,7=20+531,7=20@@=0A=20;;;=20= array-in-bounds?=0A=20;;;=0A=0A-(with-test-prefix=20"array-in-bounds?"=0A= +(with-test-prefix/c&e=20"array-in-bounds?"=0A=0A=20=20=20(pass-if=20= (let=20((a=20(make-array=20#f=20'(425=20425))))=0A=20=09=20=20=20=20=20= (eq?=20#f=20(array-in-bounds?=20a=200)))))=0A@@=20-542,7=20+542,7=20@@=0A= =0A=20(with-test-prefix=20"array-type"=0A=0A-=20=20(with-test-prefix=20= "on=20make-foo-vector"=0A+=20=20(with-test-prefix/c&e=20"on=20= make-foo-vector"=0A=0A=20=20=20=20=20(pass-if=20"bool"=0A=20=20=20=20=20=20= =20(eq?=20'b=20(array-type=20(make-bitvector=201))))=0A@@=20-728,7=20= +728,7=20@@=0A=20;;;=20syntax=0A=20;;;=0A=0A-(with-test-prefix=20= "syntax"=0A+(with-test-prefix/c&e=20"syntax"=0A=0A=20=20=20(pass-if=20= "rank=20and=20lower=20bounds"=0A=20=20=20=20=20;;=20uniform=20u32=20= array=20of=20rank=202=20with=20index=20ranges=202..3=20and=207..8.=0A@@=20= -770,7=20+770,7=20@@=0A=20;;;=20equal?=20with=20vector=20and=20= one-dimensional=20array=0A=20;;;=0A=0A-(with-test-prefix=20"equal?"=0A= +(with-test-prefix/c&e=20"equal?"=0A=20=20=20(pass-if=20"array=20and=20= non-array"=0A=20=20=20=20=20(not=20(equal?=20#2f64((0=201)=20(2=203))=20= 100)))=0A=0A@@=20-805,12=20+805,12=20@@=0A=20;;;=20slices=20as=20= generalized=20vectors=0A=20;;;=0A=0A-(let=20((array=20#2u32((0=201)=20(2=20= 3))))=0A-=20=20(define=20(array-row=20a=20i)=0A-=20=20=20=20= (make-shared-array=20a=20(lambda=20(j)=20(list=20i=20j))=0A-=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(cadr=20= (array-dimensions=20a))))=0A-=20=20(with-test-prefix=20"generalized=20= vector=20slices"=0A-=20=20=20=20(pass-if=20(equal?=20(array-row=20array=20= 1)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= #u32(2=203)))=0A-=20=20=20=20(pass-if=20(equal?=20(array-ref=20= (array-row=20array=201)=200)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=202))))=0A+(define=20(array-row=20a=20i)=0A+=20=20= (make-shared-array=20a=20(lambda=20(j)=20(list=20i=20j))=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(cadr=20= (array-dimensions=20a))))=0A+=0A+(with-test-prefix/c&e=20"generalized=20= vector=20slices"=0A+=20=20(pass-if=20(equal?=20(array-row=20#2u32((0=20= 1)=20(2=203))=201)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20#u32(2=203)))=0A+=20=20(pass-if=20(equal?=20(array-ref=20= (array-row=20#2u32((0=201)=20(2=203))=201)=200)=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=202)))=0A--=0A1.7.9.5=0A= --Apple-Mail=_8491D407-661D-4536-8BF8-EF74D53DE513 Content-Disposition: attachment; filename=0002-Pack-array-dimensions-in-array-object.patch Content-Type: application/octet-stream; name="0002-Pack-array-dimensions-in-array-object.patch" Content-Transfer-Encoding: quoted-printable =46rom=208d2d5641fdacaae31996e9afcfc0eb4a35555b70=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Daniel=20Llorens=20=0A= Date:=20Wed,=2017=20Sep=202014=2007:15:42=20+0200=0ASubject:=20[PATCH=20= 2/3]=20Pack=20array=20dimensions=20in=20array=20object=0A=0A*=20= libguile/arrays.c=20(scm_i_make_array):=20redo=20object=20layout.=0A=0A*=20= libguile/arrays.h=20(SCM_I_ARRAY_V,=20SCM_ARRAY_BASE,=20= SCM_I_ARRAY_DIMS):=0A=20=20to=20match=20new=20layout.=0A=0A=20=20= (SCM_I_ARRAY_SET_V,=20SCM_ARRAY_SET_BASE):=20new=20setters.=0A=0A=20=20= (SCM_I_ARRAY_MEM,=20scm_i_t_array):=20unused,=20remove.=0A=0A=20=20= (scm_i_shap2ra,=20scm_make_typed_array,=20= scm_from_contiguous_typed_array,=0A=20=20scm_from_contiguous_array,=20= scm_make_shared_array,=20scm_transpose_array,=0A=20=20= scm_array_contents):=20fix=20uses=20of=20SCM_I_ARRAY_V,=20SCM_ARRAY_BASE=20= as=0A=20=20lvalues.=0A=0A*=20libguile/array-map.c=20(make1array,=20= scm_ramapc):=20fix=20uses=20of=0A=20=20SCM_I_ARRAY_V,=20SCM_ARRAY_BASE=20= as=20lvalues.=0A---=0A=20libguile/array-map.c=20=20|=20=20=2020=20= +++++++--------=0A=20libguile/arrays.c=20=20=20=20=20|=20=20=2067=20= ++++++++++++++++++++++++++-----------------------=0A=20libguile/arrays.h=20= =20=20=20=20|=20=20=2017=20+++++--------=0A=20libguile/deprecated.h=20|=20= =20=20=201=20-=0A=204=20files=20changed,=2052=20insertions(+),=2053=20= deletions(-)=0A=0Adiff=20--git=20a/libguile/array-map.c=20= b/libguile/array-map.c=0Aindex=202d68f5f..938f0a7=20100644=0A---=20= a/libguile/array-map.c=0A+++=20b/libguile/array-map.c=0A@@=20-1,6=20+1,6=20= @@=0A=20/*=20Copyright=20(C)=201996,=201998,=202000,=202001,=202004,=20= 2005,=202006,=202008,=202009,=0A=20=20*=20=20=202010,=202011,=202012,=20= 2013,=202014=20Free=20Software=20Foundation,=20Inc.=0A-=20*=0A+=20*=0A=20= =20*=20This=20library=20is=20free=20software;=20you=20can=20redistribute=20= it=20and/or=0A=20=20*=20modify=20it=20under=20the=20terms=20of=20the=20= GNU=20Lesser=20General=20Public=20License=0A=20=20*=20as=20published=20= by=20the=20Free=20Software=20Foundation;=20either=20version=203=20of=0A= @@=20-63,11=20+63,11=20@@=20static=20SCM=0A=20make1array=20(SCM=20v,=20= ssize_t=20inc)=0A=20{=0A=20=20=20SCM=20a=20=3D=20scm_i_make_array=20(1);=0A= -=20=20SCM_I_ARRAY_BASE=20(a)=20=3D=200;=0A+=20=20SCM_I_ARRAY_SET_BASE=20= (a,=200);=0A=20=20=20SCM_I_ARRAY_DIMS=20(a)->lbnd=20=3D=200;=0A=20=20=20= SCM_I_ARRAY_DIMS=20(a)->ubnd=20=3D=20scm_c_array_length=20(v)=20-=201;=0A= =20=20=20SCM_I_ARRAY_DIMS=20(a)->inc=20=3D=20inc;=0A-=20=20SCM_I_ARRAY_V=20= (a)=20=3D=20v;=0A+=20=20SCM_I_ARRAY_SET_V=20(a,=20v);=0A=20=20=20return=20= a;=0A=20}=0A=0A@@=20-195,9=20+195,9=20@@=20scm_ramapc=20(void=20= *cproc_ptr,=20SCM=20data,=20SCM=20ra0,=20SCM=20lra,=20const=20char=20= *what)=0A=20=20=20=20=20=20=20if=20(k=20=3D=3D=20kroll)=0A=20=20=20=20=20= =20=20=20=20{=0A=20=20=20=20=20=20=20=20=20=20=20SCM=20y=20=3D=20lra;=0A= -=20=20=20=20=20=20=20=20=20=20SCM_I_ARRAY_BASE=20(va0)=20=3D=20cindk=20= (ra0,=20vi,=20kroll);=0A+=20=20=20=20=20=20=20=20=20=20= SCM_I_ARRAY_SET_BASE=20(va0,=20cindk=20(ra0,=20vi,=20kroll));=0A=20=20=20= =20=20=20=20=20=20=20=20for=20(z=20=3D=20lva;=20!scm_is_null=20(z);=20z=20= =3D=20SCM_CDR=20(z),=20y=20=3D=20SCM_CDR=20(y))=0A-=20=20=20=20=20=20=20=20= =20=20=20=20SCM_I_ARRAY_BASE=20(SCM_CAR=20(z))=20=3D=20cindk=20(SCM_CAR=20= (y),=20vi,=20kroll);=0A+=20=20=20=20=20=20=20=20=20=20=20=20= SCM_I_ARRAY_SET_BASE=20(SCM_CAR=20(z),=20cindk=20(SCM_CAR=20(y),=20vi,=20= kroll));=0A=20=20=20=20=20=20=20=20=20=20=20if=20(!=20(SCM_UNBNDP=20= (data)=20?=20cproc=20(va0,=20lva)=20:=20cproc=20(va0,=20data,=20lva)))=0A= =20=20=20=20=20=20=20=20=20=20=20=20=20return=200;=0A=20=20=20=20=20=20=20= =20=20=20=20--k;=0A@@=20-815,7=20+815,7=20@@=20array_compare=20= (scm_t_array_handle=20*hx,=20scm_t_array_handle=20*hy,=0A=20=20=20=20=20=20= =20=20=20return=200;=0A=0A=20=20=20=20=20=20=20i=20=3D=20= hx->dims[dim].ubnd=20-=20hx->dims[dim].lbnd=20+=201;=0A-=0A+=0A=20=20=20=20= =20=20=20incx=20=3D=20hx->dims[dim].inc;=0A=20=20=20=20=20=20=20incy=20=3D= =20hy->dims[dim].inc;=0A=20=20=20=20=20=20=20posx=20+=3D=20(i=20-=201)=20= *=20incx;=0A@@=20-832,11=20+832,11=20@@=20SCM=0A=20scm_array_equal_p=20= (SCM=20x,=20SCM=20y)=0A=20{=0A=20=20=20scm_t_array_handle=20hx,=20hy;=0A= -=20=20SCM=20res;=0A-=0A+=20=20SCM=20res;=0A+=0A=20=20=20= scm_array_get_handle=20(x,=20&hx);=0A=20=20=20scm_array_get_handle=20(y,=20= &hy);=0A-=0A+=0A=20=20=20res=20=3D=20scm_from_bool=20(hx.ndims=20=3D=3D=20= hy.ndims=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20&&=20hx.element_type=20=3D=3D=20hy.element_type);=0A=0A@@=20= -860,7=20+860,7=20@@=20SCM_DEFINE=20(scm_i_array_equal_p,=20= "array-equal?",=200,=202,=201,=0A=20{=0A=20=20=20if=20(SCM_UNBNDP=20= (ra0)=20||=20SCM_UNBNDP=20(ra1))=0A=20=20=20=20=20return=20SCM_BOOL_T;=0A= -=0A+=0A=20=20=20while=20(!scm_is_null=20(rest))=0A=20=20=20=20=20{=20if=20= (scm_is_false=20(scm_array_equal_p=20(ra0,=20ra1)))=0A=20=20=20=20=20=20=20= =20=20return=20SCM_BOOL_F;=0Adiff=20--git=20a/libguile/arrays.c=20= b/libguile/arrays.c=0Aindex=20702faac..1fd6066=20100644=0A---=20= a/libguile/arrays.c=0A+++=20b/libguile/arrays.c=0A@@=20-1,6=20+1,6=20@@=0A= =20/*=20Copyright=20(C)=20= 1995,1996,1997,1998,2000,2001,2002,2003,2004,2005,=0A=20=20*=20=20=20= 2006,=202009,=202010,=202011,=202012,=202013,=202014=20Free=20Software=20= Foundation,=20Inc.=0A-=20*=0A+=20*=0A=20=20*=20This=20library=20is=20= free=20software;=20you=20can=20redistribute=20it=20and/or=0A=20=20*=20= modify=20it=20under=20the=20terms=20of=20the=20GNU=20Lesser=20General=20= Public=20License=0A=20=20*=20as=20published=20by=20the=20Free=20Software=20= Foundation;=20either=20version=203=20of=0A@@=20-29,6=20+29,8=20@@=0A=20= #include=20=0A=20#include=20=0A=0A+#include=20= "verify.h"=0A+=0A=20#include=20"libguile/_scm.h"=0A=20#include=20= "libguile/__scm.h"=0A=20#include=20"libguile/eq.h"=0A@@=20-92,7=20+94,7=20= @@=20SCM_DEFINE=20(scm_shared_array_offset,=20"shared-array-offset",=20= 1,=200,=200,=0A=20#undef=20FUNC_NAME=0A=0A=0A-SCM_DEFINE=20= (scm_shared_array_increments,=20"shared-array-increments",=201,=200,=20= 0,=0A+SCM_DEFINE=20(scm_shared_array_increments,=20= "shared-array-increments",=201,=200,=200,=0A=20=20=20=20=20=20=20=20=20=20= =20=20(SCM=20ra),=0A=20=09=20=20=20=20"For=20each=20dimension,=20return=20= the=20distance=20between=20elements=20in=20the=20root=20vector.")=0A=20= #define=20FUNC_NAME=20s_scm_shared_array_increments=0A@@=20-112,15=20= +114,20=20@@=20SCM_DEFINE=20(scm_shared_array_increments,=20= "shared-array-increments",=201,=200,=200,=0A=20}=0A=20#undef=20FUNC_NAME=0A= =0A+/*=20FIXME:=20to=20avoid=20this=20assumption,=20fix=20the=20= accessors=20in=20arrays.h,=0A+=20=20=20scm_i_make_array,=20and=20the=20= array=20cases=20in=20system/vm/assembler.scm.=20*/=0A+=0A+verify=20= (sizeof=20(scm_t_array_dim)=20=3D=3D=203*sizeof=20(scm_t_bits));=0A+=0A= +/*=20Matching=20SCM_I_ARRAY=20accessors=20in=20arrays.h=20*/=0A=20SCM=0A= =20scm_i_make_array=20(int=20ndim)=0A=20{=0A-=20=20SCM=20ra;=0A-=20=20ra=20= =3D=20scm_cell=20(((scm_t_bits)=20ndim=20<<=2017)=20+=20scm_tc7_array,=0A= -=09=09=20(scm_t_bits)=20scm_gc_malloc=20(sizeof=20(scm_i_t_array)=20+=0A= -=09=09=09=09=09=20=20=20=20=20ndim=20*=20sizeof=20(scm_t_array_dim),=0A= -=09=09=09=09=09=20=20=20=20=20"array"));=0A-=20=20SCM_I_ARRAY_V=20(ra)=20= =3D=20SCM_BOOL_F;=0A+=20=20verify=20= (sizeof(size_t)=3D=3Dsizeof(scm_t_bits));=0A+=20=20SCM=20ra=20=3D=20= scm_words=20(((scm_t_bits)=20ndim=20<<=2017)=20+=20scm_tc7_array,=203=20= +=20ndim*3);=0A+=20=20SCM_I_ARRAY_SET_V=20(ra,=20SCM_BOOL_F);=0A+=20=20= SCM_I_ARRAY_SET_BASE=20(ra,=200);=0A+=20=20/*=20dimensions=20are=20unset=20= */=0A=20=20=20return=20ra;=0A=20}=0A=0A@@=20-139,7=20+146,7=20@@=20= scm_i_shap2ra=20(SCM=20args)=0A=20=20=20=20=20scm_misc_error=20(NULL,=20= s_bad_spec,=20SCM_EOL);=0A=0A=20=20=20ra=20=3D=20scm_i_make_array=20= (ndim);=0A-=20=20SCM_I_ARRAY_BASE=20(ra)=20=3D=200;=0A+=20=20= SCM_I_ARRAY_SET_BASE=20(ra,=200);=0A=20=20=20s=20=3D=20SCM_I_ARRAY_DIMS=20= (ra);=0A=20=20=20for=20(;=20!scm_is_null=20(args);=20s++,=20args=20=3D=20= SCM_CDR=20(args))=0A=20=20=20=20=20{=0A@@=20-179,7=20+186,7=20@@=20= SCM_DEFINE=20(scm_make_typed_array,=20"make-typed-array",=202,=200,=201,=0A= =20=20=20size_t=20k,=20rlen=20=3D=201;=0A=20=20=20scm_t_array_dim=20*s;=0A= =20=20=20SCM=20ra;=0A-=0A+=0A=20=20=20ra=20=3D=20scm_i_shap2ra=20= (bounds);=0A=20=20=20SCM_SET_ARRAY_CONTIGUOUS_FLAG=20(ra);=0A=20=20=20s=20= =3D=20SCM_I_ARRAY_DIMS=20(ra);=0A@@=20-195,8=20+202,7=20@@=20SCM_DEFINE=20= (scm_make_typed_array,=20"make-typed-array",=202,=200,=201,=0A=20=20=20= if=20(scm_is_eq=20(fill,=20SCM_UNSPECIFIED))=0A=20=20=20=20=20fill=20=3D=20= SCM_UNDEFINED;=0A=0A-=20=20SCM_I_ARRAY_V=20(ra)=20=3D=0A-=20=20=20=20= scm_make_generalized_vector=20(type,=20scm_from_size_t=20(rlen),=20= fill);=0A+=20=20SCM_I_ARRAY_SET_V=20(ra,=20scm_make_generalized_vector=20= (type,=20scm_from_size_t=20(rlen),=20fill));=0A=0A=20=20=20if=20(1=20=3D=3D= =20SCM_I_ARRAY_NDIM=20(ra)=20&&=200=20=3D=3D=20SCM_I_ARRAY_BASE=20(ra))=0A= =20=20=20=20=20if=20(0=20=3D=3D=20s->lbnd)=0A@@=20-217,7=20+223,7=20@@=20= scm_from_contiguous_typed_array=20(SCM=20type,=20SCM=20bounds,=20const=20= void=20*bytes,=0A=20=20=20scm_t_array_handle=20h;=0A=20=20=20void=20= *elts;=0A=20=20=20size_t=20sz;=0A-=0A+=0A=20=20=20ra=20=3D=20= scm_i_shap2ra=20(bounds);=0A=20=20=20SCM_SET_ARRAY_CONTIGUOUS_FLAG=20= (ra);=0A=20=20=20s=20=3D=20SCM_I_ARRAY_DIMS=20(ra);=0A@@=20-229,8=20= +235,7=20@@=20scm_from_contiguous_typed_array=20(SCM=20type,=20SCM=20= bounds,=20const=20void=20*bytes,=0A=20=20=20=20=20=20=20SCM_ASSERT_RANGE=20= (1,=20bounds,=20s[k].lbnd=20<=3D=20s[k].ubnd=20+=201);=0A=20=20=20=20=20=20= =20rlen=20=3D=20(s[k].ubnd=20-=20s[k].lbnd=20+=201)=20*=20s[k].inc;=0A=20= =20=20=20=20}=0A-=20=20SCM_I_ARRAY_V=20(ra)=20=3D=0A-=20=20=20=20= scm_make_generalized_vector=20(type,=20scm_from_size_t=20(rlen),=20= SCM_UNDEFINED);=0A+=20=20SCM_I_ARRAY_SET_V=20(ra,=20= scm_make_generalized_vector=20(type,=20scm_from_size_t=20(rlen),=20= SCM_UNDEFINED));=0A=0A=0A=20=20=20scm_array_get_handle=20(ra,=20&h);=0A= @@=20-273,7=20+278,7=20@@=20scm_from_contiguous_array=20(SCM=20bounds,=20= const=20SCM=20*elts,=20size_t=20len)=0A=20=20=20scm_t_array_dim=20*s;=0A=20= =20=20SCM=20ra;=0A=20=20=20scm_t_array_handle=20h;=0A-=0A+=0A=20=20=20ra=20= =3D=20scm_i_shap2ra=20(bounds);=0A=20=20=20SCM_SET_ARRAY_CONTIGUOUS_FLAG=20= (ra);=0A=20=20=20s=20=3D=20SCM_I_ARRAY_DIMS=20(ra);=0A@@=20-288,7=20= +293,7=20@@=20scm_from_contiguous_array=20(SCM=20bounds,=20const=20SCM=20= *elts,=20size_t=20len)=0A=20=20=20if=20(rlen=20!=3D=20len)=0A=20=20=20=20= =20SCM_MISC_ERROR=20("element=20length=20and=20dimensions=20do=20not=20= match",=20SCM_EOL);=0A=0A-=20=20SCM_I_ARRAY_V=20(ra)=20=3D=20= scm_c_make_vector=20(rlen,=20SCM_UNDEFINED);=0A+=20=20SCM_I_ARRAY_SET_V=20= (ra,=20scm_c_make_vector=20(rlen,=20SCM_UNDEFINED));=0A=20=20=20= scm_array_get_handle=20(ra,=20&h);=0A=20=20=20memcpy=20= (h.writable_elements,=20elts,=20rlen=20*=20sizeof(SCM));=0A=20=20=20= scm_array_handle_release=20(&h);=0A@@=20-323,7=20+328,7=20@@=20= scm_i_ra_set_contp=20(SCM=20ra)=0A=20=09=20=20=20=20=20=20= SCM_CLR_ARRAY_CONTIGUOUS_FLAG=20(ra);=0A=20=09=20=20=20=20=20=20return;=0A= =20=09=20=20=20=20}=0A-=09=20=20inc=20*=3D=20(SCM_I_ARRAY_DIMS=20= (ra)[k].ubnd=0A+=09=20=20inc=20*=3D=20(SCM_I_ARRAY_DIMS=20(ra)[k].ubnd=0A= =20=09=09=20=20-=20SCM_I_ARRAY_DIMS=20(ra)[k].lbnd=20+=201);=0A=20=09}=0A= =20=20=20=20=20}=0A@@=20-368,7=20+373,7=20@@=20SCM_DEFINE=20= (scm_make_shared_array,=20"make-shared-array",=202,=200,=201,=0A=0A=20=20= =20if=20(SCM_I_ARRAYP=20(oldra))=0A=20=20=20=20=20{=0A-=20=20=20=20=20=20= SCM_I_ARRAY_V=20(ra)=20=3D=20SCM_I_ARRAY_V=20(oldra);=0A+=20=20=20=20=20=20= SCM_I_ARRAY_SET_V=20(ra,=20SCM_I_ARRAY_V=20(oldra));=0A=20=20=20=20=20=20= =20old_base=20=3D=20old_min=20=3D=20old_max=20=3D=20SCM_I_ARRAY_BASE=20= (oldra);=0A=20=20=20=20=20=20=20s=20=3D=20scm_array_handle_dims=20= (&old_handle);=0A=20=20=20=20=20=20=20k=20=3D=20scm_array_handle_rank=20= (&old_handle);=0A@@=20-382,7=20+387,7=20@@=20SCM_DEFINE=20= (scm_make_shared_array,=20"make-shared-array",=202,=200,=201,=0A=20=20=20= =20=20}=0A=20=20=20else=0A=20=20=20=20=20{=0A-=20=20=20=20=20=20= SCM_I_ARRAY_V=20(ra)=20=3D=20oldra;=0A+=20=20=20=20=20=20= SCM_I_ARRAY_SET_V=20(ra,=20oldra);=0A=20=20=20=20=20=20=20old_base=20=3D=20= old_min=20=3D=200;=0A=20=20=20=20=20=20=20old_max=20=3D=20= scm_c_array_length=20(oldra)=20-=201;=0A=20=20=20=20=20}=0A@@=20-398,9=20= +403,8=20@@=20SCM_DEFINE=20(scm_make_shared_array,=20= "make-shared-array",=202,=200,=201,=0A=20=09=20=20=20=20ra=20=3D=20= scm_make_generalized_vector=20(scm_array_type=20(ra),=0A=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20SCM_INUM0,=20= SCM_UNDEFINED);=0A=20=09=20=20else=0A-=09=20=20=20=20SCM_I_ARRAY_V=20= (ra)=20=3D=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20= scm_make_generalized_vector=20(scm_array_type=20(ra),=0A-=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20SCM_INUM0,=20SCM_UNDEFINED);=0A+=09=20= =20=20=20SCM_I_ARRAY_SET_V=20(ra,=20scm_make_generalized_vector=20= (scm_array_type=20(ra),=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= SCM_INUM0,=20SCM_UNDEFINED));=0A=20=09=20=20scm_array_handle_release=20= (&old_handle);=0A=20=09=20=20return=20ra;=0A=20=09}=0A@@=20-408,7=20= +412,8=20@@=20SCM_DEFINE=20(scm_make_shared_array,=20= "make-shared-array",=202,=200,=201,=0A=0A=20=20=20imap=20=3D=20= scm_apply_0=20(mapfunc,=20scm_reverse=20(inds));=0A=20=20=20i=20=3D=20= scm_array_handle_pos=20(&old_handle,=20imap);=0A-=20=20SCM_I_ARRAY_BASE=20= (ra)=20=3D=20new_min=20=3D=20new_max=20=3D=20i=20+=20old_base;=0A+=20=20= new_min=20=3D=20new_max=20=3D=20i=20+=20old_base;=0A+=20=20= SCM_I_ARRAY_SET_BASE=20(ra,=20new_min);=0A=20=20=20indptr=20=3D=20inds;=0A= =20=20=20k=20=3D=20SCM_I_ARRAY_NDIM=20(ra);=0A=20=20=20while=20(k--)=0A= @@=20-450,7=20+455,7=20@@=20SCM_DEFINE=20(scm_make_shared_array,=20= "make-shared-array",=202,=200,=201,=0A=0A=0A=20/*=20args=20are=20RA=20.=20= DIMS=20*/=0A-SCM_DEFINE=20(scm_transpose_array,=20"transpose-array",=20= 1,=200,=201,=0A+SCM_DEFINE=20(scm_transpose_array,=20"transpose-array",=20= 1,=200,=201,=0A=20=20=20=20=20=20=20=20=20=20=20=20(SCM=20ra,=20SCM=20= args),=0A=20=09=20=20=20=20"Return=20an=20array=20sharing=20contents=20= with=20@var{ra},=20but=20with\n"=0A=20=09=20=20=20=20"dimensions=20= arranged=20in=20a=20different=20order.=20=20There=20must=20be=20one\n"=0A= @@=20-509,8=20+514,8=20@@=20SCM_DEFINE=20(scm_transpose_array,=20= "transpose-array",=201,=200,=201,=0A=20=09}=0A=20=20=20=20=20=20=20= ndim++;=0A=20=20=20=20=20=20=20res=20=3D=20scm_i_make_array=20(ndim);=0A= -=20=20=20=20=20=20SCM_I_ARRAY_V=20(res)=20=3D=20SCM_I_ARRAY_V=20(ra);=0A= -=20=20=20=20=20=20SCM_I_ARRAY_BASE=20(res)=20=3D=20SCM_I_ARRAY_BASE=20= (ra);=0A+=20=20=20=20=20=20SCM_I_ARRAY_SET_V=20(res,=20SCM_I_ARRAY_V=20= (ra));=0A+=20=20=20=20=20=20SCM_I_ARRAY_SET_BASE=20(res,=20= SCM_I_ARRAY_BASE=20(ra));=0A=20=20=20=20=20=20=20for=20(k=20=3D=20ndim;=20= k--;)=0A=20=09{=0A=20=09=20=20SCM_I_ARRAY_DIMS=20(res)[k].lbnd=20=3D=20= 0;=0A@@=20-534,7=20+539,7=20@@=20SCM_DEFINE=20(scm_transpose_array,=20= "transpose-array",=201,=200,=201,=0A=20=09=09r->ubnd=20=3D=20s->ubnd;=0A=20= =09=20=20=20=20=20=20if=20(r->lbnd=20<=20s->lbnd)=0A=20=09=09{=0A-=09=09=20= =20SCM_I_ARRAY_BASE=20(res)=20+=3D=20(s->lbnd=20-=20r->lbnd)=20*=20= r->inc;=0A+=09=09=20=20SCM_I_ARRAY_SET_BASE=20(res,=20SCM_I_ARRAY_BASE=20= (res)=20+=20(s->lbnd=20-=20r->lbnd)=20*=20r->inc);=0A=20=09=09=20=20= r->lbnd=20=3D=20s->lbnd;=0A=20=09=09}=0A=20=09=20=20=20=20=20=20r->inc=20= +=3D=20s->inc;=0A@@=20-596,8=20+601,8=20@@=20SCM_DEFINE=20= (scm_array_contents,=20"array-contents",=201,=201,=200,=0A=20=20=20=20=20= =20=20=20=20=20=20SCM=20sra=20=3D=20scm_i_make_array=20(1);=0A=20=20=20=20= =20=20=20=20=20=20=20SCM_I_ARRAY_DIMS=20(sra)->lbnd=20=3D=200;=0A=20=20=20= =20=20=20=20=20=20=20=20SCM_I_ARRAY_DIMS=20(sra)->ubnd=20=3D=20len=20-=20= 1;=0A-=20=20=20=20=20=20=20=20=20=20SCM_I_ARRAY_V=20(sra)=20=3D=20v;=0A-=20= =20=20=20=20=20=20=20=20=20SCM_I_ARRAY_BASE=20(sra)=20=3D=20= SCM_I_ARRAY_BASE=20(ra);=0A+=20=20=20=20=20=20=20=20=20=20= SCM_I_ARRAY_SET_V=20(sra,=20v);=0A+=20=20=20=20=20=20=20=20=20=20= SCM_I_ARRAY_SET_BASE=20(sra,=20SCM_I_ARRAY_BASE=20(ra));=0A=20=20=20=20=20= =20=20=20=20=20=20SCM_I_ARRAY_DIMS=20(sra)->inc=20=3D=20(ndim=20?=20= SCM_I_ARRAY_DIMS=20(ra)[ndim=20-=201].inc=20:=201);=0A=20=20=20=20=20=20=20= =20=20=20=20return=20sra;=0A=20=20=20=20=20=20=20=20=20}=0A@@=20-760,7=20= +765,7=20@@=20scm_i_print_array=20(SCM=20array,=20SCM=20port,=20= scm_print_state=20*pstate)=0A=20=20=20=20=20scm_intprint=20(h.ndims,=20= 10,=20port);=0A=20=20=20if=20(h.element_type=20!=3D=20= SCM_ARRAY_ELEMENT_TYPE_SCM)=0A=20=20=20=20=20scm_write=20= (scm_array_handle_element_type=20(&h),=20port);=0A-=0A+=0A=20=20=20for=20= (i=20=3D=200;=20i=20<=20h.ndims;=20i++)=0A=20=20=20=20=20{=0A=20=20=20=20= =20=20=20if=20(h.dims[i].lbnd=20!=3D=200)=0Adiff=20--git=20= a/libguile/arrays.h=20b/libguile/arrays.h=0Aindex=206045ab6..5f40597=20= 100644=0A---=20a/libguile/arrays.h=0A+++=20b/libguile/arrays.h=0A@@=20= -54,23=20+54,18=20@@=20SCM_API=20SCM=20scm_list_to_typed_array=20(SCM=20= type,=20SCM=20ndim,=20SCM=20lst);=0A=0A=20/*=20internal.=20*/=0A=0A= -typedef=20struct=20scm_i_t_array=0A-{=0A-=20=20SCM=20v;=20=20/*=20the=20= contents=20of=20the=20array,=20e.g.,=20a=20vector=20or=20uniform=20= vector.=20=20*/=0A-=20=20unsigned=20long=20base;=0A-}=20scm_i_t_array;=0A= -=0A=20#define=20SCM_I_ARRAY_FLAG_CONTIGUOUS=20(1=20<<=200)=0A=0A=20= #define=20SCM_I_ARRAYP(a)=09=20=20=20=20SCM_TYP16_PREDICATE=20= (scm_tc7_array,=20a)=0A=20#define=20SCM_I_ARRAY_NDIM(x)=20=20((size_t)=20= (SCM_CELL_WORD_0=20(x)>>17))=0A=20#define=20SCM_I_ARRAY_CONTP(x)=20= (SCM_CELL_WORD_0=20(x)=20&=20(SCM_I_ARRAY_FLAG_CONTIGUOUS=20<<=2016))=0A=0A= -#define=20SCM_I_ARRAY_MEM(a)=20=20((scm_i_t_array=20*)=20= SCM_CELL_WORD_1=20(a))=0A-#define=20SCM_I_ARRAY_V(a)=20=20=20=20= (SCM_I_ARRAY_MEM=20(a)->v)=0A-#define=20SCM_I_ARRAY_BASE(a)=20= (SCM_I_ARRAY_MEM=20(a)->base)=0A-#define=20SCM_I_ARRAY_DIMS(a)=20\=0A-=20= =20((scm_t_array_dim=20*)((char=20*)=20SCM_I_ARRAY_MEM=20(a)=20+=20= sizeof=20(scm_i_t_array)))=0A+#define=20SCM_I_ARRAY_V(a)=20=20=20=20= SCM_CELL_OBJECT_1=20(a)=0A+#define=20SCM_I_ARRAY_BASE(a)=20((size_t)=20= SCM_CELL_WORD_2=20(a))=0A+#define=20SCM_I_ARRAY_DIMS(a)=20= ((scm_t_array_dim=20*)=20SCM_CELL_OBJECT_LOC=20(a,=203))=0A+=0A+#define=20= SCM_I_ARRAY_SET_V(a,=20v)=20=20=20=20=20=20=20SCM_SET_CELL_OBJECT_1(a,=20= v)=0A+#define=20SCM_I_ARRAY_SET_BASE(a,=20base)=20SCM_SET_CELL_WORD_2(a,=20= base)=0A=0A=20SCM_INTERNAL=20SCM=20scm_i_make_array=20(int=20ndim);=0A=20= SCM_INTERNAL=20int=20scm_i_print_array=20(SCM=20array,=20SCM=20port,=20= scm_print_state=20*pstate);=0Adiff=20--git=20a/libguile/deprecated.h=20= b/libguile/deprecated.h=0Aindex=20ae1fb04..d642b79=20100644=0A---=20= a/libguile/deprecated.h=0A+++=20b/libguile/deprecated.h=0A@@=20-129,7=20= +129,6=20@@=20SCM_DEPRECATED=20SCM=20scm_internal_dynamic_wind=20= (scm_t_guard=20before,=0A=20#define=20scm_substring_move_right_x=20= scm_substring_move_right_x__GONE__REPLACE_WITH__scm_substring_move_x=0A=20= #define=20scm_vtable_index_printer=20= scm_vtable_index_printer__GONE__REPLACE_WITH__scm_vtable_index_instance_pr= inter=0A=20#define=20scm_vtable_index_vtable=20= scm_vtable_index_vtable__GONE__REPLACE_WITH__scm_vtable_index_self=0A= -typedef=20scm_i_t_array=20= scm_i_t_array__GONE__REPLACE_WITH__scm_t_array;=0A=0A=20#ifndef=20= BUILDING_LIBGUILE=0A=20#define=20SCM_ASYNC_TICK=20=20= SCM_ASYNC_TICK__GONE__REPLACE_WITH__scm_async_tick=0A--=0A1.7.9.5=0A= --Apple-Mail=_8491D407-661D-4536-8BF8-EF74D53DE513 Content-Disposition: attachment; filename=0003-Intern-general-arrays.patch Content-Type: application/octet-stream; name="0003-Intern-general-arrays.patch" Content-Transfer-Encoding: quoted-printable =46rom=20a8fbee42e09c65e0965ffce63808a2c11f580739=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Daniel=20Llorens=20=0A= Date:=20Wed,=2017=20Sep=202014=2007:28:25=20+0200=0ASubject:=20[PATCH=20= 3/3]=20Intern=20general=20arrays=0A=0A*=20module/system/vm/assembler.scm=20= (intern-constant,=20link-data):=20handle=0A=20=20the=20array=20case.=0A= ---=0A=20module/system/vm/assembler.scm=20|=20=20=2033=20= ++++++++++++++++++++++++++++++---=0A=201=20file=20changed,=2030=20= insertions(+),=203=20deletions(-)=0A=0Adiff=20--git=20= a/module/system/vm/assembler.scm=20b/module/system/vm/assembler.scm=0A= index=20e944e68..cf8bbdd=20100644=0A---=20= a/module/system/vm/assembler.scm=0A+++=20= b/module/system/vm/assembler.scm=0A@@=20-900,14=20+900,15=20@@=20table,=20= its=20existing=20label=20is=20used=20directly."=0A=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20,(recur=20= (make-uniform-vector-backing-store=0A=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (uniform-array->bytevector=20obj)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= width))))))=0A+=20=20=20=20=20((array?=20obj)=0A+=20=20=20=20=20=20= `((static-patch!=20,label=201=20,(recur=20(shared-array-root=20obj)))))=0A= =20=20=20=20=20=20(else=0A=20=20=20=20=20=20=20(error=20"don't=20know=20= how=20to=20intern"=20obj))))=0A=20=20=20(cond=0A=20=20=20=20((immediate?=20= obj)=20#f)=0A=20=20=20=20((vhash-assoc=20obj=20(asm-constants=20asm))=20= =3D>=20cdr)=0A=20=20=20=20(else=0A-=20=20=20=20;;=20Note=20that=20= calling=20intern=20may=20mutate=20asm-constants=20and=0A-=20=20=20=20;;=20= asm-constant-inits.=0A+=20=20=20=20;;=20Note=20that=20calling=20intern=20= may=20mutate=20asm-constants=20and=20asm-inits.=0A=20=20=20=20=20(let*=20= ((label=20(gensym=20"constant"))=0A=20=20=20=20=20=20=20=20=20=20=20=20= (inits=20(intern=20obj=20label)))=0A=20=20=20=20=20=20=20= (set-asm-constants!=20asm=20(vhash-cons=20obj=20label=20(asm-constants=20= asm)))=0A@@=20-1218,6=20+1219,7=20@@=20should=20be=20.data=20or=20= .rodata),=20and=20return=20the=20resulting=20linker=20object.=0A=20=20=20= =20=20(+=20address=0A=20=20=20=20=20=20=20=20(modulo=20(-=20alignment=20= (modulo=20address=20alignment))=20alignment)))=0A=0A+=20=20;;=20= redefined=20in=20libguile/tags.h=0A=20=20=20(define=20tc7-vector=2013)=0A= =20=20=20(define=20stringbuf-shared-flag=20#x100)=0A=20=20=20(define=20= stringbuf-wide-flag=20#x400)=0A@@=20-1230,6=20+1232,7=20@@=20should=20be=20= .data=20or=20.rodata),=20and=20return=20the=20resulting=20linker=20= object.=0A=20=20=20(define=20tc7-program=2069)=0A=20=20=20(define=20= tc7-bytevector=2077)=0A=20=20=20(define=20tc7-bitvector=2095)=0A+=20=20= (define=20tc7-array=2093)=0A=0A=20=20=20(let=20((word-size=20= (asm-word-size=20asm))=0A=20=20=20=20=20=20=20=20=20(endianness=20= (asm-endianness=20asm)))=0A@@=20-1254,6=20+1257,8=20@@=20should=20be=20= .data=20or=20.rodata),=20and=20return=20the=20resulting=20linker=20= object.=0A=20=20=20=20=20=20=20=20=20(*=204=20word-size))=0A=20=20=20=20=20= =20=20=20((uniform-vector-backing-store?=20x)=0A=20=20=20=20=20=20=20=20=20= (bytevector-length=20(uniform-vector-backing-store-bytes=20x)))=0A+=20=20= =20=20=20=20=20((array?=20x)=0A+=20=20=20=20=20=20=20=20(*=20word-size=20= (+=203=20(*=203=20(array-rank=20x)))))=0A=20=20=20=20=20=20=20=20(else=0A= =20=20=20=20=20=20=20=20=20word-size)))=0A=0A@@=20-1310,7=20+1315,7=20@@=20= should=20be=20.data=20or=20.rodata),=20and=20return=20the=20resulting=20= linker=20object.=0A=20=20=20=20=20=20=20=20=20(write-immediate=20asm=20= buf=20pos=20#f))=0A=0A=20=20=20=20=20=20=20=20((string?=20obj)=0A-=20=20=20= =20=20=20=20=20(let=20((tag=20(logior=20tc7-ro-string=20(ash=20= (string-length=20obj)=208))))=0A+=20=20=20=20=20=20=20=20(let=20((tag=20= (logior=20tc7-ro-string=20(ash=20(string-length=20obj)=208))))=20;=20= FIXME:=20unused?=0A=20=20=20=20=20=20=20=20=20=20=20(case=20word-size=0A=20= =20=20=20=20=20=20=20=20=20=20=20=20((4)=0A=20=20=20=20=20=20=20=20=20=20= =20=20=20=20(bytevector-u32-set!=20buf=20pos=20tc7-ro-string=20= endianness)=0A@@=20-1385,6=20+1390,28=20@@=20should=20be=20.data=20or=20= .rodata),=20and=20return=20the=20resulting=20linker=20object.=0A=20=20=20= =20=20=20=20=20=20=20=20=20=20;;=20Need=20to=20swap=20units=20of=20= element-size=20bytes=0A=20=20=20=20=20=20=20=20=20=20=20=20=20(error=20= "FIXME:=20Implement=20byte=20order=20swap"))))=0A=0A+=20=20=20=20=20=20=20= ((array?=20obj)=0A+=20=20=20=20=20=20=20=20(let=20((tag=20(logior=20= tc7-array=20(ash=20(array-rank=20obj)=2017)))=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20(bv-set!=20(case=20word-size=0A+=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20((4)=20= bytevector-u32-set!)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20((8)=20bytevector-u64-set!)=0A+=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(else=20(error=20= "bad=20word=20size"))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (bvs-set!=20(case=20word-size=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20((4)=20bytevector-s32-set!)=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= ((8)=20bytevector-s64-set!)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20(else=20(error=20"bad=20word=20= size")))))=0A+=20=20=20=20=20=20=20=20=20=20(bv-set!=20buf=20pos=20tag=20= endianness)=0A+=20=20=20=20=20=20=20=20=20=20(write-immediate=20asm=20= buf=20(+=20pos=20word-size)=20#f)=20;=20root=20vector=20(fixed=20later)=0A= +=20=20=20=20=20=20=20=20=20=20(bv-set!=20buf=20(+=20pos=20(*=20= word-size=202))=200=20endianness)=20;=20base=0A+=20=20=20=20=20=20=20=20=20= =20(let=20lp=20((pos=20(+=20pos=20(*=20word-size=203)))=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20(bounds=20(array-shape=20obj))=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(incs=20= (shared-array-increments=20obj)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20= (when=20(pair?=20bounds)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20= (bvs-set!=20buf=20pos=20(first=20(first=20bounds))=20endianness)=0A+=20=20= =20=20=20=20=20=20=20=20=20=20=20=20(bvs-set!=20buf=20(+=20pos=20= word-size)=20(second=20(first=20bounds))=20endianness)=0A+=20=20=20=20=20= =20=20=20=20=20=20=20=20=20(bvs-set!=20buf=20(+=20pos=20(*=20word-size=20= 2))=20(first=20incs)=20endianness)=0A+=20=20=20=20=20=20=20=20=20=20=20=20= =20=20(lp=20(+=20pos=20(*=203=20word-size))=20(cdr=20bounds)=20(cdr=20= incs))))))=0A+=0A=20=20=20=20=20=20=20=20(else=0A=20=20=20=20=20=20=20=20= =20(error=20"unrecognized=20object"=20obj))))=0A=0A--=0A1.7.9.5=0A= --Apple-Mail=_8491D407-661D-4536-8BF8-EF74D53DE513--