source: webkit/trunk/Source/JavaScriptCore/DerivedSources.make

Last change on this file was 295602, checked in by Alexey Shvayka, 3 years ago

[WebIDL] maplike<> and setlike<> declarations should be resilient to tampered prototypes
https://bugs.webkit.org/show_bug.cgi?id=241617
<rdar://93229569>

Reviewed by Yusuke Suzuki.

With this change, maplike<> and setlike<> declarations work as expected if methods of
Map.prototype / Set.prototype are removed, as they are suppossed to per spec [1][2].
Usage of backing Map / Set is an implementation detail of WebKit bindings and should
not be observable.

The fix mirrors all Map / Set prototype methods and "size" getter by private names,
which are inacessible to userland code, ensuring that public JSFunction* instances
are reused to avoid memory bloat.

Also, this change:

  • saves creating 4 extra JSFunction* instances during init of Map / Set prototypes;
  • speeds-up call forwarding by retrieving methods from prototypes with getDirect();
  • aligns property order with the spec, even though there is no requirement.

[1] https://webidl.spec.whatwg.org/#es-maplike
[2] https://webidl.spec.whatwg.org/#es-setlike

  • LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/Highlight-setlike-tampered-Set-prototype-expected.txt: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/Highlight-setlike-tampered-Set-prototype.html: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/HighlightRegistry-maplike-tampered-Map-prototype-expected.txt: Added.
  • LayoutTests/imported/w3c/web-platform-tests/css/css-highlight-api/HighlightRegistry-maplike-tampered-Map-prototype.html: Added.
  • Source/JavaScriptCore/DerivedSources-output.xcfilelist:
  • Source/JavaScriptCore/DerivedSources.make:
  • Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
  • Source/JavaScriptCore/builtins/BuiltinNames.h:
  • Source/JavaScriptCore/runtime/MapPrototype.cpp:

(JSC::MapPrototype::finishCreation):

  • Source/JavaScriptCore/runtime/SetPrototype.cpp:

(JSC::SetPrototype::finishCreation):

  • Source/WebCore/bindings/js/JSDOMBindingInternals.js:

(forEachWrapper):

  • Source/WebCore/bindings/js/JSDOMMapLike.cpp:

(WebCore::getBackingMap):
(WebCore::clearBackingMap):
(WebCore::setToBackingMap):
(WebCore::forwardFunctionCallToBackingMap):

  • Source/WebCore/bindings/js/JSDOMMapLike.h:

(WebCore::forwardSizeToMapLike):
(WebCore::forwardEntriesToMapLike):
(WebCore::forwardKeysToMapLike):
(WebCore::forwardValuesToMapLike):
(WebCore::forwardClearToMapLike):
(WebCore::forwardGetToMapLike):
(WebCore::forwardHasToMapLike):
(WebCore::forwardSetToMapLike):
(WebCore::forwardDeleteToMapLike):

  • Source/WebCore/bindings/js/JSDOMSetLike.cpp:

(WebCore::getBackingSet):
(WebCore::clearBackingSet):
(WebCore::addToBackingSet):
(WebCore::forwardFunctionCallToBackingSet):

  • Source/WebCore/bindings/js/JSDOMSetLike.h:

(WebCore::forwardSizeToSetLike):
(WebCore::forwardEntriesToSetLike):
(WebCore::forwardKeysToSetLike):
(WebCore::forwardValuesToSetLike):
(WebCore::forwardClearToSetLike):
(WebCore::forwardHasToSetLike):
(WebCore::forwardAddToSetLike):
(WebCore::forwardDeleteToSetLike):

  • Source/WebCore/bindings/js/WebCoreBuiltinNames.h:

Canonical link: https://commits.webkit.org/251607@main

  • Property svn:eol-style set to native
