D to ASM.js vs D to Dart (VM)
bearophile via Digitalmars-d
digitalmars-d at puremagic.com
Sun May 18 01:18:53 PDT 2014
Paulo Pinto:
> Am 18.05.2014 10:02, schrieb bearophile:
>> But in general isn't it more efficient to not generate bloat
>> instead of
>> generating it, detecting it, and removing it?
>>
>> Bye,
>> bearophile
>
> Which you can only do if the compiler can see the whole code.
>
> It doesn't work in binary libraries.
I think in this case avoiding part of the problem is better than
avoiding none of it :-) There are other similar situations where
avoiding the template bloat is useful. This generates two
instances of doubleIt in the binary:
T doubleIt(T)(T x) { return x * 2; }
void main() {
immutable r1 = doubleIt(10);
immutable r2 = doubleIt(cast(const int)10);
}
The asm, from DMD:
_D4temp15__T8doubleItTiZ8doubleItFNaNbNiNfiZi:
enter 4,0
add EAX,EAX
leave
ret
_D4temp16__T8doubleItTxiZ8doubleItFNaNbNiNfxiZxi:
enter 4,0
add EAX,EAX
leave
ret
Bye,
bearophile
More information about the Digitalmars-d
mailing list