Title: [206870] trunk/Source
Revision
206870
Author
[email protected]
Date
2016-10-06 10:59:33 -0700 (Thu, 06 Oct 2016)

Log Message

[WebCore][JSC] Use new @throwTypeError and @throwRangeError intrinsics
https://bugs.webkit.org/show_bug.cgi?id=163001

Reviewed by Keith Miller.

Source/_javascript_Core:

Previously, the argument of @throwXXXError intrinsics must be string literal.
But it is error-prone restriction. This patch relaxes the restriction to accept
arbitrary values. To keep emitted bytecode small, if the argument is string literal,
we generate the same bytecode as before. If the argument is not string literal,
we evaluate it and perform to_string before passing to throw_static_error.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitThrowStaticError):
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/NodesCodegen.cpp:
(JSC::BytecodeIntrinsicNode::emit_intrinsic_throwTypeError):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_throwRangeError):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):

Source/WebCore:

Replace `throw new @XXXError(...)` to @throwXXXError intrinsic.
It reduces the size of bytecode sequence and facilitate inlining.

No behavior change.

* Modules/fetch/FetchHeaders.js:
(initializeFetchHeaders):
* Modules/fetch/FetchInternals.js:
(fillFetchHeaders):
* Modules/fetch/FetchRequest.js:
(initializeFetchRequest):
* Modules/fetch/FetchResponse.js:
(initializeFetchResponse):
(clone):
* Modules/mediastream/NavigatorUserMedia.js:
(webkitGetUserMedia):
* Modules/mediastream/RTCPeerConnection.js:
(initializeRTCPeerConnection):
(getLocalStreams):
(getStreamById):
(addStream):
* Modules/streams/ReadableStream.js:
(initializeReadableStream):
(getReader):
* Modules/streams/ReadableStreamDefaultController.js:
(enqueue):
(error):
(close):
* Modules/streams/ReadableStreamDefaultReader.js:
(releaseLock):
* Modules/streams/ReadableStreamInternals.js:
(privateInitializeReadableStreamDefaultReader):
(privateInitializeReadableStreamDefaultController):
(doStructuredClone):
(readableStreamError):
* Modules/streams/StreamInternals.js:
(validateAndNormalizeQueuingStrategy):
(enqueueValueWithSize):
* Modules/streams/WritableStream.js:
(initializeWritableStream):
(state):
* xml/XMLHttpRequest.js:
(response):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (206869 => 206870)


--- trunk/Source/_javascript_Core/ChangeLog	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-10-06 17:59:33 UTC (rev 206870)
@@ -1,3 +1,25 @@
+2016-10-06  Yusuke Suzuki  <[email protected]>
+
+        [WebCore][JSC] Use new @throwTypeError and @throwRangeError intrinsics
+        https://bugs.webkit.org/show_bug.cgi?id=163001
+
+        Reviewed by Keith Miller.
+
+        Previously, the argument of @throwXXXError intrinsics must be string literal.
+        But it is error-prone restriction. This patch relaxes the restriction to accept
+        arbitrary values. To keep emitted bytecode small, if the argument is string literal,
+        we generate the same bytecode as before. If the argument is not string literal,
+        we evaluate it and perform to_string before passing to throw_static_error.
+
+        * bytecompiler/BytecodeGenerator.cpp:
+        (JSC::BytecodeGenerator::emitThrowStaticError):
+        * bytecompiler/BytecodeGenerator.h:
+        * bytecompiler/NodesCodegen.cpp:
+        (JSC::BytecodeIntrinsicNode::emit_intrinsic_throwTypeError):
+        (JSC::BytecodeIntrinsicNode::emit_intrinsic_throwRangeError):
+        * dfg/DFGByteCodeParser.cpp:
+        (JSC::DFG::ByteCodeParser::parseBlock):
+
 2016-10-05  Yusuke Suzuki  <[email protected]>
 
         [JSC] Add @throwXXXError bytecode intrinsic

Modified: trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp (206869 => 206870)


--- trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp	2016-10-06 17:59:33 UTC (rev 206870)
@@ -3905,6 +3905,15 @@
     return localScopeDepth() + m_finallyDepth;
 }
 
+void BytecodeGenerator::emitThrowStaticError(ErrorType errorType, RegisterID* raw)
+{
+    RefPtr<RegisterID> message = newTemporary();
+    emitToString(message.get(), raw);
+    emitOpcode(op_throw_static_error);
+    instructions().append(message->index());
+    instructions().append(static_cast<unsigned>(errorType));
+}
+
 void BytecodeGenerator::emitThrowStaticError(ErrorType errorType, const Identifier& message)
 {
     emitOpcode(op_throw_static_error);

Modified: trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.h (206869 => 206870)


--- trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.h	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.h	2016-10-06 17:59:33 UTC (rev 206870)
@@ -662,6 +662,7 @@
             emitUnaryNoDstOp(op_throw, exc);
         }
 
+        void emitThrowStaticError(ErrorType, RegisterID*);
         void emitThrowStaticError(ErrorType, const Identifier& message);
         void emitThrowReferenceError(const String& message);
         void emitThrowTypeError(const String& message);

Modified: trunk/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp (206869 => 206870)


--- trunk/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/_javascript_Core/bytecompiler/NodesCodegen.cpp	2016-10-06 17:59:33 UTC (rev 206870)
@@ -901,11 +901,14 @@
 RegisterID* BytecodeIntrinsicNode::emit_intrinsic_throwTypeError(BytecodeGenerator& generator, RegisterID* dst)
 {
     ArgumentListNode* node = m_args->m_listNode;
-    ASSERT(node->m_expr->isString());
-    const Identifier& ident = static_cast<StringNode*>(node->m_expr)->value();
     ASSERT(!node->m_next);
-
-    generator.emitThrowTypeError(ident);
+    if (node->m_expr->isString()) {
+        const Identifier& ident = static_cast<StringNode*>(node->m_expr)->value();
+        generator.emitThrowTypeError(ident);
+    } else {
+        RefPtr<RegisterID> message = generator.emitNode(node);
+        generator.emitThrowStaticError(ErrorType::TypeError, message.get());
+    }
     return dst;
 }
 
@@ -912,11 +915,15 @@
 RegisterID* BytecodeIntrinsicNode::emit_intrinsic_throwRangeError(BytecodeGenerator& generator, RegisterID* dst)
 {
     ArgumentListNode* node = m_args->m_listNode;
-    ASSERT(node->m_expr->isString());
-    const Identifier& ident = static_cast<StringNode*>(node->m_expr)->value();
     ASSERT(!node->m_next);
+    if (node->m_expr->isString()) {
+        const Identifier& ident = static_cast<StringNode*>(node->m_expr)->value();
+        generator.emitThrowRangeError(ident);
+    } else {
+        RefPtr<RegisterID> message = generator.emitNode(node);
+        generator.emitThrowStaticError(ErrorType::RangeError, message.get());
+    }
 
-    generator.emitThrowRangeError(ident);
     return dst;
 }
 

Modified: trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp (206869 => 206870)


--- trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/_javascript_Core/dfg/DFGByteCodeParser.cpp	2016-10-06 17:59:33 UTC (rev 206870)
@@ -4660,6 +4660,7 @@
             LAST_OPCODE(op_throw);
             
         case op_throw_static_error:
+            addToGraph(Phantom, get(VirtualRegister(currentInstruction[1].u.operand))); // Keep argument live.
             addToGraph(ThrowStaticError);
             flushForTerminal();
             addToGraph(Unreachable);

Modified: trunk/Source/WebCore/ChangeLog (206869 => 206870)


