aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/builtins/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/builtins/cpp')
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp6
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp11
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp124
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h32
-rw-r--r--src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h11
5 files changed, 152 insertions, 32 deletions
diff --git a/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp
index 7ce97e7bb..2af23348e 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableStreamBuiltins.cpp
@@ -49,7 +49,7 @@ namespace WebCore {
const JSC::ConstructAbility s_readableStreamInitializeReadableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const JSC::ConstructorKind s_readableStreamInitializeReadableStreamCodeConstructorKind = JSC::ConstructorKind::None;
-const int s_readableStreamInitializeReadableStreamCodeLength = 2501;
+const int s_readableStreamInitializeReadableStreamCodeLength = 2783;
static const JSC::Intrinsic s_readableStreamInitializeReadableStreamCodeIntrinsic = JSC::NoIntrinsic;
const char* const s_readableStreamInitializeReadableStreamCode =
"(function (underlyingSource, strategy)\n" \
@@ -90,14 +90,17 @@ const char* const s_readableStreamInitializeReadableStreamCode =
" if (@getByIdDirectPrivate(underlyingSource, \"pull\") !== @undefined && !isLazy) {\n" \
" const size = @getByIdDirectPrivate(strategy, \"size\");\n" \
" const highWaterMark = @getByIdDirectPrivate(strategy, \"highWaterMark\");\n" \
+ " @putByIdDirectPrivate(this, \"underlyingSource\", @undefined);\n" \
" @setupReadableStreamDefaultController(this, underlyingSource, size, highWaterMark !== @undefined ? highWaterMark : 1, @getByIdDirectPrivate(underlyingSource, \"start\"), @getByIdDirectPrivate(underlyingSource, \"pull\"), @getByIdDirectPrivate(underlyingSource, \"cancel\"));\n" \
" \n" \
" return this;\n" \
" }\n" \
" if (isDirect) {\n" \
+ " @putByIdDirectPrivate(this, \"underlyingSource\", underlyingSource);\n" \
" @putByIdDirectPrivate(this, \"start\", () => @createReadableStreamController(this, underlyingSource, strategy));\n" \
" } else if (isLazy) {\n" \
" const autoAllocateChunkSize = underlyingSource.autoAllocateChunkSize;\n" \
+ " @putByIdDirectPrivate(this, \"underlyingSource\", @undefined);\n" \
"\n" \
" \n" \
" @putByIdDirectPrivate(this, \"start\", () => {\n" \
@@ -107,6 +110,7 @@ const char* const s_readableStreamInitializeReadableStreamCode =
" }\n" \
" });\n" \
" } else {\n" \
+ " @putByIdDirectPrivate(this, \"underlyingSource\", @undefined);\n" \
" @putByIdDirectPrivate(this, \"start\", @undefined);\n" \
" @createReadableStreamController(this, underlyingSource, strategy);\n" \
" }\n" \
diff --git a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp
index b1f8d4791..9a8935324 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp
@@ -89,7 +89,7 @@ const char* const s_readableStreamDefaultReaderCancelCode =
const JSC::ConstructAbility s_readableStreamDefaultReaderReadManyCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const JSC::ConstructorKind s_readableStreamDefaultReaderReadManyCodeConstructorKind = JSC::ConstructorKind::None;
-const int s_readableStreamDefaultReaderReadManyCodeLength = 3414;
+const int s_readableStreamDefaultReaderReadManyCodeLength = 3712;
static const JSC::Intrinsic s_readableStreamDefaultReaderReadManyCodeIntrinsic = JSC::NoIntrinsic;
const char* const s_readableStreamDefaultReaderReadManyCode =
"(function ()\n" \
@@ -128,6 +128,11 @@ const char* const s_readableStreamDefaultReaderReadManyCode =
" value[i] = new @Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n" \
" }\n" \
" }\n" \
+ " } else {\n" \
+ " values[0] = values[0].value;\n" \
+ " for (var i = 1; i < values.length; i++) {\n" \
+ " values[i] = values[i].value;\n" \
+ " }\n" \
" }\n" \
" \n" \
" @resetQueue(@getByIdDirectPrivate(controller, \"queue\"));\n" \
@@ -158,6 +163,10 @@ const char* const s_readableStreamDefaultReaderReadManyCode =
" value[i] = new @Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n" \
" }\n" \
" }\n" \
+ " } else {\n" \
+ " for (var i = 1; i < value.length; i++) {\n" \
+ " value[i] = value[i].value;\n" \
+ " }\n" \
" }\n" \
" \n" \
" var size = queue.size;\n" \
diff --git a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp
index 09e96a121..ca82613a7 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.cpp
@@ -762,15 +762,111 @@ const char* const s_readableStreamInternalsIsReadableStreamDefaultControllerCode
"})\n" \
;
-const JSC::ConstructAbility s_readableStreamInternalsAssignDirectStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_readableStreamInternalsAssignDirectStreamCodeConstructorKind = JSC::ConstructorKind::None;
-const int s_readableStreamInternalsAssignDirectStreamCodeLength = 60;
-static const JSC::Intrinsic s_readableStreamInternalsAssignDirectStreamCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_readableStreamInternalsAssignDirectStreamCode =
- "(function () {\n" \
+const JSC::ConstructAbility s_readableStreamInternalsAssignToStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
+const JSC::ConstructorKind s_readableStreamInternalsAssignToStreamCodeConstructorKind = JSC::ConstructorKind::None;
+const int s_readableStreamInternalsAssignToStreamCodeLength = 2534;
+static const JSC::Intrinsic s_readableStreamInternalsAssignToStreamCodeIntrinsic = JSC::NoIntrinsic;
+const char* const s_readableStreamInternalsAssignToStreamCode =
+ "(function (stream, sink) {\n" \
" \"use strict\";\n" \
"\n" \
- " var stream = this;\n" \
+ " //\n" \
+ " const underlyingSource = @getByIdDirectPrivate(stream, \"underlyingSource\");\n" \
+ "\n" \
+ " //\n" \
+ " if (underlyingSource) {\n" \
+ " var originalClose = underlyingSource.close;\n" \
+ " var reader;\n" \
+ " var close = (reason) => {\n" \
+ " originalClose && originalClose(reason);\n" \
+ " try {\n" \
+ " reader && reader.releaseLock();\n" \
+ " } catch (e) {}\n" \
+ " @readableStreamClose(stream, reason);\n" \
+ " \n" \
+ " }\n" \
+ " var pull = underlyingSource.pull;\n" \
+ " \n" \
+ " @putByIdDirectPrivate(stream, \"readableStreamController\", sink);\n" \
+ " @putByIdDirectPrivate(stream, \"start\", @undefined);\n" \
+ " @putByIdDirectPrivate(stream, \"underlyingSource\", @undefined);\n" \
+ "\n" \
+ " @startDirectStream.@call(sink, stream, pull, close);\n" \
+ "\n" \
+ " if (!pull) {\n" \
+ " close();\n" \
+ " return;\n" \
+ " }\n" \
+ "\n" \
+ " if (!@isCallable(pull)) {\n" \
+ " close();\n" \
+ " @throwTypeError(\"pull is not a function\");\n" \
+ " return;\n" \
+ " }\n" \
+ "\n" \
+ " //\n" \
+ " reader = stream.getReader();\n" \
+ "\n" \
+ " pull(sink);\n" \
+ " return;\n" \
+ " }\n" \
+ "\n" \
+ " \n" \
+ " return (async function() {\n" \
+ " \"use strict\";\n" \
+ "\n" \
+ " var didClose = false;\n" \
+ "\n" \
+ "\n" \
+ " try {\n" \
+ " var reader = stream.getReader();\n" \
+ " reader.closed.then(() => {\n" \
+ " if (!didClose && sink) {\n" \
+ " didClose = true;\n" \
+ " sink.end();\n" \
+ " }\n" \
+ " }, (e) => {\n" \
+ " if (!didClose && sink) {\n" \
+ " didClose = true;\n" \
+ " sink.close(e);\n" \
+ " }\n" \
+ " });\n" \
+ "\n" \
+ " var many = reader.readMany();\n" \
+ " if (many && @isPromise(many)) {\n" \
+ " many = await many;\n" \
+ " }\n" \
+ "\n" \
+ " if (many.done) {\n" \
+ " didClose = true;\n" \
+ " sink.end();\n" \
+ " return;\n" \
+ " }\n" \
+ "\n" \
+ " sink.start();\n" \
+ " var wroteCount = many.value.length;\n" \
+ " for (var i = 0, values = many.value, length = many.value.length; i < length; i++) {\n" \
+ " sink.write(values[i]);\n" \
+ " }\n" \
+ "\n" \
+ " if (wroteCount > 0) {\n" \
+ " sink.drain();\n" \
+ " }\n" \
+ " \n" \
+ " while (true) {\n" \
+ " var result = await reader.read();\n" \
+ " if (result.done) {\n" \
+ " didClose = true;\n" \
+ " return sink.end();\n" \
+ " }\n" \
+ "\n" \
+ " sink.write(result.value);\n" \
+ " }\n" \
+ " } catch (e) {\n" \
+ " globalThis.console.error(e);\n" \
+ "\n" \
+ " }\n" \
+ " })();\n" \
"})\n" \
;
@@ -823,11 +919,11 @@ const char* const s_readableStreamInternalsHandleDirectStreamErrorRejectCode =
"})\n" \
;
-const JSC::ConstructAbility s_readableStreamInternalsOnPullDirectStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const JSC::ConstructorKind s_readableStreamInternalsOnPullDirectStreamCodeConstructorKind = JSC::ConstructorKind::None;
-const int s_readableStreamInternalsOnPullDirectStreamCodeLength = 1701;
-static const JSC::Intrinsic s_readableStreamInternalsOnPullDirectStreamCodeIntrinsic = JSC::NoIntrinsic;
-const char* const s_readableStreamInternalsOnPullDirectStreamCode =
+const JSC::ConstructAbility s_readableStreamInternalsOnPullArrayBufferSinkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
+const JSC::ConstructorKind s_readableStreamInternalsOnPullArrayBufferSinkCodeConstructorKind = JSC::ConstructorKind::None;
+const int s_readableStreamInternalsOnPullArrayBufferSinkCodeLength = 1701;
+static const JSC::Intrinsic s_readableStreamInternalsOnPullArrayBufferSinkCodeIntrinsic = JSC::NoIntrinsic;
+const char* const s_readableStreamInternalsOnPullArrayBufferSinkCode =
"(function (controller)\n" \
"{\n" \
" \n" \
@@ -1049,7 +1145,7 @@ const char* const s_readableStreamInternalsOnDrainDirectStreamCode =
const JSC::ConstructAbility s_readableStreamInternalsInitializeArrayBufferStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const JSC::ConstructorKind s_readableStreamInternalsInitializeArrayBufferStreamCodeConstructorKind = JSC::ConstructorKind::None;
-const int s_readableStreamInternalsInitializeArrayBufferStreamCodeLength = 930;
+const int s_readableStreamInternalsInitializeArrayBufferStreamCodeLength = 933;
static const JSC::Intrinsic s_readableStreamInternalsInitializeArrayBufferStreamCodeIntrinsic = JSC::NoIntrinsic;
const char* const s_readableStreamInternalsInitializeArrayBufferStreamCode =
"(function (underlyingSource, highWaterMark)\n" \
@@ -1066,7 +1162,7 @@ const char* const s_readableStreamInternalsInitializeArrayBufferStreamCode =
"\n" \
" var controller = {\n" \
" @underlyingSource: underlyingSource,\n" \
- " @pull: @onPullDirectStream,\n" \
+ " @pull: @onPullArrayBufferSink,\n" \
" @controlledReadableStream: this,\n" \
" @sink: sink,\n" \
" close: @onCloseDirectStream,\n" \
diff --git a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h
index a17ea08bb..7332fc125 100644
--- a/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h
+++ b/src/bun.js/builtins/cpp/ReadableStreamInternalsBuiltins.h
@@ -147,10 +147,10 @@ extern const char* const s_readableStreamInternalsIsReadableStreamDefaultControl
extern const int s_readableStreamInternalsIsReadableStreamDefaultControllerCodeLength;
extern const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamDefaultControllerCodeConstructAbility;
extern const JSC::ConstructorKind s_readableStreamInternalsIsReadableStreamDefaultControllerCodeConstructorKind;
-extern const char* const s_readableStreamInternalsAssignDirectStreamCode;
-extern const int s_readableStreamInternalsAssignDirectStreamCodeLength;
-extern const JSC::ConstructAbility s_readableStreamInternalsAssignDirectStreamCodeConstructAbility;
-extern const JSC::ConstructorKind s_readableStreamInternalsAssignDirectStreamCodeConstructorKind;
+extern const char* const s_readableStreamInternalsAssignToStreamCode;
+extern const int s_readableStreamInternalsAssignToStreamCodeLength;
+extern const JSC::ConstructAbility s_readableStreamInternalsAssignToStreamCodeConstructAbility;
+extern const JSC::ConstructorKind s_readableStreamInternalsAssignToStreamCodeConstructorKind;
extern const char* const s_readableStreamInternalsHandleDirectStreamErrorCode;
extern const int s_readableStreamInternalsHandleDirectStreamErrorCodeLength;
extern const JSC::ConstructAbility s_readableStreamInternalsHandleDirectStreamErrorCodeConstructAbility;
@@ -159,10 +159,10 @@ extern const char* const s_readableStreamInternalsHandleDirectStreamErrorRejectC
extern const int s_readableStreamInternalsHandleDirectStreamErrorRejectCodeLength;
extern const JSC::ConstructAbility s_readableStreamInternalsHandleDirectStreamErrorRejectCodeConstructAbility;
extern const JSC::ConstructorKind s_readableStreamInternalsHandleDirectStreamErrorRejectCodeConstructorKind;
-extern const char* const s_readableStreamInternalsOnPullDirectStreamCode;
-extern const int s_readableStreamInternalsOnPullDirectStreamCodeLength;
-extern const JSC::ConstructAbility s_readableStreamInternalsOnPullDirectStreamCodeConstructAbility;
-extern const JSC::ConstructorKind s_readableStreamInternalsOnPullDirectStreamCodeConstructorKind;
+extern const char* const s_readableStreamInternalsOnPullArrayBufferSinkCode;
+extern const int s_readableStreamInternalsOnPullArrayBufferSinkCodeLength;
+extern const JSC::ConstructAbility s_readableStreamInternalsOnPullArrayBufferSinkCodeConstructAbility;
+extern const JSC::ConstructorKind s_readableStreamInternalsOnPullArrayBufferSinkCodeConstructorKind;
extern const char* const s_readableStreamInternalsNoopDoneFunctionCode;
extern const int s_readableStreamInternalsNoopDoneFunctionCodeLength;
extern const JSC::ConstructAbility s_readableStreamInternalsNoopDoneFunctionCodeConstructAbility;
@@ -286,10 +286,10 @@ extern const JSC::ConstructorKind s_readableStreamInternalsLazyLoadStreamCodeCon
macro(isReadableStream, readableStreamInternalsIsReadableStream, 1) \
macro(isReadableStreamDefaultReader, readableStreamInternalsIsReadableStreamDefaultReader, 1) \
macro(isReadableStreamDefaultController, readableStreamInternalsIsReadableStreamDefaultController, 1) \
- macro(assignDirectStream, readableStreamInternalsAssignDirectStream, 0) \
+ macro(assignToStream, readableStreamInternalsAssignToStream, 2) \
macro(handleDirectStreamError, readableStreamInternalsHandleDirectStreamError, 1) \
macro(handleDirectStreamErrorReject, readableStreamInternalsHandleDirectStreamErrorReject, 1) \
- macro(onPullDirectStream, readableStreamInternalsOnPullDirectStream, 1) \
+ macro(onPullArrayBufferSink, readableStreamInternalsOnPullArrayBufferSink, 1) \
macro(noopDoneFunction, readableStreamInternalsNoopDoneFunction, 0) \
macro(onReadableStreamDirectControllerClosed, readableStreamInternalsOnReadableStreamDirectControllerClosed, 1) \
macro(onCloseDirectStream, readableStreamInternalsOnCloseDirectStream, 1) \
@@ -340,10 +340,10 @@ extern const JSC::ConstructorKind s_readableStreamInternalsLazyLoadStreamCodeCon
#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ISREADABLESTREAM 1
#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ISREADABLESTREAMDEFAULTREADER 1
#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ISREADABLESTREAMDEFAULTCONTROLLER 1
-#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ASSIGNDIRECTSTREAM 1
+#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ASSIGNTOSTREAM 1
#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_HANDLEDIRECTSTREAMERROR 1
#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_HANDLEDIRECTSTREAMERRORREJECT 1
-#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ONPULLDIRECTSTREAM 1
+#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ONPULLARRAYBUFFERSINK 1
#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_NOOPDONEFUNCTION 1
#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ONREADABLESTREAMDIRECTCONTROLLERCLOSED 1
#define WEBCORE_BUILTIN_READABLESTREAMINTERNALS_ONCLOSEDIRECTSTREAM 1
@@ -395,10 +395,10 @@ extern const JSC::ConstructorKind s_readableStreamInternalsLazyLoadStreamCodeCon
macro(readableStreamInternalsIsReadableStreamCode, isReadableStream, ASCIILiteral(), s_readableStreamInternalsIsReadableStreamCodeLength) \
macro(readableStreamInternalsIsReadableStreamDefaultReaderCode, isReadableStreamDefaultReader, ASCIILiteral(), s_readableStreamInternalsIsReadableStreamDefaultReaderCodeLength) \
macro(readableStreamInternalsIsReadableStreamDefaultControllerCode, isReadableStreamDefaultController, ASCIILiteral(), s_readableStreamInternalsIsReadableStreamDefaultControllerCodeLength) \
- macro(readableStreamInternalsAssignDirectStreamCode, assignDirectStream, ASCIILiteral(), s_readableStreamInternalsAssignDirectStreamCodeLength) \
+ macro(readableStreamInternalsAssignToStreamCode, assignToStream, ASCIILiteral(), s_readableStreamInternalsAssignToStreamCodeLength) \
macro(readableStreamInternalsHandleDirectStreamErrorCode, handleDirectStreamError, ASCIILiteral(), s_readableStreamInternalsHandleDirectStreamErrorCodeLength) \
macro(readableStreamInternalsHandleDirectStreamErrorRejectCode, handleDirectStreamErrorReject, ASCIILiteral(), s_readableStreamInternalsHandleDirectStreamErrorRejectCodeLength) \
- macro(readableStreamInternalsOnPullDirectStreamCode, onPullDirectStream, ASCIILiteral(), s_readableStreamInternalsOnPullDirectStreamCodeLength) \
+ macro(readableStreamInternalsOnPullArrayBufferSinkCode, onPullArrayBufferSink, ASCIILiteral(), s_readableStreamInternalsOnPullArrayBufferSinkCodeLength) \
macro(readableStreamInternalsNoopDoneFunctionCode, noopDoneFunction, ASCIILiteral(), s_readableStreamInternalsNoopDoneFunctionCodeLength) \
macro(readableStreamInternalsOnReadableStreamDirectControllerClosedCode, onReadableStreamDirectControllerClosed, ASCIILiteral(), s_readableStreamInternalsOnReadableStreamDirectControllerClosedCodeLength) \
macro(readableStreamInternalsOnCloseDirectStreamCode, onCloseDirectStream, ASCIILiteral(), s_readableStreamInternalsOnCloseDirectStreamCodeLength) \
@@ -426,7 +426,7 @@ extern const JSC::ConstructorKind s_readableStreamInternalsLazyLoadStreamCodeCon
#define WEBCORE_FOREACH_READABLESTREAMINTERNALS_BUILTIN_FUNCTION_NAME(macro) \
macro(acquireReadableStreamDefaultReader) \
- macro(assignDirectStream) \
+ macro(assignToStream) \
macro(createReadableStreamController) \
macro(handleDirectStreamError) \
macro(handleDirectStreamErrorReject) \
@@ -440,7 +440,7 @@ extern const JSC::ConstructorKind s_readableStreamInternalsLazyLoadStreamCodeCon
macro(noopDoneFunction) \
macro(onCloseDirectStream) \
macro(onDrainDirectStream) \
- macro(onPullDirectStream) \
+ macro(onPullArrayBufferSink) \
macro(onReadableStreamDirectControllerClosed) \
macro(pipeToClosingMustBePropagatedBackward) \
macro(pipeToClosingMustBePropagatedForward) \
diff --git a/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h b/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h
index cefa5fd8c..57b4f2936 100644
--- a/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h
+++ b/src/bun.js/builtins/cpp/WebCoreJSBuiltinInternals.h
@@ -83,6 +83,17 @@ namespace Zig { class GlobalObject; }
namespace Zig { class GlobalObject; }
namespace Zig { class GlobalObject; }
namespace Zig { class GlobalObject; }
+namespace Zig { class GlobalObject; }
+namespace Zig { class GlobalObject; }
+namespace Zig { class GlobalObject; }
+namespace Zig { class GlobalObject; }
+namespace Zig { class GlobalObject; }
+namespace Zig { class GlobalObject; }
+namespace Zig { class GlobalObject; }
+namespace Zig { class GlobalObject; }
+namespace Zig { class GlobalObject; }
+namespace Zig { class GlobalObject; }
+namespace Zig { class GlobalObject; }
/*
* Copyright (c) 2015 Igalia
* Copyright (c) 2015 Igalia S.L.