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

Last change on this file since 253074 was 253074, checked in by [email protected], 5 years ago

Adopt the new WebAssembly.Global system
https://bugs.webkit.org/show_bug.cgi?id=186552

Reviewed by Keith Miller.

JSTests:

  1. Update spec-harness to accept newer tests. And we update several tests that does not work with the old harness.
  2. Add WebAssembly.Global tests.
  • wasm/js-api/global-error.js:

(assert.throws.new.WebAssembly.Module.bin):
(new.WebAssembly.Module):
(assert.throws):

  • wasm/js-api/global-external-init-from-import.js:
  • wasm/js-api/globals-export.js:
  • wasm/modules/js-wasm-global-namespace.js:

(assert.throws):

  • wasm/modules/js-wasm-global.js:

(assert.throws):

  • wasm/modules/wasm-import-wasm-export-i64-error.js:
  • wasm/references/anyref_globals.js:
  • wasm/references/func_ref.js:

(assert.eq.instance.exports.fix):

  • wasm/spec-harness.js:

(getGlobal):
(let.console.log):

  • wasm/spec-harness/sync_index.js: Renamed from JSTests/wasm/spec-harness/index.js.

(reinitializeRegistry.let.handler.get return):
(module):

  • wasm/spec-tests/call.wast.js:
  • wasm/spec-tests/exports.wast.js:
  • wasm/spec-tests/globals.wast.js:
  • wasm/spec-tests/if.wast.js:
  • wasm/spec-tests/imports.wast.js:
  • wasm/spec-tests/linking.wast.js:
  • wasm/spec-tests/memory.wast.js:
  • wasm/stress/immutable-globals.js: Added.

(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.assert.eq.instance.exports.getI32):
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.assert.eq):

  • wasm/stress/mutable-globals-cross.js: Added.

(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.instance1):
(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.const.instance2):

  • wasm/stress/mutable-globals.js: Added.

(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.instance.exports.setI32AsI64):

LayoutTests/imported/w3c:

  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any-expected.txt:
  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/global/constructor.any-expected.txt:
  • web-platform-tests/wasm/jsapi/global/constructor.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/global/toString.any-expected.txt:
  • web-platform-tests/wasm/jsapi/global/toString.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/global/value-set.any-expected.txt:
  • web-platform-tests/wasm/jsapi/global/value-set.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/global/valueOf.any-expected.txt:
  • web-platform-tests/wasm/jsapi/global/valueOf.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any-expected.txt:
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt:
  • web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/interface.any-expected.txt:
  • web-platform-tests/wasm/jsapi/interface.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/module/exports.any-expected.txt:
  • web-platform-tests/wasm/jsapi/module/exports.any.worker-expected.txt:

Source/JavaScriptCore:

This patch adds WebAssembly.Global implementation. It is already included in the Wasm spec (this means, it is not in
staging right now: it was stage-4, and included in the spec). WebAssembly.Global is a wrapper object around
"global" binding. This object can hold "immutable" and "mutable" global binding, and we can access Wasm globals through
this object. Furthermore, we can share mutable global binding through this object across WebAssembly modules.

To implement it efficiently, this patch introduces BindingMode to Wasm globals. If the mode is EmbeddedInInstance,
we continue using the current existing mechanism. If the mode is Portable, we store a pointer to actual value in
Wasm globals array in Wasm::Instance, so that we can access it through one additional dereference.
And we mark all immutable globals as EmbeddedInInstance. If the binding is immutable, internally we do not need to
have one binding. We can just continue using the current mechanism since users cannot observe whether immutable bindings'
storage is shared or not. If the global is mutable, and it is exported outside of the module, we use Portable mode.
So, all the previously used wasm global bindings are EmbeddedInInstance. Only newly added "mutable" "exported" bindings
are Portable and requires one additional dereference.

To access portable bindings efficiently, we add new Wasm bytecodes, get_global_portable_binding, set_global_portable_binding,
and set_global_ref_portable_binding.

This patch improves WPT wasm coverage significantly.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/BytecodeList.rb:
  • heap/HeapCell.cpp:

(JSC::keepAlive):
(JSC::HeapCell::use const): Deleted.

  • heap/HeapCell.h:

