summaryrefslogtreecommitdiff
path: root/ext/websocket/01_websocket.js
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2022-12-01 06:35:32 -0800
committerGitHub <noreply@github.com>2022-12-01 20:05:32 +0530
commit824cb485c542305d16e0b9dcfda0ce4a06cf5038 (patch)
treeb85bdce59764246048a3d1f032c9137fa7347217 /ext/websocket/01_websocket.js
parent98d062e3dcd8804bd959ea41f6a0103ccd87f283 (diff)
perf(ext/websocket): skip Events constructor checks (#16365)
WebSocket internal events can bypass Event's webidl checks and `ReflectDefineProperty` on the object value. Note, this intentionally makes websocket events `isTrusted` configurable (not spec-compliant) which hurts performance a lot. Before: ``` Msg/sec: 167627.750000 Msg/sec: 168239.250000 Msg/sec: 169690.000000 ``` After: ``` Msg/sec: 191065.500000 Msg/sec: 194745.250000 Msg/sec: 194746.000000 ```
Diffstat (limited to 'ext/websocket/01_websocket.js')
-rw-r--r--ext/websocket/01_websocket.js11
1 files changed, 9 insertions, 2 deletions
diff --git a/ext/websocket/01_websocket.js b/ext/websocket/01_websocket.js
index 2284a0e77..a30a74cad 100644
--- a/ext/websocket/01_websocket.js
+++ b/ext/websocket/01_websocket.js
@@ -10,8 +10,14 @@
const webidl = window.__bootstrap.webidl;
const { HTTP_TOKEN_CODE_POINT_RE } = window.__bootstrap.infra;
const { DOMException } = window.__bootstrap.domException;
- const { Event, ErrorEvent, CloseEvent, MessageEvent, defineEventHandler } =
- window.__bootstrap.event;
+ const {
+ Event,
+ ErrorEvent,
+ CloseEvent,
+ MessageEvent,
+ defineEventHandler,
+ _skipInternalInit,
+ } = window.__bootstrap.event;
const { EventTarget } = window.__bootstrap.eventTarget;
const { Blob, BlobPrototype } = globalThis.__bootstrap.file;
const {
@@ -440,6 +446,7 @@
const event = new MessageEvent("message", {
data,
origin: this[_url],
+ [_skipInternalInit]: true,
});
this.dispatchEvent(event);
break;