--- trunk/Source/WebCore/ChangeLog	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/ChangeLog	2016-10-06 17:59:33 UTC (rev 206870)
@@ -1,3 +1,54 @@
+2016-10-06  Yusuke Suzuki  <[email protected]>
+
+        [WebCore][JSC] Use new @throwTypeError and @throwRangeError intrinsics
+        https://bugs.webkit.org/show_bug.cgi?id=163001
+
+        Reviewed by Keith Miller.
+
+        Replace `throw new @XXXError(...)` to @throwXXXError intrinsic.
+        It reduces the size of bytecode sequence and facilitate inlining.
+
+        No behavior change.
+
+        * Modules/fetch/FetchHeaders.js:
+        (initializeFetchHeaders):
+        * Modules/fetch/FetchInternals.js:
+        (fillFetchHeaders):
+        * Modules/fetch/FetchRequest.js:
+        (initializeFetchRequest):
+        * Modules/fetch/FetchResponse.js:
+        (initializeFetchResponse):
+        (clone):
+        * Modules/mediastream/NavigatorUserMedia.js:
+        (webkitGetUserMedia):
+        * Modules/mediastream/RTCPeerConnection.js:
+        (initializeRTCPeerConnection):
+        (getLocalStreams):
+        (getStreamById):
+        (addStream):
+        * Modules/streams/ReadableStream.js:
+        (initializeReadableStream):
+        (getReader):
+        * Modules/streams/ReadableStreamDefaultController.js:
+        (enqueue):
+        (error):
+        (close):
+        * Modules/streams/ReadableStreamDefaultReader.js:
+        (releaseLock):
+        * Modules/streams/ReadableStreamInternals.js:
+        (privateInitializeReadableStreamDefaultReader):
+        (privateInitializeReadableStreamDefaultController):
+        (doStructuredClone):
+        (readableStreamError):
+        * Modules/streams/StreamInternals.js:
+        (validateAndNormalizeQueuingStrategy):
+        (enqueueValueWithSize):
+        * Modules/streams/WritableStream.js:
+        (initializeWritableStream):
+        (state):
+        * xml/XMLHttpRequest.js:
+        (response):
+
 2016-10-06  John Wilander  <[email protected]>
 
         Update Resource Load Statistics

Modified: trunk/Source/WebCore/Modules/fetch/FetchHeaders.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/fetch/FetchHeaders.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/fetch/FetchHeaders.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -33,7 +33,7 @@
         return this;
 
     if (!@isObject(headersInit))
-        throw new @TypeError("headersInit must be an object");
+        @throwTypeError("headersInit must be an object");
 
     @fillFetchHeaders(this, headersInit);
 

Modified: trunk/Source/WebCore/Modules/fetch/FetchInternals.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/fetch/FetchInternals.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/fetch/FetchInternals.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -39,7 +39,7 @@
         for (let i = 0; i < headersInit.length; i++) {
             let header = headersInit[i];
             if (header.length !== 2)
-                throw new @TypeError("headersInit sequence items should contain two values");
+                @throwTypeError("headersInit sequence items should contain two values");
             @Headers.prototype.@appendFromJS.@call(headers, header[0], header[1]);
         }
         return this;

Modified: trunk/Source/WebCore/Modules/fetch/FetchRequest.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/fetch/FetchRequest.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/fetch/FetchRequest.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -32,7 +32,7 @@
     if (init === @undefined)
         init = { };
     else if (!@isObject(init))
-        throw new @TypeError("Request init must be an object");
+        @throwTypeError("Request init must be an object");
 
     let headers = this.@initializeWith(input, init);
     @assert(headers instanceof @Headers);

Modified: trunk/Source/WebCore/Modules/fetch/FetchResponse.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/fetch/FetchResponse.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/fetch/FetchResponse.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -32,11 +32,11 @@
     if (init === @undefined)
         init = { };
     else if (!@isObject(init))
-        throw new @TypeError("Response init must be an object");
+        @throwTypeError("Response init must be an object");
 
     let status = (init.status !== @undefined) ? @toNumber(init.status) : 200;
     if (status < 200  || status > 599)
-        throw new @RangeError("Status must be between 200 and 599");
+        @throwRangeError("Status must be between 200 and 599");
 
     let statusText = (init.statusText !== @undefined) ? init.statusText : "OK";
 
