Can we throw a compiler error on makeGetValue of i64 that tells to use a pair of 32-bit values? It looks odd that currently makeGetValue of i64 silently does a makeGetValue of i32.
2014-12-02 14:22 GMT-08:00 Alon Zakai <[email protected]>: > I suspect we just never implemented i64 support for makeGetValue. But it > could only work on the range of i64s representable in doubles anyhow, so > this is probably not that good an idea. If you can treat i64s as pairs of > i32s, that would be better. > > - Alon > > > On Tue, Dec 2, 2014 at 4:20 AM, Pepijn Van Eeckhoudt < > [email protected]> wrote: > >> I'm generating code that contains pairs of macro calls of the form >> >> {{{ makeSetValue('ptr', '8', 'x', 'i64') }}} >> >> and >> >> x = {{{ makeGetValue('ptr', '8', 'i64') }}} >> >> >> The compiler converts this to >> >> (tempI64 = [x>>>0,(tempDouble=x,(+(Math_abs(tempDouble))) >= 1.0 ? >> (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), >> 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - >> +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : >> 0)],HEAP32[(((ptr)+(8))>>2)]=tempI64[0],HEAP32[(((ptr)+(12))>>2)]=tempI64[1]) >> >> and >> >> x = HEAP32[(((ptr)+(8))>>2)] >> >> respectively. >> >> The former is what I expected, the latter not quite. It seems that the >> generated code is not symmetrical for i64 values. Is this a bug, known >> limitation, missing feature, ...? Or am I using the makeGetValue macro >> incorrectly? >> >> Thanks, >> >> Pepijn >> >> -- >> You received this message because you are subscribed to the Google Groups >> "emscripten-discuss" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
