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

Last change on this file since 251959 was 251959, checked in by Devin Rousso, 6 years ago

Web Inspector: Timelines: add a timeline that shows information about any recorded CSS animation/transition
https://bugs.webkit.org/show_bug.cgi?id=203651
<rdar://problem/56128726>

Reviewed by Brian Burg.

Source/JavaScriptCore:

Unlike all other forms of Web Animations, CSS animations/transitions, are _not_ created by
JavaScript, and therefore can seemingly appear out of nowhere. This patch expands the Media
timeline to be the Media & Animations timeline, which tracks when CSS animations/transitions
are created, started, delayed, iterated, canceled, or finished.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources.make:
  • inspector/protocol/Animation.json: Added.
  • inspector/protocol/Timeline.json:

Add an Animation domain for handling the tracking of CSS Web Animations.

Source/WebCore:

Unlike all other forms of Web Animations, CSS animations/transitions, are _not_ created by
JavaScript, and therefore can seemingly appear out of nowhere. This patch expands the Media
timeline to be the Media & Animations timeline, which tracks when CSS animations/transitions
are created, started, delayed, iterated, canceled, or finished.

Test: inspector/animation/tracking.html

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::apply):

  • animation/WebAnimation.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::~WebAnimation):
(WebCore::WebAnimation::contextDestroyed): Added.
(WebCore::WebAnimation::setEffectInternal):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::willApplyKeyframeEffect): Added.
(WebCore::InspectorInstrumentation::didChangeWebAnimationEffect): Added.
(WebCore::InspectorInstrumentation::willDestroyWebAnimation): Added.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::willApplyKeyframeEffectImpl): Added.
(WebCore::InspectorInstrumentation::didChangeWebAnimationEffectImpl): Added.
(WebCore::InspectorInstrumentation::willDestroyWebAnimationImpl): Added.
Add instrumentation points for CSS animations/transitions.

  • inspector/agents/InspectorAnimationAgent.h: Added.
  • inspector/agents/InspectorAnimationAgent.cpp: Added.

(WebCore::InspectorAnimationAgent::InspectorAnimationAgent):
(WebCore::InspectorAnimationAgent::didCreateFrontendAndBackend):
(WebCore::InspectorAnimationAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorAnimationAgent::startTracking):
(WebCore::InspectorAnimationAgent::stopTracking):
(WebCore::isDelayed):
(WebCore::InspectorAnimationAgent::willApplyKeyframeEffect):
(WebCore::InspectorAnimationAgent::didChangeWebAnimationEffect):
(WebCore::InspectorAnimationAgent::willDestroyWebAnimation):
(WebCore::InspectorAnimationAgent::stopTrackingDeclarativeAnimation):

  • inspector/InstrumentingAgents.h:

(WebCore::InstrumentingAgents::persistentInspectorAnimationAgent const): Added.
(WebCore::InstrumentingAgents::setPersistentInspectorAnimationAgent): Added.
(WebCore::InstrumentingAgents::trackingInspectorAnimationAgent const): Added.
(WebCore::InstrumentingAgents::setTrackingInspectorAnimationAgent): Added.

  • inspector/InstrumentingAgents.cpp:

(WebCore::InstrumentingAgents::reset):

  • inspector/InspectorController.cpp:

(WebCore::InspectorController::createLazyAgents):
Add an Animation domain for handling the tracking of CSS Web Animations.

  • inspector/agents/InspectorTimelineAgent.h:
  • inspector/agents/InspectorTimelineAgent.cpp:

(WebCore::InspectorTimelineAgent::toggleInstruments):
(WebCore::InspectorTimelineAgent::toggleAnimationInstrument): Added.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebInspectorUI:

Unlike all other forms of Web Animations, CSS animations/transitions, are _not_ created by
JavaScript, and therefore can seemingly appear out of nowhere. This patch expands the Media
timeline to be the Media & Animations timeline, which tracks when CSS animations/transitions
are created, started, delayed, iterated, canceled, or finished.

  • UserInterface/Protocol/AnimationObserver.js: Added.

(WI.AnimationObserver.prototype.trackingStart):
(WI.AnimationObserver.prototype.trackingUpdate):
(WI.AnimationObserver.prototype.trackingComplete):

  • UserInterface/Protocol/Target.js:

