[V8][Performance] Optimize Element.firstElementChild, Element.lastElementChild,
[WebKit-https.git] / Source / WebCore / UseV8.cmake
1 ADD_DEFINITIONS(-DUSING_V8_SHARED)
2 ADD_DEFINITIONS(-DWTF_CHANGES=1)
3
4 LIST(APPEND WebCore_INCLUDE_DIRECTORIES
5     "${WEBCORE_DIR}/bindings/v8"
6     "${WEBCORE_DIR}/bindings/v8/custom"
7     "${WEBCORE_DIR}/bindings/v8/specialization"
8     "${JAVASCRIPTCORE_DIR}/runtime"
9 )
10
11 LIST(APPEND WebCoreTestSupport_INCLUDE_DIRECTORIES
12     "${WEBCORE_DIR}/testing/v8"
13 )
14
15 LIST(APPEND WebCore_IDL_INCLUDES
16     bindings/v8
17 )
18
19 LIST(APPEND WebCore_SOURCES
20     bindings/v8/DOMData.cpp
21     bindings/v8/DOMDataStore.cpp
22     bindings/v8/DOMWrapperWorld.cpp
23     bindings/v8/DateExtension.cpp
24     bindings/v8/IDBBindingUtilities.cpp
25     bindings/v8/IsolatedWorld.cpp
26     bindings/v8/OptionsObject.cpp
27     bindings/v8/PageScriptDebugServer.cpp
28     bindings/v8/RetainedDOMInfo.cpp
29     bindings/v8/ScheduledAction.cpp
30     bindings/v8/ScopedDOMDataStore.cpp
31     bindings/v8/ScriptCachedFrameData.cpp
32     bindings/v8/ScriptCallStackFactory.cpp
33     bindings/v8/ScriptController.cpp
34     bindings/v8/ScriptEventListener.cpp
35     bindings/v8/ScriptFunctionCall.cpp
36     bindings/v8/ScriptGCEvent.cpp
37     bindings/v8/ScriptInstance.cpp
38     bindings/v8/ScriptObject.cpp
39     bindings/v8/ScriptScope.cpp
40     bindings/v8/ScriptState.cpp
41     bindings/v8/ScriptValue.cpp
42     bindings/v8/SerializedScriptValue.cpp
43     bindings/v8/StaticDOMDataStore.cpp
44     bindings/v8/V8AbstractEventListener.cpp
45     bindings/v8/V8Binding.cpp
46     bindings/v8/V8Collection.cpp
47     bindings/v8/V8DOMMap.cpp
48     bindings/v8/V8DOMWindowShell.cpp
49     bindings/v8/V8DOMWrapper.cpp
50     bindings/v8/V8EventListener.cpp
51     bindings/v8/V8EventListenerList.cpp
52     bindings/v8/V8GCController.cpp
53     bindings/v8/V8GCForContextDispose.cpp
54     bindings/v8/V8Helpers.cpp
55     bindings/v8/V8HiddenPropertyName.cpp
56     bindings/v8/V8IsolatedContext.cpp
57     bindings/v8/V8LazyEventListener.cpp
58     bindings/v8/V8NodeFilterCondition.cpp
59     bindings/v8/V8Proxy.cpp
60     bindings/v8/V8RecursionScope.cpp
61     bindings/v8/V8Utilities.cpp
62     bindings/v8/V8WindowErrorHandler.cpp
63     bindings/v8/V8WorkerContextErrorHandler.cpp
64     bindings/v8/V8WorkerContextEventListener.cpp
65     bindings/v8/WorkerContextExecutionProxy.cpp
66     bindings/v8/WorkerScriptController.cpp
67     bindings/v8/WorkerScriptDebugServer.cpp
68     bindings/v8/WorldContextHandle.cpp
69     bindings/v8/npruntime.cpp
70
71     bindings/v8/custom/V8ArrayBufferCustom.cpp
72     bindings/v8/custom/V8ArrayBufferViewCustom.cpp
73     bindings/v8/custom/V8AudioContextCustom.cpp
74     bindings/v8/custom/V8CSSRuleCustom.cpp
75     bindings/v8/custom/V8CSSStyleDeclarationCustom.cpp
76     bindings/v8/custom/V8CSSStyleSheetCustom.cpp
77     bindings/v8/custom/V8CSSValueCustom.cpp
78     bindings/v8/custom/V8CanvasPixelArrayCustom.cpp
79     bindings/v8/custom/V8CanvasRenderingContext2DCustom.cpp
80     bindings/v8/custom/V8ClipboardCustom.cpp
81     bindings/v8/custom/V8ConsoleCustom.cpp
82     bindings/v8/custom/V8CoordinatesCustom.cpp
83     bindings/v8/custom/V8CustomSQLStatementErrorCallback.cpp
84     bindings/v8/custom/V8CustomVoidCallback.cpp
85     bindings/v8/custom/V8CustomXPathNSResolver.cpp
86     bindings/v8/custom/V8DOMFormDataCustom.cpp
87     bindings/v8/custom/V8DOMStringMapCustom.cpp
88     bindings/v8/custom/V8DOMTokenListCustom.cpp
89     bindings/v8/custom/V8DOMWindowCustom.cpp
90     bindings/v8/custom/V8DataViewCustom.cpp
91     bindings/v8/custom/V8DedicatedWorkerContextCustom.cpp
92     bindings/v8/custom/V8DeviceMotionEventCustom.cpp
93     bindings/v8/custom/V8DeviceOrientationEventCustom.cpp
94     bindings/v8/custom/V8DirectoryEntryCustom.cpp
95     bindings/v8/custom/V8DirectoryEntrySyncCustom.cpp
96     bindings/v8/custom/V8DocumentCustom.cpp
97     bindings/v8/custom/V8DocumentLocationCustom.cpp
98     bindings/v8/custom/V8EntrySyncCustom.cpp
99     bindings/v8/custom/V8EventConstructors.cpp
100     bindings/v8/custom/V8EventCustom.cpp
101     bindings/v8/custom/V8FileReaderCustom.cpp
102     bindings/v8/custom/V8Float32ArrayCustom.cpp
103     bindings/v8/custom/V8Float64ArrayCustom.cpp
104     bindings/v8/custom/V8GeolocationCustom.cpp
105     bindings/v8/custom/V8HTMLAllCollectionCustom.cpp
106     bindings/v8/custom/V8HTMLCanvasElementCustom.cpp
107     bindings/v8/custom/V8HTMLCollectionCustom.cpp
108     bindings/v8/custom/V8HTMLDocumentCustom.cpp
109     bindings/v8/custom/V8HTMLElementCustom.cpp
110     bindings/v8/custom/V8HTMLFormElementCustom.cpp
111     bindings/v8/custom/V8HTMLFrameElementCustom.cpp
112     bindings/v8/custom/V8HTMLFrameSetElementCustom.cpp
113     bindings/v8/custom/V8HTMLImageElementConstructor.cpp
114     bindings/v8/custom/V8HTMLInputElementCustom.cpp
115     bindings/v8/custom/V8HTMLLinkElementCustom.cpp
116     bindings/v8/custom/V8HTMLOptionElementConstructor.cpp
117     bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp
118     bindings/v8/custom/V8HTMLOutputElementCustom.cpp
119     bindings/v8/custom/V8HTMLPlugInElementCustom.cpp
120     bindings/v8/custom/V8HTMLSelectElementCustom.cpp
121     bindings/v8/custom/V8HistoryCustom.cpp
122     bindings/v8/custom/V8IDBAnyCustom.cpp
123     bindings/v8/custom/V8IDBKeyCustom.cpp
124     bindings/v8/custom/V8ImageDataCustom.cpp
125     bindings/v8/custom/V8InjectedScriptHostCustom.cpp
126     bindings/v8/custom/V8InjectedScriptManager.cpp
127     bindings/v8/custom/V8InspectorFrontendHostCustom.cpp
128     bindings/v8/custom/V8Int16ArrayCustom.cpp
129     bindings/v8/custom/V8Int32ArrayCustom.cpp
130     bindings/v8/custom/V8Int8ArrayCustom.cpp
131     bindings/v8/custom/V8LocationCustom.cpp
132     bindings/v8/custom/V8MessageChannelConstructor.cpp
133     bindings/v8/custom/V8MessageEventCustom.cpp
134     bindings/v8/custom/V8MessagePortCustom.cpp
135     bindings/v8/custom/V8MutationCallbackCustom.cpp
136     bindings/v8/custom/V8NamedNodeMapCustom.cpp
137     bindings/v8/custom/V8NamedNodesCollection.cpp
138     bindings/v8/custom/V8NodeCustom.cpp
139     bindings/v8/custom/V8NodeListCustom.cpp
140     bindings/v8/custom/V8NotificationCenterCustom.cpp
141     bindings/v8/custom/V8PerformanceCustom.cpp
142     bindings/v8/custom/V8PopStateEventCustom.cpp
143     bindings/v8/custom/V8SQLResultSetRowListCustom.cpp
144     bindings/v8/custom/V8SQLTransactionCustom.cpp
145     bindings/v8/custom/V8SQLTransactionSyncCustom.cpp
146     bindings/v8/custom/V8StorageCustom.cpp
147     bindings/v8/custom/V8StyleSheetCustom.cpp
148     bindings/v8/custom/V8StyleSheetListCustom.cpp
149     bindings/v8/custom/V8Uint16ArrayCustom.cpp
150     bindings/v8/custom/V8Uint32ArrayCustom.cpp
151     bindings/v8/custom/V8Uint8ArrayCustom.cpp
152     bindings/v8/custom/V8WebGLRenderingContextCustom.cpp
153     bindings/v8/custom/V8WebKitAnimationCustom.cpp
154     bindings/v8/custom/V8WebKitMutationObserverCustom.cpp
155     bindings/v8/custom/V8WebKitPointConstructor.cpp
156     bindings/v8/custom/V8WebSocketCustom.cpp
157     bindings/v8/custom/V8WorkerContextCustom.cpp
158     bindings/v8/custom/V8WorkerCustom.cpp
159     bindings/v8/custom/V8XMLHttpRequestConstructor.cpp
160     bindings/v8/custom/V8XMLHttpRequestCustom.cpp
161     bindings/v8/custom/V8XSLTProcessorCustom.cpp
162
163     bindings/v8/specialization/V8BindingState.cpp
164 )
165
166 LIST(APPEND WebCoreTestSupport_SOURCES
167     testing/v8/V8InternalsCustom.cpp
168     testing/v8/WebCoreTestSupport.cpp
169 )
170
171 LIST(APPEND WebCore_SOURCES
172     ${JAVASCRIPTCORE_DIR}/yarr/YarrInterpreter.cpp
173     ${JAVASCRIPTCORE_DIR}/yarr/YarrJIT.cpp
174     ${JAVASCRIPTCORE_DIR}/yarr/YarrPattern.cpp
175     ${JAVASCRIPTCORE_DIR}/yarr/YarrSyntaxChecker.cpp
176 )
177
178 IF (ENABLE_JAVASCRIPT_DEBUGGER)
179     LIST(APPEND WebCore_SOURCES
180         bindings/v8/JavaScriptCallFrame.cpp
181         bindings/v8/ScriptDebugServer.cpp
182         bindings/v8/ScriptHeapSnapshot.cpp
183         bindings/v8/ScriptProfile.cpp
184         bindings/v8/ScriptProfileNode.cpp
185         bindings/v8/ScriptProfiler.cpp
186
187         bindings/v8/custom/V8JavaScriptCallFrameCustom.cpp
188         bindings/v8/custom/V8ScriptProfileCustom.cpp
189         bindings/v8/custom/V8ScriptProfileNodeCustom.cpp
190     )
191 ENDIF ()
192
193 IF (ENABLE_NETSCAPE_PLUGIN_API)
194     LIST(APPEND WebCore_SOURCES
195         bindings/v8/NPV8Object.cpp
196         bindings/v8/V8NPObject.cpp
197         bindings/v8/V8NPUtils.cpp
198     )
199 ENDIF()
200
201 IF (ENABLE_VIDEO)
202     LIST(APPEND WebCore_SOURCES
203         bindings/v8/custom/V8HTMLAudioElementConstructor.cpp
204     )
205 ENDIF ()
206
207 IF (ENABLE_SVG)
208     LIST(APPEND WebCore_SOURCES
209         bindings/v8/custom/V8SVGDocumentCustom.cpp
210         bindings/v8/custom/V8SVGElementCustom.cpp
211         bindings/v8/custom/V8SVGLengthCustom.cpp
212         bindings/v8/custom/V8SVGPathSegCustom.cpp
213     )
214 ENDIF ()
215
216 LIST(APPEND SCRIPTS_BINDINGS
217     ${WEBCORE_DIR}/bindings/scripts/CodeGenerator.pm
218 )
219
220 SET(IDL_INCLUDES "")
221 FOREACH (_include ${WebCore_IDL_INCLUDES})
222     LIST(APPEND IDL_INCLUDES --include=${WEBCORE_DIR}/${_include})
223 ENDFOREACH ()
224
225 FOREACH (_include ${WebCoreTestSupport_IDL_INCLUDES})
226     LIST(APPEND IDL_INCLUDES --include=${WEBCORE_DIR}/${_include})
227 ENDFOREACH ()
228
229 SET(FEATURE_DEFINES_JAVASCRIPT "LANGUAGE_JAVASCRIPT=1 V8_BINDING=1")
230 FOREACH (_feature ${FEATURE_DEFINES})
231     SET(FEATURE_DEFINES_JAVASCRIPT "${FEATURE_DEFINES_JAVASCRIPT} ${_feature}")
232 ENDFOREACH ()
233
234 # Generate DebuggerScriptSource.h
235 ADD_CUSTOM_COMMAND(
236     OUTPUT ${DERIVED_SOURCES_WEBCORE_DIR}/DebuggerScriptSource.h
237     MAIN_DEPENDENCY ${WEBCORE_DIR}/bindings/v8/DebuggerScript.js
238     DEPENDS ${WEBCORE_DIR}/inspector/xxd.pl
239     COMMAND ${PERL_EXECUTABLE} ${WEBCORE_DIR}/inspector/xxd.pl DebuggerScriptSource_js ${WEBCORE_DIR}/bindings/v8/DebuggerScript.js ${DERIVED_SOURCES_WEBCORE_DIR}/DebuggerScriptSource.h
240     VERBATIM)
241 LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/DebuggerScriptSource.h)
242
243 #GENERATOR: "RegExpJitTables.h": tables used by Yarr
244 ADD_CUSTOM_COMMAND(
245     OUTPUT ${DERIVED_SOURCES_WEBCORE_DIR}/RegExpJitTables.h
246     MAIN_DEPENDENCY ${JAVASCRIPTCORE_DIR}/create_regex_tables
247     COMMAND ${PYTHON_EXECUTABLE} ${JAVASCRIPTCORE_DIR}/create_regex_tables > ${DERIVED_SOURCES_WEBCORE_DIR}/RegExpJitTables.h
248     VERBATIM)
249 ADD_SOURCE_DEPENDENCIES(${JAVASCRIPTCORE_DIR}/yarr/YarrPattern.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/RegExpJitTables.h)
250
251 # Generate V8ArrayBufferViewCustomScript.h
252 ADD_CUSTOM_COMMAND(
253     OUTPUT ${DERIVED_SOURCES_WEBCORE_DIR}/V8ArrayBufferViewCustomScript.h
254     MAIN_DEPENDENCY ${WEBCORE_DIR}/bindings/v8/custom/V8ArrayBufferViewCustomScript.js
255     DEPENDS ${WEBCORE_DIR}/inspector/xxd.pl
256     COMMAND ${PERL_EXECUTABLE} ${WEBCORE_DIR}/inspector/xxd.pl V8ArrayBufferViewCustomScript_js ${WEBCORE_DIR}/bindings/v8/custom/V8ArrayBufferViewCustomScript.js ${DERIVED_SOURCES_WEBCORE_DIR}/V8ArrayBufferViewCustomScript.h
257     VERBATIM)
258 LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/V8ArrayBufferViewCustomScript.h)
259
260 # Create JavaScript C++ code given an IDL input
261 FOREACH (_idl ${WebCore_IDL_FILES})
262     SET(IDL_FILES_LIST "${IDL_FILES_LIST}${WEBCORE_DIR}/${_idl}\n")
263 ENDFOREACH ()
264
265 FOREACH (_idl ${WebCoreTestSupport_IDL_FILES})
266     SET(IDL_FILES_LIST "${IDL_FILES_LIST}${WEBCORE_DIR}/${_idl}\n")
267 ENDFOREACH ()
268
269 FILE(WRITE ${IDL_FILES_TMP} ${IDL_FILES_LIST})
270
271 ADD_CUSTOM_COMMAND(
272     OUTPUT ${SUPPLEMENTAL_DEPENDENCY_FILE}
273     DEPENDS ${WEBCORE_DIR}/bindings/scripts/preprocess-idls.pl ${SCRIPTS_PREPROCESS_IDLS} ${WebCore_IDL_FILES} ${WebCoreTestSupport_IDL_FILES} ${IDL_ATTRIBUTES_FILE}
274     COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${WEBCORE_DIR}/bindings/scripts/preprocess-idls.pl --defines "${FEATURE_DEFINES_JAVASCRIPT}" --idlFilesList ${IDL_FILES_TMP} --preprocessor "${CODE_GENERATOR_PREPROCESSOR}" --supplementalDependencyFile ${SUPPLEMENTAL_DEPENDENCY_FILE} --idlAttributesFile ${IDL_ATTRIBUTES_FILE}
275     VERBATIM)
276
277 FOREACH (_file ${WebCore_IDL_FILES})
278     GET_FILENAME_COMPONENT (_name ${_file} NAME_WE)
279     ADD_CUSTOM_COMMAND(
280         OUTPUT  ${DERIVED_SOURCES_WEBCORE_DIR}/V8${_name}.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/V8${_name}.h
281         MAIN_DEPENDENCY ${_file}
282         DEPENDS ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl ${SCRIPTS_BINDINGS} ${WEBCORE_DIR}/bindings/scripts/CodeGeneratorV8.pm ${SUPPLEMENTAL_DEPENDENCY_FILE}
283         COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl --defines "${FEATURE_DEFINES_JAVASCRIPT}" --generator V8 ${IDL_INCLUDES} --outputDir "${DERIVED_SOURCES_WEBCORE_DIR}" --preprocessor "${CODE_GENERATOR_PREPROCESSOR}" --supplementalDependencyFile ${SUPPLEMENTAL_DEPENDENCY_FILE} ${WEBCORE_DIR}/${_file}
284         VERBATIM)
285     LIST(APPEND WebCore_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/V8${_name}.cpp)
286 ENDFOREACH ()
287
288 FOREACH (_file ${WebCoreTestSupport_IDL_FILES})
289     GET_FILENAME_COMPONENT (_name ${_file} NAME_WE)
290     ADD_CUSTOM_COMMAND(
291         OUTPUT  ${DERIVED_SOURCES_WEBCORE_DIR}/V8${_name}.cpp ${DERIVED_SOURCES_WEBCORE_DIR}/V8${_name}.h
292         MAIN_DEPENDENCY ${_file}
293         DEPENDS ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl ${SCRIPTS_BINDINGS} ${WEBCORE_DIR}/bindings/scripts/CodeGeneratorV8.pm ${SUPPLEMENTAL_DEPENDENCY_FILE}
294         COMMAND ${PERL_EXECUTABLE} -I${WEBCORE_DIR}/bindings/scripts ${WEBCORE_DIR}/bindings/scripts/generate-bindings.pl --defines "${FEATURE_DEFINES_JAVASCRIPT}" --generator V8 ${IDL_INCLUDES} --outputDir "${DERIVED_SOURCES_WEBCORE_DIR}" --preprocessor "${CODE_GENERATOR_PREPROCESSOR}" --supplementalDependencyFile ${SUPPLEMENTAL_DEPENDENCY_FILE} ${WEBCORE_DIR}/${_file}
295         VERBATIM)
296     LIST(APPEND WebCoreTestSupport_SOURCES ${DERIVED_SOURCES_WEBCORE_DIR}/V8${_name}.cpp)
297 ENDFOREACH ()