@@ -47,7 +47,7 @@
 
     if (body !== @undefined && body !== null) {
         if (status == 101 || status == 204 || status == 205 || status == 304)
-            throw new @TypeError("Response cannot have a body with the given status");
+            @throwTypeError("Response cannot have a body with the given status");
 
         // FIXME: Use @isReadableStream once it is no longer guarded by READABLE_STREAM_API guard.
         let isBodyReadableStream = (@isObject(body) && !!body.@readableStreamController);
@@ -95,7 +95,7 @@
         throw @makeThisTypeError("Response", "clone");
 
     if (@Response.prototype.@isDisturbed.@call(this) || (this.@body && @isReadableStreamLocked(this.@body)))
-        throw new @TypeError("Cannot clone a disturbed Response");
+        @throwTypeError("Cannot clone a disturbed Response");
 
     var cloned = @Response.prototype.@cloneForJS.@call(this);
 

Modified: trunk/Source/WebCore/Modules/mediastream/NavigatorUserMedia.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/mediastream/NavigatorUserMedia.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/mediastream/NavigatorUserMedia.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -34,15 +34,15 @@
         throw @makeThisTypeError("Navigator", "webkitGetUserMedia");
 
     if (arguments.length < 3)
-        throw new @TypeError("Not enough arguments");
+        @throwTypeError("Not enough arguments");
 
     if (options !== @Object(options))
-        throw new @TypeError("Argument 1 (options) to Navigator.webkitGetUserMedia must be an object");
+        @throwTypeError("Argument 1 (options) to Navigator.webkitGetUserMedia must be an object");
 
     if (typeof successCallback !== "function")
-        throw new @TypeError("Argument 2 ('successCallback') to Navigator.webkitGetUserMedia must be a function");
+        @throwTypeError("Argument 2 ('successCallback') to Navigator.webkitGetUserMedia must be a function");
     if (typeof errorCallback !== "function")
-        throw new @TypeError("Argument 3 ('errorCallback') to Navigator.webkitGetUserMedia must be a function");
+        @throwTypeError("Argument 3 ('errorCallback') to Navigator.webkitGetUserMedia must be a function");
 
     this.mediaDevices.@getUserMedia(options).@then(successCallback, errorCallback);
 }

Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -35,10 +35,10 @@
     "use strict";
 
     if (arguments.length < 1)
-        throw new @TypeError("Not enough arguments");
+        @throwTypeError("Not enough arguments");
 
     if (!@isObject(configuration))
-        throw new @TypeError("RTCPeerConnection argument must be a valid Dictionary");
+        @throwTypeError("RTCPeerConnection argument must be a valid Dictionary");
 
     // FIXME: Handle errors in a better way than catching and re-throwing (http://webkit.org/b/158936)
     try {
@@ -46,7 +46,7 @@
     } catch (e) {
         const message = e.name === "TypeMismatchError" ? "Invalid RTCPeerConnection constructor arguments"
             : "Error creating RTCPeerConnection";
-        throw new @TypeError(message);
+        @throwTypeError(message);
     }
 
     this.@operations = [];
@@ -60,7 +60,7 @@
     "use strict";
 
     if (!@isRTCPeerConnection(this))
-        throw new @TypeError("Function should be called on an RTCPeerConnection");
+        @throwTypeError("Function should be called on an RTCPeerConnection");
 
     return [email protected]();
 }
@@ -70,10 +70,10 @@
     "use strict";
 
     if (!@isRTCPeerConnection(this))
-        throw new @TypeError("Function should be called on an RTCPeerConnection");
+        @throwTypeError("Function should be called on an RTCPeerConnection");
 
     if (arguments.length < 1)
-        throw new @TypeError("Not enough arguments");
+        @throwTypeError("Not enough arguments");
 
     const streamId = @String(streamIdArg);
 
@@ -87,13 +87,13 @@
     "use strict";
 
     if (!@isRTCPeerConnection(this))
-        throw new @TypeError("Function should be called on an RTCPeerConnection");
+        @throwTypeError("Function should be called on an RTCPeerConnection");
 
     if (arguments.length < 1)
-        throw new @TypeError("Not enough arguments");
+        @throwTypeError("Not enough arguments");
 
     if (!(stream instanceof @MediaStream))
-        throw new @TypeError("Argument 1 ('stream') to RTCPeerConnection.addStream must be an instance of MediaStream");
+        @throwTypeError("Argument 1 ('stream') to RTCPeerConnection.addStream must be an instance of MediaStream");
 
     if ([email protected](localStream => localStream.id === stream.id))
         return;
@@ -107,13 +107,13 @@
     "use strict";
 
     if (!@isRTCPeerConnection(this))
-        throw new @TypeError("Function should be called on an RTCPeerConnection");
+        @throwTypeError("Function should be called on an RTCPeerConnection");
 
     if (arguments.length < 1)
-        throw new @TypeError("Not enough arguments");
+        @throwTypeError("Not enough arguments");
 
     if (!(stream instanceof @MediaStream))
-        throw new @TypeError("Argument 1 ('stream') to RTCPeerConnection.removeStream must be an instance of MediaStream");
+        @throwTypeError("Argument 1 ('stream') to RTCPeerConnection.removeStream must be an instance of MediaStream");
 
     const indexOfStreamToRemove = [email protected](localStream => localStream.id === stream.id);
     if (indexOfStreamToRemove === -1)

