Title: [206579] trunk/Source/WebCore
Revision
206579
Author
commit-qu...@webkit.org
Date
2016-09-29 05:48:16 -0700 (Thu, 29 Sep 2016)

Log Message

[Streams API] Improve ReadableStreamDefaultController.h/cpp
https://bugs.webkit.org/show_bug.cgi?id=160293

Patch by Romain Bellessort <romain.belless...@crf.canon.fr> on 2016-09-29
Reviewed by Youenn Fablet.

Various small improvements in ReadableStreamDefaultController code (helper methods and asserts).

No change in behaviour.

* bindings/js/ReadableStreamDefaultController.cpp:
(WebCore::ReadableStreamDefaultController::isControlledReadableStreamLocked): Added an assert and updated based
on new helper methods.
* bindings/js/ReadableStreamDefaultController.h:
(WebCore::ReadableStreamDefaultController::close): Updated based on new helper methods.
(WebCore::ReadableStreamDefaultController::error): Updated based on new helper methods.
(WebCore::ReadableStreamDefaultController::enqueue): Added an assert and updated based on new helper methods.
(WebCore::ReadableStreamDefaultController::jsController): New helper method.
(WebCore::ReadableStreamDefaultController::globalObject): Return reference instead of pointer.
(WebCore::ReadableStreamDefaultController::globalExec): New helper; return reference after performing an assert.
(WebCore::ReadableStreamDefaultController::error<String>): Added an assert and updated based on new helper methods.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (206578 => 206579)


--- trunk/Source/WebCore/ChangeLog	2016-09-29 10:28:14 UTC (rev 206578)
+++ trunk/Source/WebCore/ChangeLog	2016-09-29 12:48:16 UTC (rev 206579)
@@ -1,3 +1,26 @@
+2016-09-29  Romain Bellessort  <romain.belless...@crf.canon.fr>
+
+        [Streams API] Improve ReadableStreamDefaultController.h/cpp
+        https://bugs.webkit.org/show_bug.cgi?id=160293
+
+        Reviewed by Youenn Fablet.
+
+        Various small improvements in ReadableStreamDefaultController code (helper methods and asserts).
+
+        No change in behaviour.
+
+        * bindings/js/ReadableStreamDefaultController.cpp:
+        (WebCore::ReadableStreamDefaultController::isControlledReadableStreamLocked): Added an assert and updated based 
+        on new helper methods.
+        * bindings/js/ReadableStreamDefaultController.h:
+        (WebCore::ReadableStreamDefaultController::close): Updated based on new helper methods.
+        (WebCore::ReadableStreamDefaultController::error): Updated based on new helper methods.
+        (WebCore::ReadableStreamDefaultController::enqueue): Added an assert and updated based on new helper methods.
+        (WebCore::ReadableStreamDefaultController::jsController): New helper method.
+        (WebCore::ReadableStreamDefaultController::globalObject): Return reference instead of pointer.
+        (WebCore::ReadableStreamDefaultController::globalExec): New helper; return reference after performing an assert.
+        (WebCore::ReadableStreamDefaultController::error<String>): Added an assert and updated based on new helper methods.
+
 2016-09-29  Jon Davis  <j...@apple.com>
 
         Added Beacon API to the Feature Status page.

Modified: trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp (206578 => 206579)


--- trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp	2016-09-29 10:28:14 UTC (rev 206578)
+++ trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp	2016-09-29 12:48:16 UTC (rev 206579)
@@ -33,8 +33,6 @@
 
 #if ENABLE(READABLE_STREAM_API)
 
