[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