(WI.Target.prototype.get AnimationAgent): Added.

  • UserInterface/Main.html:
  • UserInterface/Base/Main.js:

(WI.loaded):

  • UserInterface/Test.html:
  • UserInterface/Test/Test.js:

(WI.loaded):
Add an Animation domain for handling the tracking of CSS Web Animations.

  • UserInterface/Models/MediaInstrument.js:

(WI.MediaInstrument.prototype.startInstrumentation):
(WI.MediaInstrument.prototype.stopInstrumentation):
(WI.MediaInstrument):

  • UserInterface/Models/MediaTimeline.js: Added.

(WI.MediaTimeline.prototype.recordForTrackingAnimationId):
(WI.MediaTimeline.prototype.recordForMediaElementEvents):
(WI.MediaTimeline.prototype.reset):
(WI.MediaTimeline.prototype.addRecord):

  • UserInterface/Models/MediaTimelineRecord.js:

(WI.MediaTimelineRecord):
(WI.MediaTimelineRecord.async fromJSON):
(WI.MediaTimelineRecord.prototype.toJSON):
(WI.MediaTimelineRecord.prototype.get trackingAnimationId): Added.
(WI.MediaTimelineRecord.prototype.get timestamps): Added.
(WI.MediaTimelineRecord.prototype.get activeStartTime): Added.
(WI.MediaTimelineRecord.prototype.get updatesDynamically): Added.
(WI.MediaTimelineRecord.prototype.get usesActiveStartTime): Added.
(WI.MediaTimelineRecord.prototype.get displayName):
(WI.MediaTimelineRecord.prototype.get subtitle): Added.
(WI.MediaTimelineRecord.prototype.saveIdentityToCookie):
(WI.MediaTimelineRecord.prototype.updateProgress): Added.
(WI.MediaTimelineRecord.prototype.addDOMEvent): Added.
(WI.MediaTimelineRecord.prototype.powerEfficientPlaybackStateChanged): Added.
(WI.MediaTimelineRecord.prototype._updateTimes): Added.
(WI.MediaTimelineRecord.fromJSON): Deleted.
(WI.MediaTimelineRecord.prototype.get domEvent): Deleted.
(WI.MediaTimelineRecord.prototype.get isPowerEfficient): Deleted.

  • UserInterface/Models/Timeline.js:

(WI.Timeline.create):

  • UserInterface/Controllers/TimelineManager.js:

(WI.TimelineManager):
(WI.TimelineManager.prototype.async processJSON):
(WI.TimelineManager.prototype.animationTrackingStarted): Added.
(WI.TimelineManager.prototype.animationTrackingUpdated): Added.
(WI.TimelineManager.prototype.animationTrackingCompleted): Added.
(WI.TimelineManager.prototype._updateAutoCaptureInstruments):
(WI.TimelineManager.prototype._handleDOMNodeDidFireEvent):
(WI.TimelineManager.prototype._handleDOMNodePowerEfficientPlaybackStateChanged):
Start/Stop tracking animations based on whether the Media & Animations timeline is enabled.

  • UserInterface/Views/MediaTimelineOverviewGraph.js:

(WI.MediaTimelineOverviewGraph):
(WI.MediaTimelineOverviewGraph.get maximumRowCount): Added.
(WI.MediaTimelineOverviewGraph.prototype.reset):
(WI.MediaTimelineOverviewGraph.prototype.layout):
(WI.MediaTimelineOverviewGraph.prototype.updateSelectedRecord):
(WI.MediaTimelineOverviewGraph.prototype._processRecord): Added.
(WI.MediaTimelineOverviewGraph.prototype._processRecord.compareByStartTime): Added.
(WI.MediaTimelineOverviewGraph.prototype._handleRecordAdded):
(WI.MediaTimelineOverviewGraph.prototype._handleTimesUpdated): Added.
(WI.MediaTimelineOverviewGraph.prototype.shown): Deleted.
(WI.MediaTimelineOverviewGraph.prototype.hidden): Deleted.

  • UserInterface/Views/MediaTimelineOverviewGraph.css:

