> On Jul 7, 2015, at 3:36 AM, Yusuke SUZUKI <utatane....@gmail.com> wrote:
> 
> On Tue, Jul 7, 2015 at 8:54 AM, Geoffrey Garen <gga...@apple.com 
> <mailto:gga...@apple.com>> wrote:
> I’m suggesting a default runloop for non-web content.
> 
> I haven’t read through the details of integrating with the web content 
> definition of micro task.
> 
> Geoff
> 
> OK. Reinventing runloop each time is costly.
> On the other hand, sometimes, users would like to use the other runloop such 
> as libuv.
> So what do you think about providing the both.
> 
> 1. Provide default runloop in JSC
> 2. Provide the way to register callback for enqueueJob. If it's provided, (1) 
> is disabled for this VM.
> 
> (1) would become the following (quick proposal)
> 
> void JSContextRunMicrotasks(JSContextRef, unsigned someFlags);
> bool JSContextIsMicrotasksEmpty(JSContextRef);
> 
> In this case, if we would like to close the VM,
> 
> bool executed = false;
> do {
>     executed = false;
>     for each context belongging to the given VM {
>         if (JSContxtIsMicrotasksEmpty(context)) {
>             executed = true;
>             JSContextRunMicrotasks(context, ...);
>         }
>     }
> } while (executed);
> Close(VM);

I think that Goeff's suggest would be that microtasks would normally run 
without the client having to make any special calls at all to account for them. 
Possibly this may imply a requirement of running a CFRunLoop on the relevant 
thread.

I also think your API doesn't account for nesting very well - it requires the 
client app to know the VM nesting level. It would be better if that was tracked 
and micro tasks could run on exiting the outermost VM and/or 

> 
> (2) would become the original proposal.
>  
> 
>> On Jul 6, 2015, at 4:44 PM, Maciej Stachowiak <m...@apple.com 
>> <mailto:m...@apple.com>> wrote:
>> 
>> 
>> Should JS be defining an event loop abstraction that WebCore then uses? That 
>> would be weird, because the required behavior of the even loop in web 
>> content is chock full of issues that are not at all related to JavaScript. 
>> JSC doesn't even know enough to run microtasks at all the right times (from 
>> reading the spec it seems that way, at least) for the Web case. Or are you 
>> saying it would have a fallback runloop for non-Web contents?
>> 
>> Regards,
>> Maciej
>> 
>>> On Jul 6, 2015, at 3:24 PM, Geoffrey Garen <gga...@apple.com 
>>> <mailto:gga...@apple.com>> wrote:
>>> 
>>> I think it would be better for JavaScriptCore to handle micro tasks 
>>> natively.
>>> 
>>> It’s not so great for each client to need to reinvent the microtask runloop 
>>> abstraction.
>>> 
>>> Geoff
>>> 
>>>> On Jul 6, 2015, at 10:05 AM, Yusuke SUZUKI <utatane....@gmail.com 
>>>> <mailto:utatane....@gmail.com>> wrote:
>>>> 
>>>> Hi WebKittens,
>>>> 
>>>> I've landed the update of the ES6 Promise implementation.
>>>> Through this work, I've experimentally added the internal private 
>>>> function, @enqueueJob(JS function, JS array for arguments).
>>>> This is corresponding to the ES6 spec EnqueueJob[1].
>>>> 
>>>> This EnqueueJob handler is now tightly integrated with WebCore's microtask 
>>>> infrastructure. So in JSC framework side, we cannot use this function.
>>>> As a result, current JSC framework disables Promise because there's no 
>>>> event loop abstraction.
>>>> 
>>>> So I propose the API configuring euqueueJob handler into JSC VM (That 
>>>> corresponds to the Realm in ECMA spec).
>>>> 
>>>> Like,
>>>> 
>>>> void JSContextGroupSetEnqueueJobCallback(JSContextGroupRef, 
>>>> JSEnqueueJobCallback, void* callbackData);
>>>> 
>>>> What do you think about this?
>>>> 
>>>> [1]: http://ecma-international.org/ecma-262/6.0/#sec-enqueuejob 
>>>> <http://ecma-international.org/ecma-262/6.0/#sec-enqueuejob>
>>>> 
>>>> Best Regards,
>>>> Yusuke Suzuki
>>>> _______________________________________________
>>>> webkit-dev mailing list
>>>> webkit-dev@lists.webkit.org <mailto:webkit-dev@lists.webkit.org>
>>>> https://lists.webkit.org/mailman/listinfo/webkit-dev 
>>>> <https://lists.webkit.org/mailman/listinfo/webkit-dev>
>>> 
>>> _______________________________________________
>>> webkit-dev mailing list
>>> webkit-dev@lists.webkit.org <mailto:webkit-dev@lists.webkit.org>
>>> https://lists.webkit.org/mailman/listinfo/webkit-dev 
>>> <https://lists.webkit.org/mailman/listinfo/webkit-dev>
>> 
> 
> 

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to