Please also attach the wasm file, as otherwise when I try to run it it
errors on not finding that.

On Thu, Nov 14, 2019 at 12:51 AM Sampo Syrjänen <[email protected]>
wrote:

> I built with -g1. lib.js is attached as .txt file. The output from the
> test is
>
> node test.js
> C:\work\closure\lib.js:28
>     throw b;
>     ^
>
> LinkError: WebAssembly.Instance(): Import #0 module="e" function="f"
> error: function import requires a callable
>     at Object.a.addFunction (C:\work\closure\lib.js:629:10)
>     at Timeout._onTimeout (C:\work\closure\test.js:6:29)
> [90m    at listOnTimeout (internal/timers.js:531:17) [39m
> [90m    at processTimers (internal/timers.js:475:7) [39m
> gmake: *** [Makefile:9: test] Error 7
>
> On Thursday, November 14, 2019 at 12:22:30 AM UTC+2, Alon Zakai wrote:
>>
>> The testcase works for me on 1.39.2, strange. But perhaps there is
>> something nondeterministic in how closure works that ends up with different
>> variable names, hitting or not hitting the bug.
>>
>> Perhaps build it with -g1 (to not minify whitespace) and see what the bad
>> value is there? Please attach a build with that if you can.
>>
>> On Tue, Nov 12, 2019 at 6:16 AM Sampo Syrjänen <[email protected]>
>> wrote:
>>
>>> emsdk version is 1.39.2
>>>
>>> On Tuesday, November 12, 2019 at 4:11:45 PM UTC+2, Sampo Syrjänen wrote:
>>>>
>>>> Hello! I have trouble getting addFunction to work with closure compiler
>>>> enabled. There's a minimal project here to reproduce the issue:
>>>>
>>>> // lib.c
>>>> typedef int (*callback_t)(int a);
>>>>
>>>> int func(callback_t callback, int a)
>>>> {
>>>>     return callback(a);
>>>> }
>>>>
>>>> // test.js
>>>> const lib = require("./lib.js");
>>>> setTimeout(() => {
>>>>     const callback = (a) => {
>>>>         return 40 + a;
>>>>     };
>>>>     const callbackPtr = lib.addFunction(callback, "ii");
>>>>     console.log(lib._func(callbackPtr, 2));
>>>> }, 100);
>>>>
>>>> # Makefile
>>>> lib.js: lib.c
>>>> emcc -s EXPORTED_FUNCTIONS="['_func']" -s
>>>> EXTRA_EXPORTED_RUNTIME_METHODS="['addFunction']" -s
>>>> RESERVED_FUNCTION_POINTERS=1 --closure 1 -o $@ $^
>>>>
>>>> .PHONY: clean
>>>> clean:
>>>> $(RM) lib.js lib.wasm
>>>>
>>>> test: lib.js
>>>> node test.js
>>>>
>>>>
>>>> With make test I get this:
>>>>
>>>> node test.js
>>>> C:\work\closure\lib.js:28
>>>>     throw b;
>>>>     ^
>>>>
>>>> LinkError: WebAssembly.Instance(): Import #0 module="e" function="f"
>>>> error: function import requires a callable
>>>>     at Object.a.addFunction (C:\work\closure\lib.js:629:10)
>>>>     at Timeout._onTimeout (C:\work\closure\test.js:6:29)
>>>> [90m    at listOnTimeout (internal/timers.js:531:17) [39m
>>>> [90m    at processTimers (internal/timers.js:475:7) [39m
>>>> gmake: *** [Makefile:9: test] Error 7
>>>>
>>>> What am I missing? How should I compile to make addFunction work?
>>>>
>>> --
>>> 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].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/emscripten-discuss/7f93bf40-3bfe-42da-a01c-439f03c0a1b3%40googlegroups.com
>>> <https://groups.google.com/d/msgid/emscripten-discuss/7f93bf40-3bfe-42da-a01c-439f03c0a1b3%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> 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].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/emscripten-discuss/88702128-1e83-4223-9fbd-a56324fd30af%40googlegroups.com
> <https://groups.google.com/d/msgid/emscripten-discuss/88702128-1e83-4223-9fbd-a56324fd30af%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpSn7nkSJy72%3DkxOXdro9FnKOKHaAH4XWAg4enyXCL5XqQ%40mail.gmail.com.

Reply via email to