Changeset 190198 in webkit
- Timestamp:
- Sep 24, 2015 2:18:15 AM (9 years ago)
- Location:
- trunk/Source
- Files:
-
- 1 added
- 1 deleted
- 37 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r190188 r190198 1 2015-09-24 Youenn Fablet <youenn.fablet@crf.canon.fr> 2 3 [Streams API] Add support for JS builtins constructor 4 https://bugs.webkit.org/show_bug.cgi?id=149497 5 6 Reviewed by Darin Adler. 7 8 * runtime/JSFunction.h: exporting createBuiltinFunction. 9 1 10 2015-09-23 Saam barati <sbarati@apple.com> 2 11 -
trunk/Source/JavaScriptCore/runtime/JSFunction.h
r189124 r190198 76 76 #endif 77 77 78 static JSFunction* createBuiltinFunction(VM&, FunctionExecutable*, JSGlobalObject*);78 JS_EXPORT_PRIVATE static JSFunction* createBuiltinFunction(VM&, FunctionExecutable*, JSGlobalObject*); 79 79 static JSFunction* createBuiltinFunction(VM&, FunctionExecutable*, JSGlobalObject*, const String& name); 80 80 -
trunk/Source/WebCore/CMakeLists.txt
r190181 r190198 1103 1103 bindings/js/JSCharacterDataCustom.cpp 1104 1104 bindings/js/JSCommandLineAPIHostCustom.cpp 1105 bindings/js/JSCountQueuingStrategyCustom.cpp1106 1105 bindings/js/JSCryptoAlgorithmBuilder.cpp 1107 1106 bindings/js/JSCryptoAlgorithmDictionary.cpp … … 3343 3342 3344 3343 set(WEBCORE_JS_BUILTINS 3344 ${WEBCORE_DIR}/Modules/streams/CountQueuingStrategy.js 3345 3345 ${WEBCORE_DIR}/Modules/streams/ReadableStream.js 3346 3346 ) -
trunk/Source/WebCore/ChangeLog
r190195 r190198 1 2015-09-24 Youenn Fablet <youenn.fablet@crf.canon.fr> 2 3 [Streams API] Add support for JS builtins constructor 4 https://bugs.webkit.org/show_bug.cgi?id=149497 5 6 Reviewed by Darin Adler. 7 8 Covered by existing tests. 9 10 Making CountQueuingStrategy fully JS built-in implemented. 11 Adding support for calling a JS builtin initialization function just after creating the JSXX object. 12 This JS function must be named initializeXX and be in XX.Js file. 13 The JSBuiltinConstructor keyword is added to the binding generator. 14 15 * CMakeLists.txt: Adding CountQueuingStrategy.js, removing JSCountQueuingStrategyCustom.cpp. 16 * DerivedSources.cpp: Ditto. 17 * DerivedSources.make: Ditto. 18 * Modules/streams/CountQueuingStrategy.h: Making CountQueuingStrategy a dummy class. 19 (WebCore::CountQueuingStrategy::create): 20 (WebCore::CountQueuingStrategy::~CountQueuingStrategy): 21 (WebCore::CountQueuingStrategy::CountQueuingStrategy): 22 * Modules/streams/CountQueuingStrategy.idl: 23 * Modules/streams/CountQueuingStrategy.js: Added. 24 (size): 25 (initializeCountQueuingStrategy): 26 * WebCore.vcxproj/WebCore.vcxproj: Removing JSCountQueuingStrategyCustom.cpp. 27 * WebCore.vcxproj/WebCore.vcxproj.filters: Ditto. 28 * WebCore.xcodeproj/project.pbxproj: Ditto. 29 * bindings/js/JSBindingsAllInOne.cpp: Ditto. 30 * bindings/js/JSCountQueuingStrategyCustom.cpp: Removed. 31 * bindings/js/JSDOMBinding.cpp: Adding support for DOMConstructorJSBuiltinObject. 32 (WebCore::callInitializeFunction): 33 (WebCore::DOMConstructorJSBuiltinObject::visitChildren): 34 * bindings/js/JSDOMBinding.h: Diitto. 35 (WebCore::createFromJSBuiltin): 36 (WebCore::DOMConstructorJSBuiltinObject::DOMConstructorJSBuiltinObject): 37 * bindings/js/WebCoreJSClientData.h: Adding support for CQS builtins functions. 38 (WebCore::WebCoreJSClientData::WebCoreJSClientData): 39 (WebCore::WebCoreJSClientData::countQueuingStrategyBuiltins): 40 * bindings/scripts/CodeGeneratorJS.pm: 41 (GetJSBuiltinFunctionName): 42 (GetFunctionName): 43 (InstanceNeedsVisitChildren): Generating visitChildren method in case of JSBuiltinConstructor. 44 (GetParentConstructorClassName): Refactoring to make JSXXConstructor derive from DOMConstructorJSBuiltinObject in case of JSBuiltinConstructor. 45 (GenerateConstructorDeclaration): Ditto. 46 (GenerateConstructorDefinition): Generate specific constructor in case of JSBuiltinConstructor. 47 (GenerateConstructorHelperMethods): Refactoring to use Base class. 48 (IsConstructable): Ditto. 49 (ConstructorHasProperties): Deleted. 50 * bindings/scripts/IDLAttributes.txt: Adding JSBuiltinConstructor. 51 * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: 52 (WebCore::JSTestActiveDOMObjectConstructor::JSTestActiveDOMObjectConstructor): 53 * bindings/scripts/test/JS/JSTestCallback.cpp: 54 (WebCore::JSTestCallbackConstructor::JSTestCallbackConstructor): 55 * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp: 56 (WebCore::JSTestCustomConstructorWithNoInterfaceObjectConstructor::JSTestCustomConstructorWithNoInterfaceObjectConstructor): 57 * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp: 58 (WebCore::JSTestCustomNamedGetterConstructor::JSTestCustomNamedGetterConstructor): 59 * bindings/scripts/test/JS/JSTestEventConstructor.cpp: 60 (WebCore::JSTestEventConstructorConstructor::JSTestEventConstructorConstructor): 61 * bindings/scripts/test/JS/JSTestEventTarget.cpp: 62 (WebCore::JSTestEventTargetConstructor::JSTestEventTargetConstructor): 63 * bindings/scripts/test/JS/JSTestException.cpp: 64 (WebCore::JSTestExceptionConstructor::JSTestExceptionConstructor): 65 * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: 66 (WebCore::JSTestGenerateIsReachableConstructor::JSTestGenerateIsReachableConstructor): 67 * bindings/scripts/test/JS/JSTestInterface.cpp: 68 (WebCore::JSTestInterfaceConstructor::JSTestInterfaceConstructor): 69 * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: 70 (WebCore::JSTestMediaQueryListListenerConstructor::JSTestMediaQueryListListenerConstructor): 71 * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: 72 (WebCore::JSTestNamedConstructorConstructor::JSTestNamedConstructorConstructor): 73 (WebCore::JSTestNamedConstructorNamedConstructor::JSTestNamedConstructorNamedConstructor): 74 * bindings/scripts/test/JS/JSTestNode.cpp: 75 (WebCore::JSTestNodeConstructor::JSTestNodeConstructor): 76 * bindings/scripts/test/JS/JSTestNondeterministic.cpp: 77 (WebCore::JSTestNondeterministicConstructor::JSTestNondeterministicConstructor): 78 * bindings/scripts/test/JS/JSTestObj.cpp: 79 (WebCore::JSTestObjConstructor::JSTestObjConstructor): 80 * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: 81 (WebCore::JSTestOverloadedConstructorsConstructor::JSTestOverloadedConstructorsConstructor): 82 * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp: 83 (WebCore::JSTestOverrideBuiltinsConstructor::JSTestOverrideBuiltinsConstructor): 84 * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: 85 (WebCore::JSTestSerializedScriptValueInterfaceConstructor::JSTestSerializedScriptValueInterfaceConstructor): 86 * bindings/scripts/test/JS/JSTestTypedefs.cpp: 87 (WebCore::JSTestTypedefsConstructor::JSTestTypedefsConstructor): 88 * bindings/scripts/test/JS/JSattribute.cpp: 89 (WebCore::JSattributeConstructor::JSattributeConstructor): 90 * bindings/scripts/test/JS/JSreadonly.cpp: 91 (WebCore::JSreadonlyConstructor::JSreadonlyConstructor): 92 1 93 2015-09-23 Chris Dumez <cdumez@apple.com> 2 94 -
trunk/Source/WebCore/DerivedSources.cpp
r190155 r190198 43 43 #include "JSCanvasRenderingContext2D.cpp" 44 44 #if ENABLE(STREAMS_API) 45 #include "CountQueuingStrategyBuiltins.cpp" 45 46 #include "JSCountQueuingStrategy.cpp" 46 47 #endif -
trunk/Source/WebCore/DerivedSources.make
r190178 r190198 1251 1251 1252 1252 WEBCORE_JS_BUILTINS = \ 1253 $(WebCore)/Modules/streams/ReadableStream.js 1253 $(WebCore)/Modules/streams/CountQueuingStrategy.js \ 1254 $(WebCore)/Modules/streams/ReadableStream.js \ 1255 # 1254 1256 1255 1257 all : $(WEBCORE_JS_BUILTINS:%.js=%Builtins.cpp) -
trunk/Source/WebCore/Modules/streams/CountQueuingStrategy.h
r188127 r190198 34 34 35 35 #include <wtf/RefCounted.h> 36 #include <wtf/RefPtr.h> 36 37 37 38 namespace WebCore { 38 39 39 // CountQueuingStrategy i mplements a strategy for streams that counts chunks one by one according to the spec. See40 // https://streams.spec.whatwg.org/#cqs-class40 // CountQueuingStrategy is implemented as JS builtin. 41 // This class only serves to integrate with WebIDL auto-generated code. 41 42 class CountQueuingStrategy : public RefCounted<CountQueuingStrategy> { 42 43 public: 44 static Ref<CountQueuingStrategy> create() { return adoptRef(*new CountQueuingStrategy); } 45 43 46 virtual ~CountQueuingStrategy() { } 44 47 45 inline static int size() { return 1; } 48 private: 49 CountQueuingStrategy() { } 46 50 }; 47 51 -
trunk/Source/WebCore/Modules/streams/CountQueuingStrategy.idl
r188127 r190198 29 29 30 30 [ 31 CustomConstructor(any properties),31 JSBuiltinConstructor, 32 32 Conditional=STREAMS_API, 33 33 ] interface CountQueuingStrategy { 34 [ CustomBinding] double size();34 [JSBuiltin] double size(); 35 35 }; -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
r190169 r190198 3947 3947 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild> 3948 3948 </ClCompile> 3949 <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\CountQueuingStrategyBuiltins.cpp"> 3950 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> 3951 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> 3952 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild> 3953 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild> 3954 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild> 3955 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild> 3956 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> 3957 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> 3958 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild> 3959 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild> 3960 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild> 3961 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild> 3962 </ClCompile> 3949 3963 <ClCompile Include="$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\ReadableStreamBuiltins.cpp"> 3950 3964 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> … … 17378 17392 </ClCompile> 17379 17393 <ClCompile Include="..\bindings\js\CallbackFunction.cpp"> 17380 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>17381 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>17382 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>17383 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>17384 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>17385 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>17386 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>17387 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>17388 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>17389 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>17390 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>17391 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>17392 </ClCompile>17393 <ClCompile Include="..\bindings\js\JSCountQueuingStrategyCustom.cpp">17394 17394 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> 17395 17395 <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters
r190120 r190198 4246 4246 <Filter>bindings\js</Filter> 4247 4247 </ClCompile> 4248 <ClCompile Include="..\bindings\js\JSCountQueuingStrategyCustom.cpp">4249 <Filter>bindings\js</Filter>4250 </ClCompile>4251 4248 <ClCompile Include="..\bindings\js\JSCSSRuleCustom.cpp"> 4252 4249 <Filter>bindings\js</Filter> -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r190178 r190198 620 620 148AFDA50AF58360008CC700 /* ExceptionHandlers.h in Headers */ = {isa = PBXBuildFile; fileRef = 148AFDA30AF58360008CC700 /* ExceptionHandlers.h */; settings = {ATTRIBUTES = (Private, ); }; }; 621 621 148AFDA60AF58360008CC700 /* ExceptionHandlers.mm in Sources */ = {isa = PBXBuildFile; fileRef = 148AFDA40AF58360008CC700 /* ExceptionHandlers.mm */; }; 622 148B4FF81B69042100C954E4 /* JSCountQueuingStrategyCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 148B4FF71B69042100C954E4 /* JSCountQueuingStrategyCustom.cpp */; };623 622 148B4FFE1B6904AA00C954E4 /* CountQueuingStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 148B4FFD1B6904AA00C954E4 /* CountQueuingStrategy.h */; }; 624 623 14947FFD12F80CD200A0F631 /* DocumentOrderedMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14947FFB12F80CD200A0F631 /* DocumentOrderedMap.cpp */; }; … … 2597 2596 7C4902A218B825F8007D9298 /* DOMWheelEventInternal.h in Copy Generated Headers */ = {isa = PBXBuildFile; fileRef = 85989DCA0ACC8BBD00A0BC51 /* DOMWheelEventInternal.h */; }; 2598 2597 7C4C96DC1AD4483500365A50 /* JSReadableStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4C96D81AD4483500365A50 /* JSReadableStream.cpp */; }; 2598 7C4C96DC1AD4483500365A52 /* CountQueuingStrategyBuiltins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4C96D81AD4483500365A52 /* CountQueuingStrategyBuiltins.cpp */; }; 2599 2599 7C4C96DC1AD4483500365A51 /* ReadableStreamBuiltins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C4C96D81AD4483500365A51 /* ReadableStreamBuiltins.cpp */; }; 2600 2600 7C4C96DD1AD4483500365A50 /* JSReadableStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C4C96D91AD4483500365A50 /* JSReadableStream.h */; }; … … 7797 7797 148AFDA30AF58360008CC700 /* ExceptionHandlers.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ExceptionHandlers.h; sourceTree = "<group>"; }; 7798 7798 148AFDA40AF58360008CC700 /* ExceptionHandlers.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ExceptionHandlers.mm; sourceTree = "<group>"; }; 7799 148B4FF71B69042100C954E4 /* JSCountQueuingStrategyCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCountQueuingStrategyCustom.cpp; sourceTree = "<group>"; };7800 7799 148B4FFD1B6904AA00C954E4 /* CountQueuingStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CountQueuingStrategy.h; sourceTree = "<group>"; }; 7801 7800 148B4FFF1B6904C500C954E4 /* CountQueuingStrategy.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CountQueuingStrategy.idl; sourceTree = "<group>"; }; … … 9988 9987 7C48A6D2191C9D8E00026674 /* WebKitNamespace.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebKitNamespace.idl; sourceTree = "<group>"; }; 9989 9988 7C4C96D81AD4483500365A50 /* JSReadableStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSReadableStream.cpp; sourceTree = "<group>"; }; 9989 7C4C96D81AD4483500365A52 /* CountQueuingStrategyBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CountQueuingStrategyBuiltins.cpp; sourceTree = "<group>"; }; 9990 9990 7C4C96D81AD4483500365A51 /* ReadableStreamBuiltins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReadableStreamBuiltins.cpp; sourceTree = "<group>"; }; 9991 9991 7C4C96D91AD4483500365A50 /* JSReadableStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSReadableStream.h; sourceTree = "<group>"; }; … … 16216 16216 isa = PBXGroup; 16217 16217 children = ( 16218 7C4C96D81AD4483500365A52 /* CountQueuingStrategyBuiltins.cpp */, 16218 16219 7C4C96D81AD4483500365A51 /* ReadableStreamBuiltins.cpp */, 16219 16220 7C4C96D81AD4483500365A50 /* JSReadableStream.cpp */, … … 21629 21630 7C33F3581B4A044800502CAF /* JSCharacterDataCustom.cpp */, 21630 21631 A584FE371864DAC100843B10 /* JSCommandLineAPIHostCustom.cpp */, 21631 148B4FF71B69042100C954E4 /* JSCountQueuingStrategyCustom.cpp */,21632 21632 209B456A16796A7E00E54E4E /* JSCryptoCustom.cpp */, 21633 21633 E157A8E618184C67009F821D /* JSCryptoKeyCustom.cpp */, … … 28894 28894 A871DC260A15205700B12A68 /* HTMLStyleElement.cpp in Sources */, 28895 28895 310D71951B335C9D009C7B73 /* ThemeCocoa.cpp in Sources */, 28896 148B4FF81B69042100C954E4 /* JSCountQueuingStrategyCustom.cpp in Sources */,28897 28896 D3D4E972130C7CFE007BA540 /* HTMLSummaryElement.cpp in Sources */, 28898 28897 A871DB320A150BD600B12A68 /* HTMLTableCaptionElement.cpp in Sources */, … … 29415 29414 B658FFA11522EF3A00DD5595 /* JSRadioNodeList.cpp in Sources */, 29416 29415 65DF320109D1CC60000BE325 /* JSRange.cpp in Sources */, 29416 7C4C96DC1AD4483500365A52 /* CountQueuingStrategyBuiltins.cpp in Sources */, 29417 29417 7C4C96DC1AD4483500365A51 /* ReadableStreamBuiltins.cpp in Sources */, 29418 29418 7C4C96DC1AD4483500365A50 /* JSReadableStream.cpp in Sources */, -
trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp
r190030 r190198 35 35 #include "JSAudioTrackListCustom.cpp" 36 36 #include "JSBlobCustom.cpp" 37 #if ENABLE(STREAMS_API)38 #include "JSCountQueuingStrategyCustom.cpp"39 #endif40 37 #include "JSCSSRuleCustom.cpp" 41 38 #include "JSCSSRuleListCustom.cpp" -
trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp
r186231 r190198 647 647 } 648 648 649 void callFunctionWithCurrentArguments(JSC::ExecState& state, JSC::JSObject& thisObject, JSC::JSFunction& function) 650 { 651 JSC::CallData callData; 652 JSC::CallType callType = JSC::getCallData(&function, callData); 653 ASSERT(callType != CallTypeNone); 654 655 JSC::MarkedArgumentBuffer arguments; 656 for (unsigned i = 0; i < state.argumentCount(); ++i) 657 arguments.append(state.uncheckedArgument(i)); 658 JSC::call(&state, &function, callType, callData, &thisObject, arguments); 659 } 660 661 void DOMConstructorJSBuiltinObject::visitChildren(JSC::JSCell* cell, JSC::SlotVisitor& visitor) 662 { 663 auto* thisObject = jsCast<DOMConstructorJSBuiltinObject*>(cell); 664 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 665 Base::visitChildren(thisObject, visitor); 666 visitor.append(&thisObject->m_initializeFunction); 667 } 668 649 669 } // namespace WebCore -
trunk/Source/WebCore/bindings/js/JSDOMBinding.h
r190093 r190198 46 46 #include <runtime/TypedArrayInlines.h> 47 47 #include <runtime/TypedArrays.h> 48 #include <runtime/WriteBarrier.h> 48 49 #include <wtf/Forward.h> 49 50 #include <wtf/GetPtr.h> … … 53 54 namespace JSC { 54 55 class HashEntry; 56 class JSFunction; 55 57 } 56 58 … … 84 86 WEBCORE_EXPORT JSC::EncodedJSValue throwThisTypeError(JSC::ExecState&, const char* interfaceName, const char* functionName); 85 87 88 void callFunctionWithCurrentArguments(JSC::ExecState&, JSC::JSObject& thisObject, JSC::JSFunction&); 89 90 template<typename WrapperClass, typename DOMClass> inline JSC::EncodedJSValue createFromJSBuiltin(JSC::ExecState& state, JSC::JSFunction& initializeFunction, JSDOMGlobalObject& globalObject) 91 { 92 JSC::JSObject* object = asObject(toJS(&state, &globalObject, DOMClass::create())); 93 callFunctionWithCurrentArguments(state, *object, initializeFunction); 94 return JSC::JSValue::encode(object); 95 } 96 86 97 // Base class for all constructor objects in the JSC bindings. 87 98 class DOMConstructorObject : public JSDOMWrapper { … … 100 111 { 101 112 } 113 }; 114 115 class DOMConstructorJSBuiltinObject : public DOMConstructorObject { 116 public: 117 typedef DOMConstructorObject Base; 118 119 protected: 120 DOMConstructorJSBuiltinObject(JSC::Structure* structure, JSDOMGlobalObject* globalObject) 121 : DOMConstructorObject(structure, globalObject) { } 122 123 static void visitChildren(JSC::JSCell*, JSC::SlotVisitor&); 124 125 JSC::JSFunction* initializeFunction() { return m_initializeFunction.get(); } 126 void setInitializeFunction(JSC::VM& vm, JSC::JSFunction& function) { m_initializeFunction.set(vm, this, &function); } 127 128 private: 129 JSC::WriteBarrier<JSC::JSFunction> m_initializeFunction; 102 130 }; 103 131 -
trunk/Source/WebCore/bindings/js/WebCoreJSClientData.h
r190155 r190198 23 23 #define WebCoreJSClientData_h 24 24 25 #include "CountQueuingStrategyBuiltinsWrapper.h" 25 26 #include "DOMWrapperWorld.h" 26 27 #include "ReadableStreamBuiltinsWrapper.h" … … 37 38 38 39 public: 39 WebCoreJSClientData(JSC::VM& vm)40 explicit WebCoreJSClientData(JSC::VM& vm) 40 41 #if ENABLE(STREAMS_API) 41 42 : m_readableStreamBuiltins(&vm) 43 , m_countQueuingStrategyBuiltins(&vm) 42 44 #endif 43 45 { … … 78 80 #if ENABLE(STREAMS_API) 79 81 ReadableStreamBuiltinsWrapper& readableStreamBuiltins() { return m_readableStreamBuiltins; } 82 CountQueuingStrategyBuiltinsWrapper& countQueuingStrategyBuiltins() { return m_countQueuingStrategyBuiltins; } 80 83 #endif 81 84 … … 86 89 #if ENABLE(STREAMS_API) 87 90 ReadableStreamBuiltinsWrapper m_readableStreamBuiltins; 91 CountQueuingStrategyBuiltinsWrapper m_countQueuingStrategyBuiltins; 88 92 #endif 89 93 }; -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
r190190 r190198 546 546 } 547 547 548 sub GetJSBuiltinFunctionName 549 { 550 my ($className, $functionName) = @_; 551 return $codeGenerator->WK_lcfirst(substr $className, 2) . $codeGenerator->WK_ucfirst($functionName) . "CodeGenerator"; 552 } 553 548 554 sub GetFunctionName 549 555 { … … 556 562 557 563 if ($function->signature->extendedAttributes->{"JSBuiltin"}) { 558 return $codeGenerator->WK_lcfirst($scopeName) . $codeGenerator->WK_ucfirst($function->signature->name) . "CodeGenerator";564 return GetJSBuiltinFunctionName($className, $function->signature->name); 559 565 } 560 566 … … 784 790 || $interface->extendedAttributes->{"EventTarget"} 785 791 || $interface->name eq "EventTarget" 786 || $interface->extendedAttributes->{"ReportExtraMemoryCost"}; 792 || $interface->extendedAttributes->{"ReportExtraMemoryCost"} 793 || $interface->extendedAttributes->{"JSBuiltinConstructor"}; 787 794 } 788 795 … … 4532 4539 } 4533 4540 4541 sub GetParentConstructorClassName 4542 { 4543 my $interface = shift; 4544 if ($interface->extendedAttributes->{"JSBuiltinConstructor"}) { 4545 return "DOMConstructorJSBuiltinObject"; 4546 } 4547 return "DOMConstructorObject"; 4548 4549 } 4550 4534 4551 sub GenerateConstructorDeclaration 4535 4552 { … … 4540 4557 4541 4558 my $constructorClassName = "${className}Constructor"; 4542 4543 push(@$outputArray, "class ${constructorClassName} : public DOMConstructorObject {\n"); 4559 my $parentClassName = GetParentConstructorClassName($interface); 4560 4561 push(@$outputArray, "class ${constructorClassName} : public " . $parentClassName . " {\n"); 4544 4562 push(@$outputArray, "private:\n"); 4545 4563 push(@$outputArray, " ${constructorClassName}(JSC::Structure*, JSDOMGlobalObject*);\n"); … … 4547 4565 4548 4566 push(@$outputArray, "public:\n"); 4549 push(@$outputArray, " typedef DOMConstructorObjectBase;\n");4567 push(@$outputArray, " typedef " . $parentClassName . " Base;\n"); 4550 4568 push(@$outputArray, " static $constructorClassName* create(JSC::VM& vm, JSC::Structure* structure, JSDOMGlobalObject* globalObject)\n"); 4551 4569 push(@$outputArray, " {\n"); … … 4769 4787 4770 4788 END 4789 } elsif ($interface->extendedAttributes->{"JSBuiltinConstructor"}) { 4790 push(@$outputArray, "JSC::EncodedJSValue JSC_HOST_CALL ${constructorClassName}::construct${className}(JSC::ExecState* state)\n"); 4791 push(@$outputArray, "{\n"); 4792 4793 push(@$outputArray, " auto* castedThis = jsCast<${constructorClassName}*>(state->callee());\n"); 4794 push(@$outputArray, " return createFromJSBuiltin<${className}, ${interfaceName}>(*state, *castedThis->initializeFunction(), *castedThis->globalObject());\n"); 4795 4796 push(@$outputArray, "}\n\n"); 4771 4797 } elsif (!HasCustomConstructor($interface) && (!$interface->extendedAttributes->{"NamedConstructor"} || $generatingNamedConstructor)) { 4772 4798 my $overloadedIndexString = ""; … … 4883 4909 4884 4910 my $constructorClassName = $generatingNamedConstructor ? "${className}NamedConstructor" : "${className}Constructor"; 4885 my $constructorParentClassName = $generatingNamedConstructor ? "DOMConstructorWithDocument" : "DOMConstructorObject";4886 4911 my $leastConstructorLength = 0; 4887 4912 if ($codeGenerator->IsConstructorTemplate($interface, "Event")) { … … 4902 4927 4903 4928 push(@$outputArray, "${constructorClassName}::${constructorClassName}(Structure* structure, JSDOMGlobalObject* globalObject)\n"); 4904 push(@$outputArray, " : ${constructorParentClassName}(structure, globalObject)\n");4929 push(@$outputArray, " : Base(structure, globalObject)\n"); 4905 4930 push(@$outputArray, "{\n"); 4906 4931 push(@$outputArray, "}\n\n"); … … 4935 4960 if (ConstructorHasProperties($interface)) { 4936 4961 push(@$outputArray, " reifyStaticProperties(vm, ${className}ConstructorTableValues, *this);\n"); 4962 } 4963 4964 if ($interface->extendedAttributes->{"JSBuiltinConstructor"}) { 4965 my $initializeFunctionName = GetJSBuiltinFunctionName(${className}, "initialize" . ${interfaceName}); 4966 push(@$outputArray, " setInitializeFunction(vm, *JSC::JSFunction::createBuiltinFunction(vm, ${initializeFunctionName}(vm), globalObject));\n"); 4937 4967 } 4938 4968 … … 4997 5027 my $interface = shift; 4998 5028 4999 return HasCustomConstructor($interface) || $interface->extendedAttributes->{"Constructor"} || $interface->extendedAttributes->{"NamedConstructor"} || $interface->extendedAttributes->{"ConstructorTemplate"} ;5029 return HasCustomConstructor($interface) || $interface->extendedAttributes->{"Constructor"} || $interface->extendedAttributes->{"NamedConstructor"} || $interface->extendedAttributes->{"ConstructorTemplate"} || $interface->extendedAttributes->{"JSBuiltinConstructor"}; 5000 5030 } 5001 5031 -
trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt
r190155 r190198 75 75 IsWeakCallback 76 76 JSBuiltin 77 JSBuiltinConstructor 77 78 JSCustomDefineOwnProperty 78 79 JSCustomDefineOwnPropertyOnPrototype -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
r190190 r190198 109 109 110 110 JSTestActiveDOMObjectConstructor::JSTestActiveDOMObjectConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 111 : DOMConstructorObject(structure, globalObject)111 : Base(structure, globalObject) 112 112 { 113 113 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp
r190028 r190198 96 96 97 97 JSTestCallbackConstructor::JSTestCallbackConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 98 : DOMConstructorObject(structure, globalObject)98 : Base(structure, globalObject) 99 99 { 100 100 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp
r190190 r190198 84 84 85 85 JSTestCustomConstructorWithNoInterfaceObjectConstructor::JSTestCustomConstructorWithNoInterfaceObjectConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 86 : DOMConstructorObject(structure, globalObject)86 : Base(structure, globalObject) 87 87 { 88 88 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp
r190190 r190198 104 104 105 105 JSTestCustomNamedGetterConstructor::JSTestCustomNamedGetterConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 106 : DOMConstructorObject(structure, globalObject)106 : Base(structure, globalObject) 107 107 { 108 108 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
r190190 r190198 133 133 134 134 JSTestEventConstructorConstructor::JSTestEventConstructorConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 135 : DOMConstructorObject(structure, globalObject)135 : Base(structure, globalObject) 136 136 { 137 137 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
r190190 r190198 113 113 114 114 JSTestEventTargetConstructor::JSTestEventTargetConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 115 : DOMConstructorObject(structure, globalObject)115 : Base(structure, globalObject) 116 116 { 117 117 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
r190190 r190198 100 100 101 101 JSTestExceptionConstructor::JSTestExceptionConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 102 : DOMConstructorObject(structure, globalObject)102 : Base(structure, globalObject) 103 103 { 104 104 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
r190190 r190198 83 83 84 84 JSTestGenerateIsReachableConstructor::JSTestGenerateIsReachableConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 85 : DOMConstructorObject(structure, globalObject)85 : Base(structure, globalObject) 86 86 { 87 87 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
r190190 r190198 292 292 293 293 JSTestInterfaceConstructor::JSTestInterfaceConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 294 : DOMConstructorObject(structure, globalObject)294 : Base(structure, globalObject) 295 295 { 296 296 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp
r190190 r190198 90 90 91 91 JSTestMediaQueryListListenerConstructor::JSTestMediaQueryListListenerConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 92 : DOMConstructorObject(structure, globalObject)92 : Base(structure, globalObject) 93 93 { 94 94 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
r190190 r190198 111 111 112 112 JSTestNamedConstructorConstructor::JSTestNamedConstructorConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 113 : DOMConstructorObject(structure, globalObject)113 : Base(structure, globalObject) 114 114 { 115 115 } … … 150 150 151 151 JSTestNamedConstructorNamedConstructor::JSTestNamedConstructorNamedConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 152 : DOMConstructorWithDocument(structure, globalObject)152 : Base(structure, globalObject) 153 153 { 154 154 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
r190190 r190198 99 99 100 100 JSTestNodeConstructor::JSTestNodeConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 101 : DOMConstructorObject(structure, globalObject)101 : Base(structure, globalObject) 102 102 { 103 103 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp
r190190 r190198 106 106 107 107 JSTestNondeterministicConstructor::JSTestNondeterministicConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 108 : DOMConstructorObject(structure, globalObject)108 : Base(structure, globalObject) 109 109 { 110 110 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
r190190 r190198 484 484 485 485 JSTestObjConstructor::JSTestObjConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 486 : DOMConstructorObject(structure, globalObject)486 : Base(structure, globalObject) 487 487 { 488 488 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
r190190 r190198 171 171 172 172 JSTestOverloadedConstructorsConstructor::JSTestOverloadedConstructorsConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 173 : DOMConstructorObject(structure, globalObject)173 : Base(structure, globalObject) 174 174 { 175 175 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp
r190190 r190198 106 106 107 107 JSTestOverrideBuiltinsConstructor::JSTestOverrideBuiltinsConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 108 : DOMConstructorObject(structure, globalObject)108 : Base(structure, globalObject) 109 109 { 110 110 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
r190190 r190198 97 97 98 98 JSTestSerializedScriptValueInterfaceConstructor::JSTestSerializedScriptValueInterfaceConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 99 : DOMConstructorObject(structure, globalObject)99 : Base(structure, globalObject) 100 100 { 101 101 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
r190190 r190198 162 162 163 163 JSTestTypedefsConstructor::JSTestTypedefsConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 164 : DOMConstructorObject(structure, globalObject)164 : Base(structure, globalObject) 165 165 { 166 166 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp
r190190 r190198 86 86 87 87 JSattributeConstructor::JSattributeConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 88 : DOMConstructorObject(structure, globalObject)88 : Base(structure, globalObject) 89 89 { 90 90 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp
r190190 r190198 83 83 84 84 JSreadonlyConstructor::JSreadonlyConstructor(Structure* structure, JSDOMGlobalObject* globalObject) 85 : DOMConstructorObject(structure, globalObject)85 : Base(structure, globalObject) 86 86 { 87 87 }
Note: See TracChangeset
for help on using the changeset viewer.