(JSC::keepAlive):
(JSC::HeapCell::use const):

  • llint/WebAssembly.asm:
  • runtime/JSGlobalObject.cpp:
  • runtime/JSGlobalObject.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::getGlobal):
(JSC::Wasm::AirIRGenerator::setGlobal):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::getGlobal):
(JSC::Wasm::B3IRGenerator::setGlobal):

  • wasm/WasmFormat.h:
  • wasm/WasmGlobal.cpp: Added.

(JSC::Wasm::Global::get const):
(JSC::Wasm::Global::set):
(JSC::Wasm::Global::visitAggregate):

  • wasm/WasmGlobal.h: Added.
  • wasm/WasmInstance.cpp:

(JSC::Wasm::Instance::Instance):
(JSC::Wasm::Instance::setGlobal):
(JSC::Wasm::Instance::linkGlobal):

  • wasm/WasmInstance.h:

(JSC::Wasm::Instance::loadI32Global const):
(JSC::Wasm::Instance::loadI64Global const):
(JSC::Wasm::Instance::setGlobal):
(JSC::Wasm::Instance::globalsToBinding):
(JSC::Wasm::Instance::getGlobalBinding):

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::getGlobal):
(JSC::Wasm::LLIntGenerator::setGlobal):

  • wasm/WasmModuleInformation.h:
  • wasm/WasmOperations.cpp:

(JSC::Wasm::operationWasmWriteBarrierSlowPath):

  • wasm/WasmOperations.h:
  • wasm/WasmSectionParser.cpp:

(JSC::Wasm::SectionParser::parseImport):
(JSC::Wasm::SectionParser::parseGlobal):
(JSC::Wasm::SectionParser::parseExport):
(JSC::Wasm::SectionParser::parseInitExpr):
(JSC::Wasm::SectionParser::parseGlobalType):

  • wasm/WasmSectionParser.h:
  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::WASM_SLOW_PATH_DECL):

  • wasm/WasmSlowPaths.h:
  • wasm/WasmValidate.cpp:

(JSC::Wasm::Validate::setGlobal):

  • wasm/js/JSWebAssembly.cpp:
  • wasm/js/JSWebAssemblyGlobal.cpp: Added.

(JSC::JSWebAssemblyGlobal::create):
(JSC::JSWebAssemblyGlobal::createStructure):
(JSC::JSWebAssemblyGlobal::JSWebAssemblyGlobal):
(JSC::JSWebAssemblyGlobal::finishCreation):
(JSC::JSWebAssemblyGlobal::destroy):
(JSC::JSWebAssemblyGlobal::visitChildren):

  • wasm/js/JSWebAssemblyGlobal.h: Copied from Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.h.
  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::visitChildren):

  • wasm/js/JSWebAssemblyInstance.h:
  • wasm/js/JSWebAssemblyMemory.cpp:

(JSC::JSWebAssemblyMemory::destroy):

  • wasm/js/JSWebAssemblyMemory.h:
  • wasm/js/JSWebAssemblyModule.h:
  • wasm/js/JSWebAssemblyTable.h:
  • wasm/js/WebAssemblyGlobalConstructor.cpp: Added.

(JSC::constructJSWebAssemblyGlobal):
(JSC::callJSWebAssemblyGlobal):
(JSC::WebAssemblyGlobalConstructor::create):
(JSC::WebAssemblyGlobalConstructor::createStructure):
(JSC::WebAssemblyGlobalConstructor::finishCreation):
(JSC::WebAssemblyGlobalConstructor::WebAssemblyGlobalConstructor):

  • wasm/js/WebAssemblyGlobalConstructor.h: Copied from Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.h.
  • wasm/js/WebAssemblyGlobalPrototype.cpp: Added.

(JSC::getGlobal):
(JSC::webAssemblyGlobalProtoFuncValueOf):
(JSC::webAssemblyGlobalProtoGetterFuncValue):
(JSC::webAssemblyGlobalProtoSetterFuncValue):
(JSC::WebAssemblyGlobalPrototype::create):
(JSC::WebAssemblyGlobalPrototype::createStructure):
(JSC::WebAssemblyGlobalPrototype::finishCreation):
(JSC::WebAssemblyGlobalPrototype::WebAssemblyGlobalPrototype):

  • wasm/js/WebAssemblyGlobalPrototype.h: Copied from Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.h.
  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):

  • Property svn:eol-style set to native