File size: 18.7 KB
Line 
1# Copyright (C) 2006-2021 Apple Inc. All rights reserved.
2#
3# Redistribution and use in source and binary forms, with or without
4# modification, are permitted provided that the following conditions
5# are met:
6#
7# 1. Redistributions of source code must retain the above copyright
8# notice, this list of conditions and the following disclaimer.
9# 2. Redistributions in binary form must reproduce the above copyright
10# notice, this list of conditions and the following disclaimer in the
11# documentation and/or other materials provided with the distribution.
12# 3. Neither the name of Apple Inc. ("Apple") nor the names of
13# its contributors may be used to endorse or promote products derived
14# from this software without specific prior written permission.
15#
16# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
17# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19# DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
20# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27# Workaround for rdar://84212106.
28find_tool = $(realpath $(shell xcrun --sdk $(SDK_NAME) -f $(1)))
29
30PYTHON := $(call find_tool,python3)
31PERL := perl
32RUBY := ruby
33DELETE := rm -f
34
35ifneq ($(SDKROOT),)
36 SDK_FLAGS = -isysroot $(SDKROOT)
37endif
38
39ifeq ($(USE_LLVM_TARGET_TRIPLES_FOR_CLANG),YES)
40 WK_CURRENT_ARCH = $(word 1, $(ARCHS))
41 TARGET_TRIPLE_FLAGS = -target $(WK_CURRENT_ARCH)-$(LLVM_TARGET_TRIPLE_VENDOR)-$(LLVM_TARGET_TRIPLE_OS_VERSION)$(LLVM_TARGET_TRIPLE_SUFFIX)
42endif
43
44FRAMEWORK_FLAGS := $(shell echo $(BUILT_PRODUCTS_DIR) $(FRAMEWORK_SEARCH_PATHS) $(SYSTEM_FRAMEWORK_SEARCH_PATHS) | $(PERL) -e 'print "-F " . join(" -F ", split(" ", <>));')
45HEADER_FLAGS := $(shell echo $(BUILT_PRODUCTS_DIR) $(HEADER_SEARCH_PATHS) $(SYSTEM_HEADER_SEARCH_PATHS) | $(PERL) -e 'print "-I" . join(" -I", split(" ", <>));')
46
47platform_h_compiler_command = $(CC) -std=c++2a -x c++ $(1) $(SDK_FLAGS) $(TARGET_TRIPLE_FLAGS) $(FRAMEWORK_FLAGS) $(HEADER_FLAGS) -include "wtf/Platform.h" /dev/null
48
49FEATURE_AND_PLATFORM_DEFINES := $(shell $(call platform_h_compiler_command,-E -P -dM) | $(PERL) -ne "print if s/\#define ((HAVE_|USE_|ENABLE_|WTF_PLATFORM_)\w+) 1/\1/")
50
51PLATFORM_HEADER_DIR := $(realpath $(BUILT_PRODUCTS_DIR)$(WK_LIBRARY_HEADERS_FOLDER_PATH))
52
53PLATFORM_HEADER_DEPENDENCIES := $(filter $(PLATFORM_HEADER_DIR)/%,$(realpath $(shell $(call platform_h_compiler_command,-M) | $(PERL) -e "local \$$/; my (\$$target, \$$deps) = split(/:/, <>); print split(/\\\\/, \$$deps);")))
54FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES = DerivedSources.make $(PLATFORM_HEADER_DEPENDENCIES)
55
56# --------
57
58VPATH = \
59 $(JavaScriptCore) \
60 $(JavaScriptCore)/parser \
61 $(JavaScriptCore)/runtime \
62 $(JavaScriptCore)/interpreter \
63 $(JavaScriptCore)/jit \
64 $(JavaScriptCore)/builtins \
65 $(JavaScriptCore)/wasm/js \
66#
67
68JavaScriptCore_SCRIPTS_DIR = $(JavaScriptCore)/Scripts
69
70.PHONY : all
71all : \
72 Lexer.lut.h \
73 KeywordLookup.h \
74 RegExpJitTables.h \
75 UnicodePatternTables.h \
76 yarr/YarrCanonicalizeUnicode.cpp \
77 WasmOps.h \
78 WasmB3IRGeneratorInlines.h \
79#
80
81# JavaScript builtins.
82
83JSC_BUILTINS_FILES = JSCBuiltins.h JSCBuiltins.cpp
84
85all : $(JSC_BUILTINS_FILES)
86
87BUILTINS_GENERATOR_SCRIPTS = \
88 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/__init__.py \
89 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/wkbuiltins.py \
90 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_generator.py \
91 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_model.py \
92 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_templates.py \
93 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_generate_combined_header.py \
94 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_generate_combined_implementation.py \
95 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_generate_separate_header.py \
96 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_generate_separate_implementation.py \
97 ${JavaScriptCore_SCRIPTS_DIR}/wkbuiltins/builtins_generate_wrapper_header.py \
98 ${JavaScriptCore_SCRIPTS_DIR}/wkbuiltins/builtins_generate_wrapper_implementation.py \
99 ${JavaScriptCore_SCRIPTS_DIR}/wkbuiltins/builtins_generate_internals_wrapper_header.py \
100 ${JavaScriptCore_SCRIPTS_DIR}/wkbuiltins/builtins_generate_internals_wrapper_implementation.py \
101 $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py \
102 $(JavaScriptCore_SCRIPTS_DIR)/lazywriter.py \
103#
104
105JavaScriptCore_BUILTINS_SOURCES = \
106 $(JavaScriptCore)/builtins/AsyncFromSyncIteratorPrototype.js \
107 $(JavaScriptCore)/builtins/ArrayConstructor.js \
108 $(JavaScriptCore)/builtins/ArrayIteratorPrototype.js \
109 $(JavaScriptCore)/builtins/ArrayPrototype.js \
110 $(JavaScriptCore)/builtins/AsyncIteratorPrototype.js \
111 $(JavaScriptCore)/builtins/AsyncFunctionPrototype.js \
112 $(JavaScriptCore)/builtins/AsyncGeneratorPrototype.js \
113 $(JavaScriptCore)/builtins/DatePrototype.js \
114 $(JavaScriptCore)/builtins/FunctionPrototype.js \
115 $(JavaScriptCore)/builtins/GeneratorPrototype.js \
116 $(JavaScriptCore)/builtins/GlobalObject.js \
117 $(JavaScriptCore)/builtins/GlobalOperations.js \
118 $(JavaScriptCore)/builtins/InternalPromiseConstructor.js \
119 $(JavaScriptCore)/builtins/IteratorHelpers.js \
120 $(JavaScriptCore)/builtins/IteratorPrototype.js \
121 $(JavaScriptCore)/builtins/MapIteratorPrototype.js \
122 $(JavaScriptCore)/builtins/MapPrototype.js \
123 $(JavaScriptCore)/builtins/ModuleLoader.js \
124 $(JavaScriptCore)/builtins/NumberConstructor.js \
125 $(JavaScriptCore)/builtins/ObjectConstructor.js \
126 $(JavaScriptCore)/builtins/PromiseConstructor.js \
127 $(JavaScriptCore)/builtins/PromiseOperations.js \
128 $(JavaScriptCore)/builtins/PromisePrototype.js \
129 $(JavaScriptCore)/builtins/ReflectObject.js \
130 $(JavaScriptCore)/builtins/RegExpPrototype.js \
131 ${JavaScriptCore}/builtins/RegExpStringIteratorPrototype.js \
132 $(JavaScriptCore)/builtins/SetIteratorPrototype.js \
133 $(JavaScriptCore)/builtins/SetPrototype.js \
134 $(JavaScriptCore)/builtins/ShadowRealmPrototype.js \
135 $(JavaScriptCore)/builtins/StringConstructor.js \
136 $(JavaScriptCore)/builtins/StringIteratorPrototype.js \
137 $(JavaScriptCore)/builtins/StringPrototype.js \
138 $(JavaScriptCore)/builtins/TypedArrayConstructor.js \
139 $(JavaScriptCore)/builtins/TypedArrayPrototype.js \
140 $(JavaScriptCore)/builtins/WebAssembly.js \
141 $(JavaScriptCore)/inspector/InjectedScriptSource.js \
142#
143
144# The combined output file depends on the contents of builtins and generator scripts, so
145# adding, modifying, or removing builtins or scripts will trigger regeneration of files.
146
147JavaScriptCore_BUILTINS_DEPENDENCIES_LIST : $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py DerivedSources.make
148 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py '$(JavaScriptCore_BUILTINS_SOURCES) $(BUILTINS_GENERATOR_SCRIPTS)' $@
149
150JSC_BUILTINS_FILES_PATTERNS = $(subst .,%,$(JSC_BUILTINS_FILES))
151
152$(JSC_BUILTINS_FILES_PATTERNS) : $(BUILTINS_GENERATOR_SCRIPTS) $(JavaScriptCore_BUILTINS_SOURCES) JavaScriptCore_BUILTINS_DEPENDENCIES_LIST
153 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py --combined --output-directory . --framework JavaScriptCore $(JavaScriptCore_BUILTINS_SOURCES)
154
155# Perfect hash lookup tables for JavaScript classes.
156
157OBJECT_LUT_HEADERS = \
158 AsyncFromSyncIteratorPrototype.lut.h \
159 ArrayConstructor.lut.h \
160 AsyncGeneratorPrototype.lut.h \
161 BigIntConstructor.lut.h \
162 BigIntPrototype.lut.h \
163 BooleanPrototype.lut.h \
164 DateConstructor.lut.h \
165 DatePrototype.lut.h \
166 ErrorPrototype.lut.h \
167 GeneratorPrototype.lut.h \
168 IntlCollatorConstructor.lut.h \
169 IntlCollatorPrototype.lut.h \
170 IntlDateTimeFormatConstructor.lut.h \
171 IntlDateTimeFormatPrototype.lut.h \
172 IntlDisplayNamesConstructor.lut.h \
173 IntlDisplayNamesPrototype.lut.h \
174 IntlListFormatConstructor.lut.h \
175 IntlListFormatPrototype.lut.h \
176 IntlLocalePrototype.lut.h \
177 IntlNumberFormatConstructor.lut.h \
178 IntlNumberFormatPrototype.lut.h \
179 IntlObject.lut.h \
180 IntlPluralRulesConstructor.lut.h \
181 IntlPluralRulesPrototype.lut.h \
182 IntlRelativeTimeFormatConstructor.lut.h \
183 IntlRelativeTimeFormatPrototype.lut.h \
184 IntlSegmentIteratorPrototype.lut.h \
185 IntlSegmenterConstructor.lut.h \
186 IntlSegmenterPrototype.lut.h \
187 IntlSegmentsPrototype.lut.h \
188 JSDataViewPrototype.lut.h \
189 JSGlobalObject.lut.h \
190 JSInternalPromiseConstructor.lut.h \
191 JSModuleLoader.lut.h \
192 JSONObject.lut.h \
193 JSPromiseConstructor.lut.h \
194 JSPromisePrototype.lut.h \
195 JSWebAssembly.lut.h \
196 NumberConstructor.lut.h \
197 NumberPrototype.lut.h \
198 ObjectConstructor.lut.h \
199 ReflectObject.lut.h \
200 RegExpConstructor.lut.h \
201 ShadowRealmPrototype.lut.h \
202 StringConstructor.lut.h \
203 StringPrototype.lut.h \
204 SymbolConstructor.lut.h \
205 SymbolPrototype.lut.h \
206 TemporalCalendarConstructor.lut.h \
207 TemporalCalendarPrototype.lut.h \
208 TemporalDurationConstructor.lut.h \
209 TemporalDurationPrototype.lut.h \
210 TemporalInstantConstructor.lut.h \
211 TemporalInstantPrototype.lut.h \
212 TemporalNow.lut.h \
213 TemporalObject.lut.h \
214 TemporalPlainDateConstructor.lut.h \
215 TemporalPlainDatePrototype.lut.h \
216 TemporalPlainTimeConstructor.lut.h \
217 TemporalPlainTimePrototype.lut.h \
218 TemporalTimeZoneConstructor.lut.h \
219 TemporalTimeZonePrototype.lut.h \
220 WebAssemblyCompileErrorConstructor.lut.h \
221 WebAssemblyCompileErrorPrototype.lut.h \
222 WebAssemblyExceptionConstructor.lut.h \
223 WebAssemblyExceptionPrototype.lut.h \
224 WebAssemblyGlobalConstructor.lut.h \
225 WebAssemblyGlobalPrototype.lut.h \
226 WebAssemblyInstanceConstructor.lut.h \
227 WebAssemblyInstancePrototype.lut.h \
228 WebAssemblyLinkErrorConstructor.lut.h \
229 WebAssemblyLinkErrorPrototype.lut.h \
230 WebAssemblyMemoryConstructor.lut.h \
231 WebAssemblyMemoryPrototype.lut.h \
232 WebAssemblyModuleConstructor.lut.h \
233 WebAssemblyModulePrototype.lut.h \
234 WebAssemblyRuntimeErrorConstructor.lut.h \
235 WebAssemblyRuntimeErrorPrototype.lut.h \
236 WebAssemblyTableConstructor.lut.h \
237 WebAssemblyTablePrototype.lut.h \
238 WebAssemblyTagConstructor.lut.h \
239 WebAssemblyTagPrototype.lut.h \
240#
241
242$(OBJECT_LUT_HEADERS): %.lut.h : %.cpp $(JavaScriptCore)/create_hash_table
243 $(PERL) $(JavaScriptCore)/create_hash_table $< > $@
244
245Lexer.lut.h: Keywords.table $(JavaScriptCore)/create_hash_table
246 $(PERL) $(JavaScriptCore)/create_hash_table $< > $@
247
248# character tables for Yarr
249
250RegExpJitTables.h: yarr/create_regex_tables
251 $(PYTHON) $^ > $@
252
253KeywordLookup.h: KeywordLookupGenerator.py Keywords.table
254 $(PYTHON) $^ > $@
255
256# Bytecode files
257
258BYTECODE_FILES = \
259 Bytecodes.h \
260 BytecodeIndices.h \
261 BytecodeStructs.h \
262 InitBytecodes.asm \
263 WasmLLIntGeneratorInlines.h \
264 InitWasm.asm \
265 BytecodeDumperGenerated.cpp \
266#
267BYTECODE_FILES_PATTERNS = $(subst .,%,$(BYTECODE_FILES))
268
269all : $(BYTECODE_FILES)
270
271$(BYTECODE_FILES_PATTERNS): $(wildcard $(JavaScriptCore)/generator/*.rb) $(JavaScriptCore)/bytecode/BytecodeList.rb $(JavaScriptCore)/wasm/wasm.json
272 $(RUBY) $(JavaScriptCore)/generator/main.rb $(JavaScriptCore)/bytecode/BytecodeList.rb \
273 --bytecode_structs_h BytecodeStructs.h \
274 --init_bytecodes_asm InitBytecodes.asm \
275 --bytecodes_h Bytecodes.h \
276 --bytecode_indices_h BytecodeIndices.h \
277 --wasm_json $(JavaScriptCore)/wasm/wasm.json \
278 --wasm_llint_generator_h WasmLLIntGeneratorInlines.h \
279 --init_wasm_llint InitWasm.asm \
280 --bytecode_dumper BytecodeDumperGenerated.cpp \
281
282# Inspector interfaces
283
284INSPECTOR_DOMAINS := \
285 $(JavaScriptCore)/inspector/protocol/Animation.json \
286 $(JavaScriptCore)/inspector/protocol/ApplicationCache.json \
287 $(JavaScriptCore)/inspector/protocol/Audit.json \
288 $(JavaScriptCore)/inspector/protocol/Browser.json \
289 $(JavaScriptCore)/inspector/protocol/CPUProfiler.json \
290 $(JavaScriptCore)/inspector/protocol/CSS.json \
291 $(JavaScriptCore)/inspector/protocol/Canvas.json \
292 $(JavaScriptCore)/inspector/protocol/Console.json \
293 $(JavaScriptCore)/inspector/protocol/DOM.json \
294 $(JavaScriptCore)/inspector/protocol/DOMDebugger.json \
295 $(JavaScriptCore)/inspector/protocol/DOMStorage.json \
296 $(JavaScriptCore)/inspector/protocol/Database.json \
297 $(JavaScriptCore)/inspector/protocol/Debugger.json \
298 $(JavaScriptCore)/inspector/protocol/GenericTypes.json \
299 $(JavaScriptCore)/inspector/protocol/Heap.json \
300 $(JavaScriptCore)/inspector/protocol/IndexedDB.json \
301 $(JavaScriptCore)/inspector/protocol/Inspector.json \
302 $(JavaScriptCore)/inspector/protocol/LayerTree.json \
303 $(JavaScriptCore)/inspector/protocol/Memory.json \
304 $(JavaScriptCore)/inspector/protocol/Network.json \
305 $(JavaScriptCore)/inspector/protocol/Page.json \
306 $(JavaScriptCore)/inspector/protocol/Recording.json \
307 $(JavaScriptCore)/inspector/protocol/Runtime.json \
308 $(JavaScriptCore)/inspector/protocol/ScriptProfiler.json \
309 $(JavaScriptCore)/inspector/protocol/Security.json \
310 $(JavaScriptCore)/inspector/protocol/ServiceWorker.json \
311 $(JavaScriptCore)/inspector/protocol/Target.json \
312 $(JavaScriptCore)/inspector/protocol/Timeline.json \
313 $(JavaScriptCore)/inspector/protocol/Worker.json \
314#
315
316INSPECTOR_GENERATOR_SCRIPTS = \
317 $(JavaScriptCore)/inspector/scripts/codegen/__init__.py \
318 $(JavaScriptCore)/inspector/scripts/codegen/cpp_generator_templates.py \
319 $(JavaScriptCore)/inspector/scripts/codegen/cpp_generator.py \
320 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py \
321 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py \
322 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py \
323 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py \
324 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_protocol_types_header.py \
325 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py \
326 $(JavaScriptCore)/inspector/scripts/codegen/generate_js_backend_commands.py \
327 $(JavaScriptCore)/inspector/scripts/codegen/generator_templates.py \
328 $(JavaScriptCore)/inspector/scripts/codegen/generator.py \
329 $(JavaScriptCore)/inspector/scripts/codegen/models.py \
330 $(JavaScriptCore)/inspector/scripts/codegen/preprocess.pl \
331 $(JavaScriptCore)/inspector/scripts/generate-inspector-protocol-bindings.py \
332 $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector-json.py \
333#
334
335# TODO: Is there some way to not hardcode this? Can we get it from
336# generate-inspector-protocol-bindings.py and ./CombinedDomains.json?
337INSPECTOR_DISPATCHER_FILES = \
338 inspector/InspectorAlternateBackendDispatchers.h \
339 inspector/InspectorBackendDispatchers.cpp \
340 inspector/InspectorBackendDispatchers.h \
341 inspector/InspectorFrontendDispatchers.cpp \
342 inspector/InspectorFrontendDispatchers.h \
343 inspector/InspectorProtocolObjects.cpp \
344 inspector/InspectorProtocolObjects.h \
345#
346INSPECTOR_DISPATCHER_FILES_PATTERNS = $(subst .,%,$(INSPECTOR_DISPATCHER_FILES))
347
348all : $(INSPECTOR_DISPATCHER_FILES) inspector/InspectorBackendCommands.js
349
350# The combined JSON file depends on the actual set of domains and their file contents, so that
351# adding, modifying, or removing domains will trigger regeneration of inspector files.
352
353.PHONY: force
354EnabledInspectorDomains : $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py force
355 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py '$(INSPECTOR_DOMAINS)' $@
356
357CombinedDomains.json : $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector-json.py $(INSPECTOR_DOMAINS) EnabledInspectorDomains
358 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector-json.py $(INSPECTOR_DOMAINS) > ./CombinedDomains.json
359
360# Inspector Backend Dispatchers, Frontend Dispatchers, Type Builders
361$(INSPECTOR_DISPATCHER_FILES_PATTERNS) : CombinedDomains.json $(INSPECTOR_GENERATOR_SCRIPTS)
362 $(PYTHON) $(JavaScriptCore)/inspector/scripts/generate-inspector-protocol-bindings.py --framework JavaScriptCore --outputDir inspector ./CombinedDomains.json
363
364inspector/InspectorBackendCommands.js : CombinedDomains.json $(INSPECTOR_GENERATOR_SCRIPTS) $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES)
365 $(PYTHON) $(JavaScriptCore)/inspector/scripts/generate-inspector-protocol-bindings.py --framework WebInspectorUI --outputDir inspector ./CombinedDomains.json
366 @echo Pre-processing InspectorBackendCommands...
367 $(PERL) $(JavaScriptCore)/inspector/scripts/codegen/preprocess.pl --input inspector/InspectorBackendCommands.js.in --defines "$(FEATURE_AND_PLATFORM_DEFINES)" --output inspector/InspectorBackendCommands.js
368 $(DELETE) inspector/InspectorBackendCommands.js.in
369
370AIR_OPCODE_FILES = \
371 AirOpcode.h \
372 AirOpcodeUtils.h \
373 AirOpcodeGenerated.h \
374#
375AIR_OPCODE_FILES_PATTERNS = $(subst .,%,$(AIR_OPCODE_FILES))
376
377all : $(AIR_OPCODE_FILES)
378
379$(AIR_OPCODE_FILES_PATTERNS) : $(JavaScriptCore)/b3/air/opcode_generator.rb $(JavaScriptCore)/b3/air/AirOpcode.opcodes
380 $(RUBY) $^
381
382UnicodePatternTables.h: $(JavaScriptCore)/yarr/generateYarrUnicodePropertyTables.py $(JavaScriptCore)/yarr/hasher.py $(JavaScriptCore)/ucd/DerivedBinaryProperties.txt $(JavaScriptCore)/ucd/DerivedCoreProperties.txt $(JavaScriptCore)/ucd/DerivedNormalizationProps.txt $(JavaScriptCore)/ucd/PropList.txt $(JavaScriptCore)/ucd/PropertyAliases.txt $(JavaScriptCore)/ucd/PropertyValueAliases.txt $(JavaScriptCore)/ucd/ScriptExtensions.txt $(JavaScriptCore)/ucd/Scripts.txt $(JavaScriptCore)/ucd/UnicodeData.txt $(JavaScriptCore)/ucd/emoji-data.txt
383 $(PYTHON) $(JavaScriptCore)/yarr/generateYarrUnicodePropertyTables.py $(JavaScriptCore)/ucd ./UnicodePatternTables.h
384
385yarr/YarrCanonicalizeUnicode.cpp: $(JavaScriptCore)/yarr/generateYarrCanonicalizeUnicode $(JavaScriptCore)/ucd/CaseFolding.txt
386 $(PYTHON) $(JavaScriptCore)/yarr/generateYarrCanonicalizeUnicode $(JavaScriptCore)/ucd/CaseFolding.txt ./yarr/YarrCanonicalizeUnicode.cpp
387
388WasmOps.h: $(JavaScriptCore)/wasm/generateWasmOpsHeader.py $(JavaScriptCore)/wasm/generateWasm.py $(JavaScriptCore)/wasm/wasm.json
389 $(PYTHON) $(JavaScriptCore)/wasm/generateWasmOpsHeader.py $(JavaScriptCore)/wasm/wasm.json ./WasmOps.h
390
391WasmB3IRGeneratorInlines.h: $(JavaScriptCore)/wasm/generateWasmB3IRGeneratorInlinesHeader.py $(JavaScriptCore)/wasm/generateWasm.py $(JavaScriptCore)/wasm/wasm.json
392 $(PYTHON) $(JavaScriptCore)/wasm/generateWasmB3IRGeneratorInlinesHeader.py $(JavaScriptCore)/wasm/wasm.json ./WasmB3IRGeneratorInlines.h
393
394# Dynamically-defined targets are listed below. Static targets belong up top.
395
396all : \
397 $(OBJECT_LUT_HEADERS) \
398#
Note: See TracBrowser for help on using the repository browser.