[M3devel] TextLiteral.MaxBytes -- use LONGINT or Target.Int more?

Tony Hosking hosking at cs.purdue.edu
Tue Sep 3 22:12:32 CEST 2013


On Sep 3, 2013, at 1:50 PM, Jay K <jay.krell at cornell.edu> wrote:

> I think it isn't just TextLiteral.MaxBytes.
> 
> 
> How do I declare an unbouned-ly sized array?

Can’t do in M3.  It’s not type safe.

> At the end of a record?
> Doesn't matter?
> 
> 
> For TextLiteral.MaxBytes, are you ok then with a 512MB limit, even for 64bit?

Can you really imagine typing a literal that is 512MB in length?

> 
> 
>  - Jay
> 
> 
> From: hosking at cs.purdue.edu
> Date: Tue, 3 Sep 2013 13:00:08 -0400
> To: jay.krell at cornell.edu
> CC: m3devel at elegosoft.com
> Subject: Re: [M3devel] TextLiteral.MaxBytes -- use LONGINT or Target.Int	more?
> 
> Yes, I want to avoid use of LONGINT in the compiler proper.
> If you want to talk about target sized integer values in the front-end then yes, Target.Int is what you want, I suppose.
> But I still don’t understand the precise use-case that you are proposing.
> In the case of TextLiteral.MaxBytes why would 512 Mb ever be too small?
> I cannot imaging a text literal that big, ever.
> 
> On Sep 3, 2013, at 12:55 PM, Jay K <jay.krell at cornell.edu> wrote:
> 
> How do you suggest 32bit code deal with file sizes? And record/array offsets/sizes for 64bit targets?
> double? That offers I think 53 bits, which is pretty good, but pesky floating point..
> A library without infix notation?
> C and C++ have been using __int64 and long long for this for going on 20 years.
> And C++ has infix notation for arbitrary types.
> 
> 
> I guess I will plumb Target.Int through?
> I've started this before but it got tedious.
> 
> 
>  - Jay
> 
> CC: m3devel at elegosoft.com
> From: antony.hosking at gmail.com
> Subject: Re: [M3devel] TextLiteral.MaxBytes -- use LONGINT or Target.Int more?
> Date: Tue, 3 Sep 2013 08:11:32 -0400
> To: jay.krell at cornell.edu
> 
> Don't plumb LONGINT throughout.  I still consider it an abomination.
> 
> Sent from my iPad
> 
> On Sep 3, 2013, at 1:53 AM, Jay K <jay.krell at cornell.edu> wrote:
> 
> I've complained about this before.
> 
> 
> The frontend keeps track of things in bits in INTEGER.
> Therefore TextLiteral.MaxBytes is around 512MB.
> 
> 
> We could raise it for 64bit targets, but the 32bit cross compile to 64bits would fail.
> 
> 
> Fixing this mostly but not entirely would be to plumb through LONGINT
> "everywhere" instead of INTEGER.
> We would still lose the sign bit and bits vs. bytes would lose us another 3 bits.
> So we'd have a 60 bit limit instead of a 64bit limit.
> 
> 
> Fixing it even more would require Target.Int.
> 
> 
> Thoughts?
> 
> 
> Is LONGINT safe to use now throughout cm3/m3front/m3middle/m3back?
> Do we still require bootstrapping from LONGINT-less compilers?
> 
> 
> Any lingering doubts as to its syntax and meaning?
> I still think it should be named INT64.
> Because in the future I want INT128 and I don't want LONGINT to grow in size.
> 
> 
> Would it be considered adequate as a replacement for Target.Int?
> 
> 
> If instead I plumb through Target.Int, any complaints?
> Target.Int has the following advantages:
>   When we need INT128 in the future, it is a very very very simple and small change.
>    I already extended Target.Int from 64 bits to 72 bits.
>   It works with old frontends.
> 
> 
> Target.Int has the following disadvantages:
>   no operator overloading so usage is cumbersome  
>   slower 
>   I still don't fully understand it, e.g. division 
> 
> 
> 
>  - Jay
> 
> 
> 
> Antony Hosking | Associate Professor | Computer Science | Purdue University
> 305 N. University Street | West Lafayette | IN 47907 | USA
> Mobile +1 765 427 5484

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20130903/8629f095/attachment-0002.html>


More information about the M3devel mailing list