File size: 17.2 KB
Line 
1# Copyright (C) 2006, 2007, 2008, 2009, 2011, 2013, 2015 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
27VPATH = \
28 $(JavaScriptCore) \
29 $(JavaScriptCore)/parser \
30 $(JavaScriptCore)/runtime \
31 $(JavaScriptCore)/interpreter \
32 $(JavaScriptCore)/jit \
33 $(JavaScriptCore)/builtins \
34 $(JavaScriptCore)/wasm/js \
35#
36
37PYTHON = python
38PERL = perl
39RUBY = ruby
40
41JavaScriptCore_SCRIPTS_DIR = $(JavaScriptCore)/Scripts
42
43ifeq ($(OS),Windows_NT)
44 DELETE = cmd //C del
45else
46 DELETE = rm -f
47endif
48
49# --------
50
51.PHONY : all
52all : \
53 udis86_itab.h \
54 InjectedScriptSource.h \
55 IntlCanonicalizeLanguage.h \
56 JSCBuiltins.h \
57 Lexer.lut.h \
58 KeywordLookup.h \
59 RegExpJitTables.h \
60 UnicodePatternTables.h \
61 yarr/YarrCanonicalizeUnicode.cpp \
62 WasmOps.h \
63 WasmValidateInlines.h \
64 WasmB3IRGeneratorInlines.h \
65#
66
67# JavaScript builtins.
68
69BUILTINS_GENERATOR_SCRIPTS = \
70 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/__init__.py \
71 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/wkbuiltins.py \
72 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_generator.py \
73 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_model.py \
74 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_templates.py \
75 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_generate_combined_header.py \
76 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_generate_combined_implementation.py \
77 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_generate_separate_header.py \
78 $(JavaScriptCore_SCRIPTS_DIR)/wkbuiltins/builtins_generate_separate_implementation.py \
79 ${JavaScriptCore_SCRIPTS_DIR}/wkbuiltins/builtins_generate_wrapper_header.py \
80 ${JavaScriptCore_SCRIPTS_DIR}/wkbuiltins/builtins_generate_wrapper_implementation.py \
81 ${JavaScriptCore_SCRIPTS_DIR}/wkbuiltins/builtins_generate_internals_wrapper_header.py \
82 ${JavaScriptCore_SCRIPTS_DIR}/wkbuiltins/builtins_generate_internals_wrapper_implementation.py \
83 $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py \
84 $(JavaScriptCore_SCRIPTS_DIR)/lazywriter.py \
85#
86
87JavaScriptCore_BUILTINS_SOURCES = \
88 $(JavaScriptCore)/builtins/AsyncFromSyncIteratorPrototype.js \
89 $(JavaScriptCore)/builtins/ArrayConstructor.js \
90 $(JavaScriptCore)/builtins/ArrayIteratorPrototype.js \
91 $(JavaScriptCore)/builtins/ArrayPrototype.js \
92 $(JavaScriptCore)/builtins/AsyncIteratorPrototype.js \
93 $(JavaScriptCore)/builtins/AsyncFunctionPrototype.js \
94 $(JavaScriptCore)/builtins/AsyncGeneratorPrototype.js \
95 $(JavaScriptCore)/builtins/DatePrototype.js \
96 $(JavaScriptCore)/builtins/FunctionPrototype.js \
97 $(JavaScriptCore)/builtins/GeneratorPrototype.js \
98 $(JavaScriptCore)/builtins/GlobalObject.js \
99 $(JavaScriptCore)/builtins/GlobalOperations.js \
100 $(JavaScriptCore)/builtins/InspectorInstrumentationObject.js \
101 $(JavaScriptCore)/builtins/InternalPromiseConstructor.js \
102 $(JavaScriptCore)/builtins/IteratorHelpers.js \
103 $(JavaScriptCore)/builtins/IteratorPrototype.js \
104 $(JavaScriptCore)/builtins/MapIteratorPrototype.js \
105 $(JavaScriptCore)/builtins/MapPrototype.js \
106 $(JavaScriptCore)/builtins/ModuleLoader.js \
107 $(JavaScriptCore)/builtins/NumberConstructor.js \
108 $(JavaScriptCore)/builtins/ObjectConstructor.js \
109 $(JavaScriptCore)/builtins/PromiseConstructor.js \
110 $(JavaScriptCore)/builtins/PromiseOperations.js \
111 $(JavaScriptCore)/builtins/PromisePrototype.js \
112 $(JavaScriptCore)/builtins/ReflectObject.js \
113 $(JavaScriptCore)/builtins/RegExpPrototype.js \
114 ${JavaScriptCore}/builtins/RegExpStringIteratorPrototype.js \
115 $(JavaScriptCore)/builtins/SetIteratorPrototype.js \
116 $(JavaScriptCore)/builtins/SetPrototype.js \
117 $(JavaScriptCore)/builtins/StringConstructor.js \
118 $(JavaScriptCore)/builtins/StringIteratorPrototype.js \
119 $(JavaScriptCore)/builtins/StringPrototype.js \
120 $(JavaScriptCore)/builtins/TypedArrayConstructor.js \
121 $(JavaScriptCore)/builtins/TypedArrayPrototype.js \
122 $(JavaScriptCore)/builtins/WebAssembly.js \
123#
124
125# The combined output file depends on the contents of builtins and generator scripts, so
126# adding, modifying, or removing builtins or scripts will trigger regeneration of files.
127
128JavaScriptCore_BUILTINS_DEPENDENCIES_LIST : $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py DerivedSources.make
129 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py '$(JavaScriptCore_BUILTINS_SOURCES) $(BUILTINS_GENERATOR_SCRIPTS)' $@
130
131JSCBuiltins.h: $(BUILTINS_GENERATOR_SCRIPTS) $(JavaScriptCore_BUILTINS_SOURCES) JavaScriptCore_BUILTINS_DEPENDENCIES_LIST
132 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-js-builtins.py --combined --output-directory . --framework JavaScriptCore $(JavaScriptCore_BUILTINS_SOURCES)
133
134# Perfect hash lookup tables for JavaScript classes.
135
136OBJECT_LUT_HEADERS = \
137 AsyncFromSyncIteratorPrototype.lut.h \
138 ArrayConstructor.lut.h \
139 AsyncGeneratorPrototype.lut.h \
140 BigIntConstructor.lut.h \
141 BigIntPrototype.lut.h \
142 BooleanPrototype.lut.h \
143 DateConstructor.lut.h \
144 DatePrototype.lut.h \
145 ErrorPrototype.lut.h \
146 GeneratorPrototype.lut.h \
147 InspectorInstrumentationObject.lut.h \
148 IntlCollatorConstructor.lut.h \
149 IntlCollatorPrototype.lut.h \
150 IntlDateTimeFormatConstructor.lut.h \
151 IntlDateTimeFormatPrototype.lut.h \
152 IntlNumberFormatConstructor.lut.h \
153 IntlNumberFormatPrototype.lut.h \
154 IntlObject.lut.h \
155 IntlPluralRulesConstructor.lut.h \
156 IntlPluralRulesPrototype.lut.h \
157 JSDataViewPrototype.lut.h \
158 JSGlobalObject.lut.h \
159 JSInternalPromiseConstructor.lut.h \
160 JSModuleLoader.lut.h \
161 JSONObject.lut.h \
162 JSPromiseConstructor.lut.h \
163 JSPromisePrototype.lut.h \
164 JSWebAssembly.lut.h \
165 MapPrototype.lut.h \
166 NumberConstructor.lut.h \
167 NumberPrototype.lut.h \
168 ObjectConstructor.lut.h \
169 ReflectObject.lut.h \
170 RegExpConstructor.lut.h \
171 SetPrototype.lut.h \
172 StringConstructor.lut.h \
173 StringPrototype.lut.h \
174 SymbolConstructor.lut.h \
175 SymbolPrototype.lut.h \
176 WebAssemblyCompileErrorConstructor.lut.h \
177 WebAssemblyCompileErrorPrototype.lut.h \
178 WebAssemblyGlobalConstructor.lut.h \
179 WebAssemblyGlobalPrototype.lut.h \
180 WebAssemblyInstanceConstructor.lut.h \
181 WebAssemblyInstancePrototype.lut.h \
182 WebAssemblyLinkErrorConstructor.lut.h \
183 WebAssemblyLinkErrorPrototype.lut.h \
184 WebAssemblyMemoryConstructor.lut.h \
185 WebAssemblyMemoryPrototype.lut.h \
186 WebAssemblyModuleConstructor.lut.h \
187 WebAssemblyModulePrototype.lut.h \
188 WebAssemblyRuntimeErrorConstructor.lut.h \
189 WebAssemblyRuntimeErrorPrototype.lut.h \
190 WebAssemblyTableConstructor.lut.h \
191 WebAssemblyTablePrototype.lut.h \
192#
193
194$(OBJECT_LUT_HEADERS): %.lut.h : %.cpp $(JavaScriptCore)/create_hash_table
195 $(PERL) $(JavaScriptCore)/create_hash_table $< > $@
196
197Lexer.lut.h: Keywords.table $(JavaScriptCore)/create_hash_table
198 $(PERL) $(JavaScriptCore)/create_hash_table $< > $@
199
200# character tables for Yarr
201
202RegExpJitTables.h: yarr/create_regex_tables
203 $(PYTHON) $^ > $@
204
205KeywordLookup.h: KeywordLookupGenerator.py Keywords.table
206 $(PYTHON) $^ > $@
207
208# udis86 instruction tables
209
210udis86_itab.h: $(JavaScriptCore)/disassembler/udis86/ud_itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml
211 $(PYTHON) $(JavaScriptCore)/disassembler/udis86/ud_itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml .
212
213# Bytecode files
214
215BYTECODE_FILES = \
216 Bytecodes.h \
217 BytecodeIndices.h \
218 BytecodeStructs.h \
219 InitBytecodes.asm \
220 WasmLLIntGeneratorInlines.h \
221 InitWasm.asm \
222#
223BYTECODE_FILES_PATTERNS = $(subst .,%,$(BYTECODE_FILES))
224
225all : $(BYTECODE_FILES)
226
227$(BYTECODE_FILES_PATTERNS): $(wildcard $(JavaScriptCore)/generator/*.rb) $(JavaScriptCore)/bytecode/BytecodeList.rb $(JavaScriptCore)/wasm/wasm.json
228 $(RUBY) $(JavaScriptCore)/generator/main.rb $(JavaScriptCore)/bytecode/BytecodeList.rb \
229 --bytecode_structs_h BytecodeStructs.h \
230 --init_bytecodes_asm InitBytecodes.asm \
231 --bytecodes_h Bytecodes.h \
232 --bytecode_indices_h BytecodeIndices.h \
233 --wasm_json $(JavaScriptCore)/wasm/wasm.json \
234 --wasm_llint_generator_h WasmLLIntGeneratorInlines.h \
235 --init_wasm_llint InitWasm.asm \
236
237# Inspector interfaces
238
239INSPECTOR_DOMAINS := \
240 $(JavaScriptCore)/inspector/protocol/Animation.json \
241 $(JavaScriptCore)/inspector/protocol/ApplicationCache.json \
242 $(JavaScriptCore)/inspector/protocol/Audit.json \
243 $(JavaScriptCore)/inspector/protocol/CSS.json \
244 $(JavaScriptCore)/inspector/protocol/Canvas.json \
245 $(JavaScriptCore)/inspector/protocol/Console.json \
246 $(JavaScriptCore)/inspector/protocol/DOM.json \
247 $(JavaScriptCore)/inspector/protocol/DOMDebugger.json \
248 $(JavaScriptCore)/inspector/protocol/DOMStorage.json \
249 $(JavaScriptCore)/inspector/protocol/Database.json \
250 $(JavaScriptCore)/inspector/protocol/Debugger.json \
251 $(JavaScriptCore)/inspector/protocol/GenericTypes.json \
252 $(JavaScriptCore)/inspector/protocol/Heap.json \
253 $(JavaScriptCore)/inspector/protocol/Inspector.json \
254 $(JavaScriptCore)/inspector/protocol/LayerTree.json \
255 $(JavaScriptCore)/inspector/protocol/Network.json \
256 $(JavaScriptCore)/inspector/protocol/Page.json \
257 $(JavaScriptCore)/inspector/protocol/Recording.json \
258 $(JavaScriptCore)/inspector/protocol/Runtime.json \
259 $(JavaScriptCore)/inspector/protocol/ScriptProfiler.json \
260 $(JavaScriptCore)/inspector/protocol/Security.json \
261 $(JavaScriptCore)/inspector/protocol/Target.json \
262 $(JavaScriptCore)/inspector/protocol/Timeline.json \
263 $(JavaScriptCore)/inspector/protocol/Worker.json \
264#
265
266ifeq ($(findstring ENABLE_INDEXED_DATABASE,$(FEATURE_DEFINES)), ENABLE_INDEXED_DATABASE)
267 INSPECTOR_DOMAINS := $(INSPECTOR_DOMAINS) $(JavaScriptCore)/inspector/protocol/IndexedDB.json
268endif
269
270ifeq ($(findstring ENABLE_RESOURCE_USAGE,$(FEATURE_DEFINES)), ENABLE_RESOURCE_USAGE)
271 INSPECTOR_DOMAINS := $(INSPECTOR_DOMAINS) $(JavaScriptCore)/inspector/protocol/CPUProfiler.json
272 INSPECTOR_DOMAINS := $(INSPECTOR_DOMAINS) $(JavaScriptCore)/inspector/protocol/Memory.json
273endif
274
275ifeq ($(findstring ENABLE_SERVICE_WORKER,$(FEATURE_DEFINES)), ENABLE_SERVICE_WORKER)
276 INSPECTOR_DOMAINS := $(INSPECTOR_DOMAINS) $(JavaScriptCore)/inspector/protocol/ServiceWorker.json
277endif
278
279INSPECTOR_GENERATOR_SCRIPTS = \
280 $(JavaScriptCore)/inspector/scripts/codegen/__init__.py \
281 $(JavaScriptCore)/inspector/scripts/codegen/cpp_generator_templates.py \
282 $(JavaScriptCore)/inspector/scripts/codegen/cpp_generator.py \
283 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py \
284 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py \
285 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py \
286 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py \
287 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_protocol_types_header.py \
288 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py \
289 $(JavaScriptCore)/inspector/scripts/codegen/generate_js_backend_commands.py \
290 $(JavaScriptCore)/inspector/scripts/codegen/generator_templates.py \
291 $(JavaScriptCore)/inspector/scripts/codegen/generator.py \
292 $(JavaScriptCore)/inspector/scripts/codegen/models.py \
293 $(JavaScriptCore)/inspector/scripts/generate-inspector-protocol-bindings.py \
294 $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector-json.py \
295#
296
297# TODO: Is there some way to not hardcode this? Can we get it from
298# generate-inspector-protocol-bindings.py and ./CombinedDomains.json?
299INSPECTOR_DISPATCHER_FILES = \
300 inspector/InspectorAlternateBackendDispatchers.h \
301 inspector/InspectorBackendCommands.js \
302 inspector/InspectorBackendDispatchers.cpp \
303 inspector/InspectorBackendDispatchers.h \
304 inspector/InspectorFrontendDispatchers.cpp \
305 inspector/InspectorFrontendDispatchers.h \
306 inspector/InspectorProtocolObjects.cpp \
307 inspector/InspectorProtocolObjects.h \
308#
309INSPECTOR_DISPATCHER_FILES_PATTERNS = $(subst .,%,$(INSPECTOR_DISPATCHER_FILES))
310
311all : $(INSPECTOR_DISPATCHER_FILES)
312
313# The combined JSON file depends on the actual set of domains and their file contents, so that
314# adding, modifying, or removing domains will trigger regeneration of inspector files.
315
316.PHONY: force
317EnabledInspectorDomains : $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py force
318 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py '$(INSPECTOR_DOMAINS)' $@
319
320CombinedDomains.json : $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector-json.py $(INSPECTOR_DOMAINS) EnabledInspectorDomains
321 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector-json.py $(INSPECTOR_DOMAINS) > ./CombinedDomains.json
322
323# Inspector Backend Dispatchers, Frontend Dispatchers, Type Builders
324$(INSPECTOR_DISPATCHER_FILES_PATTERNS) : CombinedDomains.json $(INSPECTOR_GENERATOR_SCRIPTS)
325 $(PYTHON) $(JavaScriptCore)/inspector/scripts/generate-inspector-protocol-bindings.py --framework JavaScriptCore --outputDir inspector ./CombinedDomains.json
326
327InjectedScriptSource.h : inspector/InjectedScriptSource.js $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl
328 echo "//# sourceURL=__InjectedScript_InjectedScriptSource.js" > ./InjectedScriptSource.min.js
329 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py < $(JavaScriptCore)/inspector/InjectedScriptSource.js >> ./InjectedScriptSource.min.js
330 $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl InjectedScriptSource_js ./InjectedScriptSource.min.js InjectedScriptSource.h
331 $(DELETE) InjectedScriptSource.min.js
332
333AIR_OPCODE_FILES = \
334 AirOpcode.h \
335 AirOpcodeUtils.h \
336 AirOpcodeGenerated.h \
337#
338AIR_OPCODE_FILES_PATTERNS = $(subst .,%,$(AIR_OPCODE_FILES))
339
340all : $(AIR_OPCODE_FILES)
341
342$(AIR_OPCODE_FILES_PATTERNS) : $(JavaScriptCore)/b3/air/opcode_generator.rb $(JavaScriptCore)/b3/air/AirOpcode.opcodes
343 $(RUBY) $^
344
345UnicodePatternTables.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
346 $(PYTHON) $(JavaScriptCore)/yarr/generateYarrUnicodePropertyTables.py $(JavaScriptCore)/ucd ./UnicodePatternTables.h
347
348yarr/YarrCanonicalizeUnicode.cpp: $(JavaScriptCore)/yarr/generateYarrCanonicalizeUnicode $(JavaScriptCore)/ucd/CaseFolding.txt
349 $(PYTHON) $(JavaScriptCore)/yarr/generateYarrCanonicalizeUnicode $(JavaScriptCore)/ucd/CaseFolding.txt ./yarr/YarrCanonicalizeUnicode.cpp
350
351IntlCanonicalizeLanguage.h: $(JavaScriptCore)/Scripts/generateIntlCanonicalizeLanguage.py $(JavaScriptCore)/ucd/language-subtag-registry.txt
352 $(PYTHON) $(JavaScriptCore)/Scripts/generateIntlCanonicalizeLanguage.py $(JavaScriptCore)/ucd/language-subtag-registry.txt ./IntlCanonicalizeLanguage.h
353
354WasmOps.h: $(JavaScriptCore)/wasm/generateWasmOpsHeader.py $(JavaScriptCore)/wasm/generateWasm.py $(JavaScriptCore)/wasm/wasm.json
355 $(PYTHON) $(JavaScriptCore)/wasm/generateWasmOpsHeader.py $(JavaScriptCore)/wasm/wasm.json ./WasmOps.h
356
357WasmValidateInlines.h: $(JavaScriptCore)/wasm/generateWasmValidateInlinesHeader.py $(JavaScriptCore)/wasm/generateWasm.py $(JavaScriptCore)/wasm/wasm.json
358 $(PYTHON) $(JavaScriptCore)/wasm/generateWasmValidateInlinesHeader.py $(JavaScriptCore)/wasm/wasm.json ./WasmValidateInlines.h
359
360WasmB3IRGeneratorInlines.h: $(JavaScriptCore)/wasm/generateWasmB3IRGeneratorInlinesHeader.py $(JavaScriptCore)/wasm/generateWasm.py $(JavaScriptCore)/wasm/wasm.json
361 $(PYTHON) $(JavaScriptCore)/wasm/generateWasmB3IRGeneratorInlinesHeader.py $(JavaScriptCore)/wasm/wasm.json ./WasmB3IRGeneratorInlines.h
362
363# Dynamically-defined targets are listed below. Static targets belong up top.
364
365all : \
366 $(OBJECT_LUT_HEADERS) \
367#
Note: See TracBrowser for help on using the repository browser.