Modified: trunk/Source/WebCore/Modules/streams/ReadableStream.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/streams/ReadableStream.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/streams/ReadableStream.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -36,10 +36,10 @@
          strategy = { highWaterMark: 1, size: function() { return 1; } };
 
     if (!@isObject(underlyingSource))
-        throw new @TypeError("ReadableStream constructor takes an object as first argument");
+        @throwTypeError("ReadableStream constructor takes an object as first argument");
 
     if (strategy !== @undefined && !@isObject(strategy))
-        throw new @TypeError("ReadableStream constructor takes an object as second argument, if any");
+        @throwTypeError("ReadableStream constructor takes an object as second argument, if any");
 
     this.@state = @streamReadable;
     this.@reader = @undefined;
@@ -53,13 +53,13 @@
 
     if (typeString === "bytes") {
          // FIXME: Implement support of ReadableByteStreamController.
-        throw new @TypeError("ReadableByteStreamController is not implemented");
+        @throwTypeError("ReadableByteStreamController is not implemented");
     } else if (type === @undefined) {
         if (strategy.highWaterMark === @undefined)
             strategy.highWaterMark = 1;
         this.@readableStreamController = new @ReadableStreamDefaultController(this, underlyingSource, strategy.size, strategy.highWaterMark);
     } else
-        throw new @RangeError("Invalid type for underlying source");
+        @throwRangeError("Invalid type for underlying source");
 
     return this;
 }
@@ -89,13 +89,13 @@
 
     if (options.mode === 'byob') {
         // FIXME: Update once ReadableByteStreamContoller and ReadableStreamBYOBReader are implemented.
-        throw new @TypeError("ReadableStreamBYOBReader is not implemented");
+        @throwTypeError("ReadableStreamBYOBReader is not implemented");
     }
 
     if (options.mode === @undefined)
         return new @ReadableStreamDefaultReader(this);
 
-    throw new @RangeError("Invalid mode is specified");
+    @throwRangeError("Invalid mode is specified");
 }
 
 function pipeThrough(streams, options)

Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultController.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultController.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultController.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -33,10 +33,10 @@
         throw @makeThisTypeError("ReadableStreamDefaultController", "enqueue");
 
     if (this.@closeRequested)
-        throw new @TypeError("ReadableStreamDefaultController is requested to close");
+        @throwTypeError("ReadableStreamDefaultController is requested to close");
 
     if (this.@controlledReadableStream.@state !== @streamReadable)
-        throw new @TypeError("ReadableStream is not readable");
+        @throwTypeError("ReadableStream is not readable");
 
     return @readableStreamDefaultControllerEnqueue(this, chunk);
 }
@@ -50,7 +50,7 @@
 
     const stream = this.@controlledReadableStream;
     if (stream.@state !== @streamReadable)
-        throw new @TypeError("ReadableStream is not readable");
+        @throwTypeError("ReadableStream is not readable");
 
     @readableStreamError(stream, error);
 }
@@ -63,10 +63,10 @@
         throw @makeThisTypeError("ReadableStreamDefaultController", "close");
 
     if (this.@closeRequested)
-        throw new @TypeError("ReadableStreamDefaultController is already requested to close");
+        @throwTypeError("ReadableStreamDefaultController is already requested to close");
 
     if (this.@controlledReadableStream.@state !== @streamReadable)
-        throw new @TypeError("ReadableStream is not readable");
+        @throwTypeError("ReadableStream is not readable");
 
     @readableStreamDefaultControllerClose(this);
 }

Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamDefaultReader.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -62,7 +62,7 @@
          return;
 
     if ([email protected])
-        throw new @TypeError("There are still pending read requests, cannot release the lock");
+        @throwTypeError("There are still pending read requests, cannot release the lock");
 
     if (stream.@state === @streamReadable)
         this.@closedPromiseCapability.@reject.@call(@undefined, new @TypeError("releasing lock of reader whose stream is still in readable state"));

Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -32,9 +32,9 @@
     "use strict";
 
     if (!@isReadableStream(stream))
-       throw new @TypeError("ReadableStreamDefaultReader needs a ReadableStream");
+       @throwTypeError("ReadableStreamDefaultReader needs a ReadableStream");
     if (@isReadableStreamLocked(stream))
-       throw new @TypeError("ReadableStream is locked");
+       @throwTypeError("ReadableStream is locked");
 
     this.@readRequests = [];
     this.@ownerReadableStream = stream;