(.timeline-overview-graph.media): Added.
(.timeline-overview-graph.media > .graph-row): Added.
(.timeline-overview-graph.media > .graph-row > .timeline-record-bar): Added.
(.timeline-overview-graph.media > .graph-row > .timeline-record-bar:not(.unfinished) > .segment:not(.inactive)): Added.
(.timeline-overview-graph.media:nth-child(even) > .graph-row > .timeline-record-bar:not(.unfinished) > .segment:not(.inactive)): Added.
(.timeline-overview-graph.media > .timeline-record-bar): Deleted.
(.timeline-overview-graph.media > .timeline-record-bar > .segment): Deleted.

  • UserInterface/Views/MediaTimelineView.js:

(WI.MediaTimelineView):
(WI.MediaTimelineView.prototype.shown): Added.
(WI.MediaTimelineView.prototype.hidden): Added.
(WI.MediaTimelineView.prototype.closed):
(WI.MediaTimelineView.prototype.reset):
(WI.MediaTimelineView.prototype.dataGridSortComparator):
(WI.MediaTimelineView.prototype.dataGridSortComparator.compareDOMNodes):
(WI.MediaTimelineView.prototype._processPendingRecords):

  • UserInterface/Views/MediaTimelineDataGridNode.js:

(WI.MediaTimelineDataGridNode):
(WI.MediaTimelineDataGridNode.prototype.get data):
(WI.MediaTimelineDataGridNode.prototype.createCellContent):
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren): Added.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addReadySegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addDelaySegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addActiveSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addFullScreenSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPowerEfficientPlaybackSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPausedSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPlayingSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.filterableDataForColumn):
(WI.MediaTimelineDataGridNode.prototype._createNameCellDocumentFragment): Added.
(WI.MediaTimelineDataGridNode.prototype.iconClassNames): Deleted.

  • UserInterface/Views/TimelineRecordBar.js:

(WI.TimelineRecordBar):
(WI.TimelineRecordBar.prototype.refresh):
(WI.TimelineRecordBar.prototype._handleClick):

  • UserInterface/Views/TimelineRecordBar.css:

