develooper Front page | perl.perl6.internals | Postings from February 2006

Re: [perl #18189] Test failures with 'long long' on i386/linux

Thread Previous | Thread Next
From:
Leopold Toetsch
Date:
February 16, 2006 13:41
Subject:
Re: [perl #18189] Test failures with 'long long' on i386/linux
Message ID:
c6944289d57835759bec30b33f64773b@toetsch.at

On Feb 16, 2006, at 19:24, Andy Dougherty wrote:

>> sizeof(opcode_t) != sizeof(void*) is for sure broken.
>
> Well, it used to work, but that was a long time ago.  Configure 
> actually
> tests for this case and still claims it will work; perhaps that test
> should be changed to emit a much more dire message, or even die (unless
> overridden).

It's not really easy to state, which type combinations are valid, 
because the combinations depend on other config options. Given that 
current type abuse in parrot were fixed, we'd have these constraints:

sizeof(opcode_t) >= sizeof(INTVAL)    [1]
sizeof(void *)   >= sizeof(INTVAL)    [2]

[1] We are storing INTVAL constants in the opcode stream directly. 
Moving INTVAL constants into the constant table or decode INTVAL 
constants with more than one opcode would fix that

[2] The direct threaded run core (CGP) is using labels as values, which 
are 'void *' according to 'info gcc'. The prederefed opcode stream also 
contains INTVAL constants.
If the C compiler doesn't provide this feature there is still the 
prederefed switched runcore where a mix of (opcode_t, INTVAL, and 
void*) is in the opcode stream, but that could be a max-sized type 
probably.

I hope that makes some sense,
leo


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About