@@ -58,11 +58,11 @@
     "use strict";
 
     if (!@isReadableStream(stream))
-        throw new @TypeError("ReadableStreamDefaultController needs a ReadableStream");
+        @throwTypeError("ReadableStreamDefaultController needs a ReadableStream");
 
     // readableStreamController is initialized with null value.
     if (stream.@readableStreamController !== null)
-        throw new @TypeError("ReadableStream already has a controller");
+        @throwTypeError("ReadableStream already has a controller");
 
     this.@controlledReadableStream = stream;
     this.@underlyingSource = underlyingSource;
@@ -157,7 +157,7 @@
     if (@ArrayBuffer.@isView(object))
         return @structuredCloneArrayBufferView(object);
 
-    throw new @TypeError("structuredClone not implemented for: " + object);
+    @throwTypeError("structuredClone not implemented for: " + object);
 }
 
 function readableStreamTeePullFunction(teeState, reader, shouldClone)
@@ -269,7 +269,7 @@
         reader.@readRequests = [];
     } else
         // FIXME: Implement ReadableStreamBYOBReader.
-        throw new @TypeError("Only ReadableStreamDefaultReader is currently supported");
+        @throwTypeError("Only ReadableStreamDefaultReader is currently supported");
 
     reader.@closedPromiseCapability.@reject.@call(@undefined, error);
 }

Modified: trunk/Source/WebCore/Modules/streams/StreamInternals.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/streams/StreamInternals.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/streams/StreamInternals.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -79,7 +79,7 @@
     "use strict";
 
     if (size !== @undefined && typeof size !== "function")
-        throw new @TypeError("size parameter must be a function");
+        @throwTypeError("size parameter must be a function");
 
     const normalizedStrategy = { };
 
@@ -87,7 +87,7 @@
     normalizedStrategy.highWaterMark = @Number(highWaterMark);
 
     if (@isNaN(normalizedStrategy.highWaterMark) || normalizedStrategy.highWaterMark < 0)
-        throw new @RangeError("highWaterMark value is negative or not a number");
+        @throwRangeError("highWaterMark value is negative or not a number");
 
     return normalizedStrategy;
 }
@@ -114,7 +114,7 @@
 
     size = @Number(size);
     if (!@isFinite(size) || size < 0)
-        throw new @RangeError("size has an incorrect value");
+        @throwRangeError("size has an incorrect value");
     queue.content.@push({ value: value, size: size });
     queue.size += size;
 }

Modified: trunk/Source/WebCore/Modules/streams/WritableStream.js (206869 => 206870)


--- trunk/Source/WebCore/Modules/streams/WritableStream.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/Modules/streams/WritableStream.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -36,10 +36,10 @@
         strategy = { highWaterMark: 0, size: function() { return 1; } };
 
     if (!@isObject(underlyingSink))
-        throw new @TypeError("WritableStream constructor takes an object as first argument");
+        @throwTypeError("WritableStream constructor takes an object as first argument");
 
     if (!@isObject(strategy))
-        throw new @TypeError("WritableStream constructor takes an object as second argument, if any");
+        @throwTypeError("WritableStream constructor takes an object as second argument, if any");
 
     this.@underlyingSink = underlyingSink;
     this.@closedPromiseCapability = @newPromiseCapability(@Promise);
@@ -170,7 +170,7 @@
     "use strict";
 
     if (!@isWritableStream(this))
-        throw new @TypeError("The WritableStream.state getter can only be used on instances of WritableStream");
+        @throwTypeError("The WritableStream.state getter can only be used on instances of WritableStream");
 
     switch(this.@state) {
     case @streamClosed:

Modified: trunk/Source/WebCore/xml/XMLHttpRequest.js (206869 => 206870)


--- trunk/Source/WebCore/xml/XMLHttpRequest.js	2016-10-06 17:40:12 UTC (rev 206869)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.js	2016-10-06 17:59:33 UTC (rev 206870)
@@ -29,7 +29,7 @@
 
     // FIXME: Add a helper routine for that kind of checks.
     if (!(this instanceof @XMLHttpRequest))
-        throw new @TypeError("The XMLHttpRequest.response getter can only be used on instances of XMLHttpRequest");
+        @throwTypeError("The XMLHttpRequest.response getter can only be used on instances of XMLHttpRequest");
 
     if (@XMLHttpRequest.prototype.@responseCacheIsValid.@call(this))
         return this.@response;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to