[Streams API] Implement ReadableStream pipeThrough
https://bugs.webkit.org/show_bug.cgi?id=147556
Reviewed by Darin Adler.
Source/JavaScriptCore:
Updating BuiltIns infrastructure to make it reusable from WebCore.
Extracting macros from BuiltinNames and createBuiltinExecutable from BuiltinExecutables.
Updated generate-js-builtins to allow generating builtin CPP/H files in WebCore namespace.
- JavaScriptCore.xcodeproj/project.pbxproj:
- builtins/BuiltinExecutables.cpp:
(JSC::BuiltinExecutables::createDefaultConstructor):
(JSC::BuiltinExecutables::createBuiltinExecutable):
(JSC::createBuiltinExecutable):
(JSC::createExecutableInternal):
- builtins/BuiltinExecutables.h:
- builtins/BuiltinNames.h:
(JSC::BuiltinNames::BuiltinNames): Deleted.
- builtins/BuiltinUtils.h: Extracting code from BuiltinNames and BuiltinExecutables.h.
- bytecode/UnlinkedFunctionExecutable.h:
- generate-js-builtins:
(getFunctions):
(writeIncludeDirectives):
Source/WebCore:
Adding initial support for JS builtins within WebCore.
This patch allows implementing IDL interface methods in JS, by using the new JSBuiltin keyword.
(No support yet for private identifiers, constructors or accessors).
Integration of the built-in executables and names is implemented within WebCoreJSClientData.
Two files are generated for each JS builtin file:
- builtin h/cpp files similar to JSCBuiltins.cpp/.h, generated through WebCore/generate-js-builtins from JavaScriptCore/generate-js-builtins)
- A builtin wrapper file mimicking BuiltinExecutables (generated from WebCore/generate-js-builtins)
Contrary to JSC, each js file is generating its own cpp/h file.
This allows including those files within the JSXX.cpp/.h files generated from the IDL where compilation guard may take effect.
Disabled GObject binding for JSBuiltin methods.
Test: streams/readable-stream-pipeThrough.html
- CMakeLists.txt: Triggering generate-js-builtins for JS files.
- DerivedSources.make: Ditto.
- ForwardingHeaders/builtins/BuiltinUtils.h: Added.
- ForwardingHeaders/bytecode/UnlinkedFunctionExecutable.h: Added.
- ForwardingHeaders/runtime/ConstructAbility.h: Added.
- Modules/streams/ReadableStream.idl: Marking pipeThrough as JS builtin
- Modules/streams/ReadableStream.js: Added.
(pipeThrough):
- bindings/js/JSReadableStreamCustom.cpp:
- bindings/js/WebCoreJSClientData.h: Adding ReadableStreamBuiltinsWrapper to store ReadableStream builtin executable
(WebCore::WebCoreJSClientData::WebCoreJSClientData):
(WebCore::WebCoreJSClientData::readableStreamBuiltins):
(WebCore::initNormalWorldClientData):
- bindings/scripts/CodeGeneratorGObject.pm: Disabled GObject binding for JSBuiltin methods.
- bindings/scripts/CodeGeneratorJS.pm: Adding support for JSBuiltin keyword.
(GetFunctionName):
(GenerateHeader):
(GenerateImplementation):
(GenerateHashTableValueArray):
(ComputeFunctionSpecial):
(UseJSBuiltins):
- bindings/scripts/IDLAttributes.txt: Adding JSBuiltin.
- bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:
(webkit_dom_test_obj_js_builtin_method):
(webkit_dom_test_obj_js_builtin_method_with_args):
- bindings/scripts/test/GObject/WebKitDOMTestObj.h:
- bindings/scripts/test/JS/JSTestObj.cpp:
- bindings/scripts/test/JS/JSTestObj.h:
- bindings/scripts/test/ObjC/DOMTestObj.h:
- bindings/scripts/test/ObjC/DOMTestObj.mm:
(-[DOMTestObj jsBuiltinMethod]):
(-[DOMTestObj jsBuiltinMethodWithArgs:strArg:objArg:]):
- bindings/scripts/test/TestObj.idl:
- generate-js-builtins: Added.
LayoutTests:
Rebased test that is now passing.
Adding new tests to improve pipeThrough coverage.
- streams/readable-stream-pipeThrough-expected.txt: Added.
- streams/readable-stream-pipeThrough.html: Added.
- streams/reference-implementation/brand-checks-expected.txt: