[webkit-reviews] review granted: [Bug 120260] Add support for Promises : [Attachment 209570] Patch
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Sat Aug 24 23:16:46 PDT 2013
Darin Adler <darin at apple.com> has granted Sam Weinig <sam at webkit.org>'s request
for review:
Bug 120260: Add support for Promises
https://bugs.webkit.org/show_bug.cgi?id=120260
Attachment 209570: Patch
https://bugs.webkit.org/attachment.cgi?id=209570&action=review
------- Additional Comments from Darin Adler <darin at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=209570&action=review
A lot of places where we are using pointers we could use references instead.
Might be worth doing that in the new code. Even thisObject seems like it should
be a reference.
Looks really great. I am going to say review+; hope I looked closely enough.
> Source/JavaScriptCore/ChangeLog:10
> + in preparation for the Promises eventually being defined move to
ECMAScript.
"defined move in"?
> Source/JavaScriptCore/ChangeLog:77
> + (JSC::JSPromiseTaskContext::create):
> + (JSC::JSPromiseTaskContext::JSPromiseTaskContext):
> + (JSC::JSPromiseTaskContext::~JSPromiseTaskContext):
> + (JSC::JSPromise::create):
> + (JSC::JSPromise::createStructure):
> + (JSC::JSPromise::JSPromise):
> + (JSC::JSPromise::finishCreation):
> + (JSC::JSPromise::destroy):
> + (JSC::JSPromise::visitChildren):
> + (JSC::JSPromise::setResolver):
> + (JSC::JSPromise::resolver):
> + (JSC::JSPromise::setResult):
> + (JSC::JSPromise::result):
> + (JSC::JSPromise::setState):
> + (JSC::JSPromise::state):
> + (JSC::JSPromise::appendCallbacks):
> + (JSC::JSPromise::queueTaskToProcessFulfillCallbacks):
> + (JSC::JSPromise::queueTaskToProcessRejectCallbacks):
> + (JSC::JSPromise::processFulfillCallbacksForTask):
> + (JSC::JSPromise::processRejectCallbacksForTask):
> + (JSC::JSPromise::processFulfillCallbacksWithValue):
> + (JSC::JSPromise::processRejectCallbacksWithValue):
I think you can omit the function lists in new files.
> Source/JavaScriptCore/runtime/JSPromise.cpp:37
> +struct JSPromiseTaskContext : public TaskContext {
I understand the appeal of simplicity in making this just a struct, but
wouldn't it be better if the constructor was private, and maybe the data
member, too?
> Source/JavaScriptCore/runtime/JSPromise.cpp:50
> + virtual ~JSPromiseTaskContext()
> + {
> + }
I don’t think this is necessary.
> Source/JavaScriptCore/runtime/JSPromiseCallback.cpp:75
> + JSPromiseCallback* promiseCallback =
jsCast<JSPromiseCallback*>(exec->callee());
How about using a reference instead?
> Source/JavaScriptCore/runtime/JSPromiseCallback.cpp:76
> + JSPromiseResolver* resolver = promiseCallback->m_resolver.get();
How about using a reference instead?
> Source/JavaScriptCore/runtime/JSPromiseCallback.cpp:94
> + switch (promiseCallback->m_algorithm) {
> + case JSPromiseCallback::Fulfill:
> + resolver->fulfill(exec, value, true);
> + break;
> +
> + case JSPromiseCallback::Resolve:
> + resolver->resolve(exec, value, true);
> + break;
> +
> + case JSPromiseCallback::Reject:
> + resolver->reject(exec, value, true);
> + break;
> + }
These “true” (for async) have the classic boolean true problem.
> Source/WebCore/bindings/js/JSDOMGlobalObjectTask.cpp:66
> + if (context->isDocument()) {
> + JSMainThreadExecState currentState(exec);
> + m_functionPtr(exec, m_taskContext.get());
> + } else
> + m_functionPtr(exec, m_taskContext.get());
Needs a why comment.
More information about the webkit-reviews
mailing list