[m-dev.] argument packing
Julien Fischer
jfischer at opturion.com
Wed May 16 12:14:18 AEST 2018
On Wed, 16 May 2018, Julien Fischer wrote:
> On Tue, 15 May 2018, Zoltan Somogyi wrote:
>
>> I committed the diff that enabled the packing of sub-word-sized
>> integers and dummies in heap cells about a week ago. Have you
>> guys tried out those features (after turning them on, since they are
>> OFF by default)?
>>
>> The reason I ask is that traditionally, we computed the offset of each
>> argument into the memory cell when we generated code for a unification.
>> Since repeating this work for *every* unification is wasted work, that
>> diff
>> added code to compute these offsets just once, when the representation
>> of each function symbol is decided, but it also left the old code in
>> place,
>> with assertions checking that the new method yields the exact same offset
>> as the old method. I would like to delete the code that calculates the
>> offsets
>> the old way, along with the assertions, before I start work on my next
>> diff involving argument packing. However, I would not want to take
>> that step until those assertions have passed your toughest tests.
>
> The first of those tougher tests would be compiling the standard
> library in the csharp grade with the new optimizations turned on:
And similarly for the Java grade:
Making Java class files
Mercury/javas/jmercury/erlang_rtti_implementation.java:808: error:
incompatible types: int cannot be converted to DuArgLocn
erlang_rtti_implementation__field_locns_evaluated_pseudo_type_info_thunk_0_2[0]
= new jmercury.runtime.DuArgLocn[] {-1,
^
Mercury/javas/jmercury/erlang_rtti_implementation.java:809: error:
incompatible types: int cannot be converted to DuArgLocn
0,
^
Mercury/javas/jmercury/erlang_rtti_implementation.java:810: error:
incompatible types: int cannot be converted to DuArgLocn
-10};
^
Mercury/javas/jmercury/erlang_rtti_implementation.java:808: error:
incompatible types: DuArgLocn[] cannot be converted to DuArgLocn
erlang_rtti_implementation__field_locns_evaluated_pseudo_type_info_thunk_0_2[0]
= new jmercury.runtime.DuArgLocn[] {-1,
^
Mercury/javas/jmercury/erlang_rtti_implementation.java:1002: error:
incompatible types: int cannot be converted to DuArgLocn
erlang_rtti_implementation__field_locns_maybe_pseudo_type_info_0_0[0]
= new jmercury.runtime.DuArgLocn[] {-1,
^
... error log truncated, see `mer_std.err' for the complete log.
gmake[1]: *** [libmer_std] Error 1
gmake[1]: Leaving directory
`/mnt/opturion/jfischer/mercury-6.git/library'
gmake: *** [library] Error 2
Julien.
More information about the developers
mailing list