(.timeline-record-bar):
(.timeline-record-bar > :matches(img, .segment)):
(.timeline-record-bar > img):
(.timeline-record-bar > .segment):
(body[dir=ltr] .timeline-record-bar > .segment):
(body[dir=ltr] .timeline-record-bar > .segment:first-of-type):
(body[dir=ltr] .timeline-record-bar > .segment:last-of-type):
(body[dir=rtl] .timeline-record-bar > .segment):
(body[dir=rtl] .timeline-record-bar > .segment:first-of-type):
(body[dir=rtl] .timeline-record-bar > .segment:last-of-type):
(.timeline-record-bar > .segment:not(:last-of-type)):
(.timeline-record-bar.selected > .segment):
(.timeline-record-bar > .segment.inactive,):
(.timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(:focus .selected .timeline-record-bar:not(.has-custom-children) > .segment):
(:focus .selected .timeline-record-bar:not(.has-custom-children) > .segment.inactive):
(:focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(.timeline-record-bar.timeline-record-type-network > .segment):
(.timeline-record-bar.timeline-record-type-network > .segment.inactive):
(.timeline-record-bar.timeline-record-type-layout > .segment):
(.timeline-record-bar.timeline-record-type-layout.paint > .segment,):
(.timeline-record-bar.timeline-record-type-script > .segment):
(.timeline-record-bar.timeline-record-type-script.garbage-collected > .segment,):
(.timeline-record-bar.timeline-record-type-media > .segment):
(.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment):
(.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment.css-animation-ready):
(.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment:matches(.css-animation-delay, .media-element-paused)):
(.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment):
(.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment.media-element-full-screen):
(.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment.media-element-power-efficient-playback):
(body[dir=ltr] .timeline-record-bar > .segment.inactive,): Deleted.
(body[dir=ltr] .timeline-record-bar.has-inactive-segment > .segment:not(.inactive),): Deleted.
(:focus .selected .timeline-record-bar > .segment): Deleted.
(:focus .selected .timeline-record-bar > .segment.inactive): Deleted.
(body[dir=ltr] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
(body[dir=rtl] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
Allow timeline record bars to be customized through a delegate callback. If provided, it
will be used instead of any default content. It is expected to return an array of objects,
each having a startTime number, classNames array, and title string. It can also have a
endTime number and an image string. If endTime is NaN, the record is unfinished. If
image is provided, an <img> will be used instead of a segment, allowing for markers.

  • UserInterface/Views/TimelineDataGridNode.js:

(WI.TimelineDataGridNode.prototype.createCellContent):
Add a default fallback for WI.DOMNode values.

  • UserInterface/Views/TimelineTabContentView.js:

(WI.TimelineTabContentView.displayNameForTimelineType):
(WI.TimelineTabContentView.iconClassNameForRecord):
(WI.TimelineTabContentView.displayNameForRecord):

  • UserInterface/Views/TimelineRecordTreeElement.js:
  • UserInterface/Views/TimelineIcons.css:

(.animation-frame-record .icon):
(.css-animation-record .icon): Added.
(.css-transition-record .icon): Added.
(.media-element-record .icon): Added.
(.animation-record .icon): Deleted.
(.dom-event-record .icon): Deleted.
(.dom-event-record.fullscreen .icon): Deleted.
(.power-efficient-playback-state-changed-record .icon): Deleted.

  • UserInterface/Images/DOMEventFullscreen.svg: Removed.
  • UserInterface/Images/EventCancel.svg: Added.
  • UserInterface/Images/EventIteration.svg: Added.
  • UserInterface/Images/EventPause.svg:
  • UserInterface/Images/EventPlay.svg:
  • UserInterface/Images/EventProcessing.svg:
  • UserInterface/Images/EventStop.svg:
  • UserInterface/Images/PowerEfficientPlaybackStateChanged.svg: Removed.
  • UserInterface/Images/TimelineRecordAnimationFrame.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/TimelineRecordAnimation.svg.
  • UserInterface/Images/TimelineRecordCSSAnimation.svg: Added.
  • UserInterface/Images/TimelineRecordCSSTransition.svg: Added.
  • UserInterface/Images/TimelineRecordMediaElement.svg: Added.

Add new media icons.

  • UserInterface/Models/TimelineRecording.js:

(WI.TimelineRecording.async import): Added.
(WI.TimelineRecording.import): Deleted.

  • UserInterface/Models/TimelineRecord.js:
  • UserInterface/Models/CPUTimelineRecord.js:
  • UserInterface/Models/HeapAllocationsTimelineRecord.js:

(WI.HeapAllocationsTimelineRecord.async fromJSON): Added.
(WI.HeapAllocationsTimelineRecord.fromJSON): Deleted.

  • UserInterface/Models/LayoutTimelineRecord.js:
  • UserInterface/Models/MemoryTimelineRecord.js:
  • UserInterface/Models/RenderingFrameTimelineRecord.js:
  • UserInterface/Models/ResourceTimelineRecord.js:
  • UserInterface/Models/ScriptTimelineRecord.js:

Make the importing of timeline records async so we can attempt to rehydrate the DOM nodes
of any media records (as well as wait for heap snapshots).

  • UserInterface/Models/DOMNode.js:

(WI.DOMNode):
(WI.DOMNode.prototype.isMediaElement): Added.
(WI.DOMNode.prototype._shouldListenForEventListeners): Deleted.

  • Localizations/en.lproj/localizedStrings.js:

Source/WTF:

  • wtf/Markable.h:

(WTF::operator==):
(WTF::operator!=):
Add extra utility operators.

Tools:

  • TestWebKitAPI/Tests/WTF/Markable.cpp:

(TestWebKitAPI::TEST):
Add tests for extra utility operators.

LayoutTests:

  • inspector/animation/tracking.html: Added.
  • inspector/animation/tracking-expected.txt: Added.
  • Property svn:eol-style set to native
File size: 17.3 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 WebAssemblyInstanceConstructor.lut.h \
179 WebAssemblyInstancePrototype.lut.h \
180 WebAssemblyLinkErrorConstructor.lut.h \
181 WebAssemblyLinkErrorPrototype.lut.h \
182 WebAssemblyMemoryConstructor.lut.h \
183 WebAssemblyMemoryPrototype.lut.h \
184 WebAssemblyModuleConstructor.lut.h \
185 WebAssemblyModulePrototype.lut.h \
186 WebAssemblyRuntimeErrorConstructor.lut.h \
187 WebAssemblyRuntimeErrorPrototype.lut.h \
188 WebAssemblyTableConstructor.lut.h \
189 WebAssemblyTablePrototype.lut.h \
190#
191
192$(OBJECT_LUT_HEADERS): %.lut.h : %.cpp $(JavaScriptCore)/create_hash_table
193 $(PERL) $(JavaScriptCore)/create_hash_table $< > $@
194
195Lexer.lut.h: Keywords.table $(JavaScriptCore)/create_hash_table
196 $(PERL) $(JavaScriptCore)/create_hash_table $< > $@
197
198# character tables for Yarr
199
200RegExpJitTables.h: yarr/create_regex_tables
201 $(PYTHON) $^ > $@
202
203KeywordLookup.h: KeywordLookupGenerator.py Keywords.table
204 $(PYTHON) $^ > $@
205
206# udis86 instruction tables
207
208udis86_itab.h: $(JavaScriptCore)/disassembler/udis86/ud_itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml
209 $(PYTHON) $(JavaScriptCore)/disassembler/udis86/ud_itab.py $(JavaScriptCore)/disassembler/udis86/optable.xml .
210
211# Bytecode files
212
213BYTECODE_FILES = \
214 Bytecodes.h \
215 BytecodeIndices.h \
216 BytecodeStructs.h \
217 InitBytecodes.asm \
218 WasmLLIntGeneratorInlines.h \
219 InitWasm.asm \
220#
221BYTECODE_FILES_PATTERNS = $(subst .,%,$(BYTECODE_FILES))
222
223all : $(BYTECODE_FILES)
224
225$(BYTECODE_FILES_PATTERNS): $(wildcard $(JavaScriptCore)/generator/*.rb) $(JavaScriptCore)/bytecode/BytecodeList.rb $(JavaScriptCore)/wasm/wasm.json
226 $(RUBY) $(JavaScriptCore)/generator/main.rb $(JavaScriptCore)/bytecode/BytecodeList.rb \
227 --bytecode_structs_h BytecodeStructs.h \
228 --init_bytecodes_asm InitBytecodes.asm \
229 --bytecodes_h Bytecodes.h \
230 --bytecode_indices_h BytecodeIndices.h \
231 --wasm_json $(JavaScriptCore)/wasm/wasm.json \
232 --wasm_llint_generator_h WasmLLIntGeneratorInlines.h \
233 --init_wasm_llint InitWasm.asm \
234
235# Inspector interfaces
236
237INSPECTOR_DOMAINS := \
238 $(JavaScriptCore)/inspector/protocol/Animation.json \
239 $(JavaScriptCore)/inspector/protocol/ApplicationCache.json \
240 $(JavaScriptCore)/inspector/protocol/Audit.json \
241 $(JavaScriptCore)/inspector/protocol/CSS.json \
242 $(JavaScriptCore)/inspector/protocol/Canvas.json \
243 $(JavaScriptCore)/inspector/protocol/Console.json \
244 $(JavaScriptCore)/inspector/protocol/DOM.json \
245 $(JavaScriptCore)/inspector/protocol/DOMDebugger.json \
246 $(JavaScriptCore)/inspector/protocol/DOMStorage.json \
247 $(JavaScriptCore)/inspector/protocol/Database.json \
248 $(JavaScriptCore)/inspector/protocol/Debugger.json \
249 $(JavaScriptCore)/inspector/protocol/GenericTypes.json \
250 $(JavaScriptCore)/inspector/protocol/Heap.json \
251 $(JavaScriptCore)/inspector/protocol/Inspector.json \
252 $(JavaScriptCore)/inspector/protocol/LayerTree.json \
253 $(JavaScriptCore)/inspector/protocol/Network.json \
254 $(JavaScriptCore)/inspector/protocol/Page.json \
255 $(JavaScriptCore)/inspector/protocol/Recording.json \
256 $(JavaScriptCore)/inspector/protocol/Runtime.json \
257 $(JavaScriptCore)/inspector/protocol/ScriptProfiler.json \
258 $(JavaScriptCore)/inspector/protocol/Security.json \
259 $(JavaScriptCore)/inspector/protocol/Target.json \
260 $(JavaScriptCore)/inspector/protocol/Timeline.json \
261 $(JavaScriptCore)/inspector/protocol/Worker.json \
262#
263
264ifeq ($(findstring ENABLE_INDEXED_DATABASE,$(FEATURE_DEFINES)), ENABLE_INDEXED_DATABASE)
265 INSPECTOR_DOMAINS := $(INSPECTOR_DOMAINS) $(JavaScriptCore)/inspector/protocol/IndexedDB.json
266endif
267
268ifeq ($(findstring ENABLE_RESOURCE_USAGE,$(FEATURE_DEFINES)), ENABLE_RESOURCE_USAGE)
269 INSPECTOR_DOMAINS := $(INSPECTOR_DOMAINS) $(JavaScriptCore)/inspector/protocol/CPUProfiler.json
270 INSPECTOR_DOMAINS := $(INSPECTOR_DOMAINS) $(JavaScriptCore)/inspector/protocol/Memory.json
271endif
272
273ifeq ($(findstring ENABLE_SERVICE_WORKER,$(FEATURE_DEFINES)), ENABLE_SERVICE_WORKER)
274 INSPECTOR_DOMAINS := $(INSPECTOR_DOMAINS) $(JavaScriptCore)/inspector/protocol/ServiceWorker.json
275endif
276
277INSPECTOR_GENERATOR_SCRIPTS = \
278 $(JavaScriptCore)/inspector/scripts/codegen/__init__.py \
279 $(JavaScriptCore)/inspector/scripts/codegen/cpp_generator_templates.py \
280 $(JavaScriptCore)/inspector/scripts/codegen/cpp_generator.py \
281 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py \
282 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py \
283 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py \
284 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py \
285 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_protocol_types_header.py \
286 $(JavaScriptCore)/inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py \
287 $(JavaScriptCore)/inspector/scripts/codegen/generate_js_backend_commands.py \
288 $(JavaScriptCore)/inspector/scripts/codegen/generator_templates.py \
289 $(JavaScriptCore)/inspector/scripts/codegen/generator.py \
290 $(JavaScriptCore)/inspector/scripts/codegen/models.py \
291 $(JavaScriptCore)/inspector/scripts/generate-inspector-protocol-bindings.py \
292 $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector-json.py \
293#
294
295# TODO: Is there some way to not hardcode this? Can we get it from
296# generate-inspector-protocol-bindings.py and ./CombinedDomains.json?
297INSPECTOR_DISPATCHER_FILES = \
298 inspector/InspectorAlternateBackendDispatchers.h \
299 inspector/InspectorBackendCommands.js \
300 inspector/InspectorBackendDispatchers.cpp \
301 inspector/InspectorBackendDispatchers.h \
302 inspector/InspectorFrontendDispatchers.cpp \
303 inspector/InspectorFrontendDispatchers.h \
304 inspector/InspectorProtocolObjects.cpp \
305 inspector/InspectorProtocolObjects.h \
306#
307INSPECTOR_DISPATCHER_FILES_PATTERNS = $(subst .,%,$(INSPECTOR_DISPATCHER_FILES))
308
309all : $(INSPECTOR_DISPATCHER_FILES)
310
311# The combined JSON file depends on the actual set of domains and their file contents, so that
312# adding, modifying, or removing domains will trigger regeneration of inspector files.
313
314.PHONY: force
315EnabledInspectorDomains : $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py force
316 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/UpdateContents.py '$(INSPECTOR_DOMAINS)' $@
317
318CombinedDomains.json : $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector-json.py $(INSPECTOR_DOMAINS) EnabledInspectorDomains
319 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/generate-combined-inspector-json.py $(INSPECTOR_DOMAINS) > ./CombinedDomains.json
320
321# Inspector Backend Dispatchers, Frontend Dispatchers, Type Builders
322$(INSPECTOR_DISPATCHER_FILES_PATTERNS) : CombinedDomains.json $(INSPECTOR_GENERATOR_SCRIPTS)
323 $(PYTHON) $(JavaScriptCore)/inspector/scripts/generate-inspector-protocol-bindings.py --framework JavaScriptCore --outputDir inspector ./CombinedDomains.json
324
325InjectedScriptSource.h : inspector/InjectedScriptSource.js $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl
326 echo "//# sourceURL=__InjectedScript_InjectedScriptSource.js" > ./InjectedScriptSource.min.js
327 $(PYTHON) $(JavaScriptCore_SCRIPTS_DIR)/jsmin.py < $(JavaScriptCore)/inspector/InjectedScriptSource.js >> ./InjectedScriptSource.min.js
328 $(PERL) $(JavaScriptCore_SCRIPTS_DIR)/xxd.pl InjectedScriptSource_js ./InjectedScriptSource.min.js InjectedScriptSource.h
329 $(DELETE) InjectedScriptSource.min.js
330
331AIR_OPCODE_FILES = \
332 AirOpcode.h \
333 AirOpcodeUtils.h \
334 AirOpcodeGenerated.h \
335#
336AIR_OPCODE_FILES_PATTERNS = $(subst .,%,$(AIR_OPCODE_FILES))
337
338all : $(AIR_OPCODE_FILES)
339
340$(AIR_OPCODE_FILES_PATTERNS) : $(JavaScriptCore)/b3/air/opcode_generator.rb $(JavaScriptCore)/b3/air/AirOpcode.opcodes
341 $(RUBY) $^
342
343UnicodePatternTables.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
344 $(PYTHON) $(JavaScriptCore)/yarr/generateYarrUnicodePropertyTables.py $(JavaScriptCore)/ucd ./UnicodePatternTables.h
345
346yarr/YarrCanonicalizeUnicode.cpp: $(JavaScriptCore)/yarr/generateYarrCanonicalizeUnicode $(JavaScriptCore)/ucd/CaseFolding.txt
347 $(PYTHON) $(JavaScriptCore)/yarr/generateYarrCanonicalizeUnicode $(JavaScriptCore)/ucd/CaseFolding.txt ./yarr/YarrCanonicalizeUnicode.cpp
348
349IntlCanonicalizeLanguage.h: $(JavaScriptCore)/Scripts/generateIntlCanonicalizeLanguage.py $(JavaScriptCore)/ucd/language-subtag-registry.txt
350 $(PYTHON) $(JavaScriptCore)/Scripts/generateIntlCanonicalizeLanguage.py $(JavaScriptCore)/ucd/language-subtag-registry.txt ./IntlCanonicalizeLanguage.h
351
352WasmOps.h: $(JavaScriptCore)/wasm/generateWasmOpsHeader.py $(JavaScriptCore)/wasm/generateWasm.py $(JavaScriptCore)/wasm/wasm.json
353 $(PYTHON) $(JavaScriptCore)/wasm/generateWasmOpsHeader.py $(JavaScriptCore)/wasm/wasm.json ./WasmOps.h
354
355WasmValidateInlines.h: $(JavaScriptCore)/wasm/generateWasmValidateInlinesHeader.py $(JavaScriptCore)/wasm/generateWasm.py $(JavaScriptCore)/wasm/wasm.json
356 $(PYTHON) $(JavaScriptCore)/wasm/generateWasmValidateInlinesHeader.py $(JavaScriptCore)/wasm/wasm.json ./WasmValidateInlines.h
357
358WasmB3IRGeneratorInlines.h: $(JavaScriptCore)/wasm/generateWasmB3IRGeneratorInlinesHeader.py $(JavaScriptCore)/wasm/generateWasm.py $(JavaScriptCore)/wasm/wasm.json
359 $(PYTHON) $(JavaScriptCore)/wasm/generateWasmB3IRGeneratorInlinesHeader.py $(JavaScriptCore)/wasm/wasm.json ./WasmB3IRGeneratorInlines.h
360
361# Dynamically-defined targets are listed below. Static targets belong up top.
362
363all : \
364 $(OBJECT_LUT_HEADERS) \
365#
366
367.PHONY : BytecodeCacheVersion.h
368
369BytecodeCacheVersion.h:
370 echo "#define JSC_BYTECODE_CACHE_VERSION $(shell date '+%s')" > BytecodeCacheVersion.h
371
372all : BytecodeCacheVersion.h
Note: See TracBrowser for help on using the repository browser.