-#include "JSReadableStream.h"
-#include "JSReadableStreamSource.h"
 #include "WebCoreJSClientData.h"
 
 namespace WebCore {
@@ -69,17 +67,18 @@
 
 bool ReadableStreamDefaultController::isControlledReadableStreamLocked() const
 {
-    auto globalObject = this->globalObject();
-    JSC::VM& vm = globalObject->vm();
+    auto& globalObject = this->globalObject();
+    JSC::VM& vm = globalObject.vm();
     JSC::JSLockHolder lock(vm);
     auto scope = DECLARE_CATCH_SCOPE(vm);
-    auto& state = *globalObject->globalExec();
+    auto& state = globalExec();
 
     auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
     auto readableStream = m_jsController->get(&state, clientData.builtinNames().controlledReadableStreamPrivateName());
     ASSERT_UNUSED(scope, !scope.exception());
 
-    auto isLocked = globalObject->builtinInternalFunctions().readableStreamInternals().m_isReadableStreamLockedFunction.get();
+    auto* isLocked = globalObject.builtinInternalFunctions().readableStreamInternals().m_isReadableStreamLockedFunction.get();
+    ASSERT(isLocked);
 
     JSC::MarkedArgumentBuffer arguments;
     arguments.append(readableStream);

Modified: trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.h (206578 => 206579)


--- trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.h	2016-09-29 10:28:14 UTC (rev 206578)
+++ trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.h	2016-09-29 12:48:16 UTC (rev 206579)
@@ -52,33 +52,48 @@
     template<class ResolveResultType>
     void error(const ResolveResultType&);
 
-    void close() { invoke(*globalObject()->globalExec(), *m_jsController, "close", JSC::jsUndefined()); }
+    void close() { invoke(*globalObject().globalExec(), jsController(), "close", JSC::jsUndefined()); }
 
     bool isControlledReadableStreamLocked() const;
 
 private:
-    void error(JSC::ExecState& state, JSC::JSValue value) { invoke(state, *m_jsController, "error", value); }
-    void enqueue(JSC::ExecState& state, JSC::JSValue value) { invoke(state, *m_jsController, "enqueue", value); }
+    void error(JSC::ExecState& state, JSC::JSValue value) { invoke(state, jsController(), "error", value); }
+    void enqueue(JSC::ExecState& state, JSC::JSValue value) { invoke(state, jsController(), "enqueue", value); }
+    JSReadableStreamDefaultController& jsController() const;
 
-    JSDOMGlobalObject* globalObject() const;
+    JSDOMGlobalObject& globalObject() const;
+    JSC::ExecState& globalExec() const;
 
     // The owner of ReadableStreamDefaultController is responsible to keep uncollected the JSReadableStreamDefaultController.
     JSReadableStreamDefaultController* m_jsController { nullptr };
 };
 
-inline JSDOMGlobalObject* ReadableStreamDefaultController::globalObject() const
+inline JSReadableStreamDefaultController& ReadableStreamDefaultController::jsController() const
 {
     ASSERT(m_jsController);
-    return static_cast<JSDOMGlobalObject*>(m_jsController->globalObject());
+    return *m_jsController;
 }
 
+inline JSDOMGlobalObject& ReadableStreamDefaultController::globalObject() const
+{
+    ASSERT(m_jsController);
+    ASSERT(m_jsController->globalObject());
+    return *static_cast<JSDOMGlobalObject*>(m_jsController->globalObject());
+}
+
+inline JSC::ExecState& ReadableStreamDefaultController::globalExec() const
+{
+    ASSERT(globalObject().globalExec());
+    return *globalObject().globalExec();
+}
+
 inline bool ReadableStreamDefaultController::enqueue(RefPtr<JSC::ArrayBuffer>&& buffer)
 {
-    auto globalObject = this->globalObject();
-    JSC::VM& vm = globalObject->vm();
+    auto& globalObject = this->globalObject();
+    JSC::VM& vm = globalObject.vm();
     JSC::JSLockHolder locker(vm);
     auto scope = DECLARE_THROW_SCOPE(vm);
-    JSC::ExecState& state = *globalObject->globalExec();
+    JSC::ExecState& state = globalExec();
 
     if (!buffer) {
         error(state, createOutOfMemoryError(&state));
@@ -87,7 +102,7 @@
     auto length = buffer->byteLength();
     auto chunk = JSC::Uint8Array::create(WTFMove(buffer), 0, length);
     ASSERT(chunk);
-    enqueue(state, toJS(&state, globalObject, chunk.get()));
+    enqueue(state, toJS(&state, &globalObject, chunk.get()));
     ASSERT_UNUSED(scope, !scope.exception());
     return true;
 }
@@ -95,9 +110,9 @@
 template<>
 inline void ReadableStreamDefaultController::error<String>(const String& result)
 {
-    JSC::ExecState* state = globalObject()->globalExec();
-    JSC::JSLockHolder locker(state);
-    error(*state, jsString(state, result));
+    JSC::ExecState& state = globalExec();
+    JSC::JSLockHolder locker(&state);
+    error(state, jsString(&state, result));
 }
 
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to