Cache glyph paths and share underline skipping code between all the ports
[WebKit-https.git] / PerformanceTests / ChangeLog
1 2018-11-05  Myles C. Maxfield  <mmaxfield@apple.com>
2
3         Cache glyph paths and share underline skipping code between all the ports
4         https://bugs.webkit.org/show_bug.cgi?id=191239
5
6         Reviewed by Alex Christensen.
7
8         Measures the performance of drawing a whole lot of underlines
9
10         * Layout/underline.html: Added.
11
12 2018-10-25  Saam Barati  <sbarati@apple.com>
13
14         Check in corresponding C code in JetStream 2
15         https://bugs.webkit.org/show_bug.cgi?id=190733
16
17         Rubber-stamped by Filip Pizlo.
18
19         * JetStream2/simple/float-mm.c: Added.
20         * JetStream2/wasm/HashSet.cpp: Added.
21         * JetStream2/wasm/gcc-loops.cpp: Added.
22         * JetStream2/wasm/quicksort.c: Added.
23         * JetStream2/wasm/TSF: Added.
24         * JetStream2/wasm/TSF/build.sh: Added.
25         * JetStream2/wasm/TSF/config.h: Added.
26         * JetStream2/wasm/TSF/gpc.h: Added.
27         * JetStream2/wasm/TSF/gpc_code_gen_util.c: Added.
28         * JetStream2/wasm/TSF/gpc_instruction.c: Added.
29         * JetStream2/wasm/TSF/gpc_instruction_dispatch.gen: Added.
30         * JetStream2/wasm/TSF/gpc_instruction_size.gen: Added.
31         * JetStream2/wasm/TSF/gpc_instruction_stack_effects.gen: Added.
32         * JetStream2/wasm/TSF/gpc_instruction_static_size.gen: Added.
33         * JetStream2/wasm/TSF/gpc_instruction_to_string.gen: Added.
34         * JetStream2/wasm/TSF/gpc_int_common.h: Added.
35         * JetStream2/wasm/TSF/gpc_intable.c: Added.
36         * JetStream2/wasm/TSF/gpc_internal.h: Added.
37         * JetStream2/wasm/TSF/gpc_interpreter.gen: Added.
38         * JetStream2/wasm/TSF/gpc_program.c: Added.
39         * JetStream2/wasm/TSF/gpc_proto.c: Added.
40         * JetStream2/wasm/TSF/gpc_stack_height.c: Added.
41         * JetStream2/wasm/TSF/gpc_threaded.c: Added.
42         * JetStream2/wasm/TSF/gpc_worklist.h: Added.
43         * JetStream2/wasm/TSF/tsf.h: Added.
44         * JetStream2/wasm/TSF/tsf_adaptive_reader.c: Added.
45         * JetStream2/wasm/TSF/tsf_asprintf.c: Added.
46         * JetStream2/wasm/TSF/tsf_atomics.h: Added.
47         * JetStream2/wasm/TSF/tsf_buf_reader.c: Added.
48         * JetStream2/wasm/TSF/tsf_buf_writer.c: Added.
49         * JetStream2/wasm/TSF/tsf_buffer.c: Added.
50         * JetStream2/wasm/TSF/tsf_build_defines.h: Added.
51         * JetStream2/wasm/TSF/tsf_config.h: Added.
52         * JetStream2/wasm/TSF/tsf_config_stub.h: Added.
53         * JetStream2/wasm/TSF/tsf_copier.c: Added.
54         * JetStream2/wasm/TSF/tsf_define_helpers.c: Added.
55         * JetStream2/wasm/TSF/tsf_define_helpers.h: Added.
56         * JetStream2/wasm/TSF/tsf_destructor.c: Added.
57         * JetStream2/wasm/TSF/tsf_error.c: Added.
58         * JetStream2/wasm/TSF/tsf_format.h: Added.
59         * JetStream2/wasm/TSF/tsf_fsdb.c: Added.
60         * JetStream2/wasm/TSF/tsf_fsdb_protocol.c: Added.
61         * JetStream2/wasm/TSF/tsf_fsdb_protocol.h: Added.
62         * JetStream2/wasm/TSF/tsf_generator.c: Added.
63         * JetStream2/wasm/TSF/tsf_gpc_code_gen.c: Added.
64         * JetStream2/wasm/TSF/tsf_indent.h: Added.
65         * JetStream2/wasm/TSF/tsf_internal.h: Added.
66         * JetStream2/wasm/TSF/tsf_internal_config.h: Added.
67         * JetStream2/wasm/TSF/tsf_internal_config_stub.h: Added.
68         * JetStream2/wasm/TSF/tsf_inttypes.h: Added.
69         * JetStream2/wasm/TSF/tsf_io.c: Added.
70         * JetStream2/wasm/TSF/tsf_io_utils.c: Added.
71         * JetStream2/wasm/TSF/tsf_ir.c: Added.
72         * JetStream2/wasm/TSF/tsf_ir.h: Added.
73         * JetStream2/wasm/TSF/tsf_ir_different.c: Added.
74         * JetStream2/wasm/TSF/tsf_ir_different.h: Added.
75         * JetStream2/wasm/TSF/tsf_ir_speed.c: Added.
76         * JetStream2/wasm/TSF/tsf_limits.c: Added.
77         * JetStream2/wasm/TSF/tsf_named_type.c: Added.
78         * JetStream2/wasm/TSF/tsf_native.c: Added.
79         * JetStream2/wasm/TSF/tsf_parser.c: Added.
80         * JetStream2/wasm/TSF/tsf_primitive.c: Added.
81         * JetStream2/wasm/TSF/tsf_ra_type_man.c: Added.
82         * JetStream2/wasm/TSF/tsf_reflect.c: Added.
83         * JetStream2/wasm/TSF/tsf_region.h: Added.
84         * JetStream2/wasm/TSF/tsf_serial_in_man.c: Added.
85         * JetStream2/wasm/TSF/tsf_serial_out_man.c: Added.
86         * JetStream2/wasm/TSF/tsf_serial_protocol.h: Added.
87         * JetStream2/wasm/TSF/tsf_sha1.c: Added.
88         * JetStream2/wasm/TSF/tsf_sha1.h: Added.
89         * JetStream2/wasm/TSF/tsf_sha1_writer.c: Added.
90         * JetStream2/wasm/TSF/tsf_sort.c: Added.
91         * JetStream2/wasm/TSF/tsf_st.c: Added.
92         * JetStream2/wasm/TSF/tsf_st.h: Added.
93         * JetStream2/wasm/TSF/tsf_st_typetable.c: Added.
94         * JetStream2/wasm/TSF/tsf_stream_file_input.c: Added.
95         * JetStream2/wasm/TSF/tsf_stream_file_output.c: Added.
96         * JetStream2/wasm/TSF/tsf_type.c: Added.
97         * JetStream2/wasm/TSF/tsf_type_in_map.c: Added.
98         * JetStream2/wasm/TSF/tsf_type_out_map.c: Added.
99         * JetStream2/wasm/TSF/tsf_type_table.c: Added.
100         * JetStream2/wasm/TSF/tsf_types.h: Added.
101         * JetStream2/wasm/TSF/tsf_util.h: Added.
102         * JetStream2/wasm/TSF/tsf_version.c: Added.
103         * JetStream2/wasm/TSF/tsf_zip_abstract.c: Added.
104         * JetStream2/wasm/TSF/tsf_zip_abstract.h: Added.
105         * JetStream2/wasm/TSF/tsf_zip_attr.c: Added.
106         * JetStream2/wasm/TSF/tsf_zip_reader.c: Added.
107         * JetStream2/wasm/TSF/tsf_zip_writer.c: Added.
108
109 2018-10-18  Saam Barati  <sbarati@apple.com>
110
111         Make JetStream 2
112         https://bugs.webkit.org/show_bug.cgi?id=187829
113
114         Rubber-stamped by Mark Lam.
115
116         This patch checks in the new JetStream 2 benchmark. JetStream 2 is
117         a new JavaScript and Web Assembly benchmark. JetStream 2's goal
118         is to measure the startup, worst case, and peak throughput performance
119         of the JavaScript engine. JetStream 2 incorporates these previous
120         benchmarks:
121         - JetStream
122         - ARES-6
123         - Kraken
124         - Web Tooling Benchmark
125         - WasmBench
126         - RexBench
127         
128         JetStream 2 also adds some new benchmarks:
129         - Two tests emphasizing web worker performance.
130         - One test emphasizing Promise, async iteration, and DataView performance.
131         - Two new code load tests.
132         - WSL: a test measuring all kinds of things, especially emphasizing exception performance.
133
134         * JetStream2: Added.
135
136 2018-10-02  Chris Dumez  <cdumez@apple.com>
137
138         Regression(r236613): Parser/html-parser.html performance test is failing
139         https://bugs.webkit.org/show_bug.cgi?id=190201
140
141         Unreviewed, apply the same fix as in r236699 to make sure the iframe is treated as
142         same origin, so that calls to document.open() / document.write() succeed.
143
144         * Parser/html-parser.html:
145
146 2018-10-01  Chris Dumez  <cdumez@apple.com>
147
148         Regression(r236613): Parser/HTML5-8266-ParseOnly.html performance tests no longer runs
149         https://bugs.webkit.org/show_bug.cgi?id=190174
150
151         Reviewed by Ryosuke Niwa.
152
153         Update iframe's sandbox to use 'allow-same-origin' so that the iframe is treated as same-origin and so that
154         the top frame can call document.open() / document.write() on the subframe. This test was also failing in
155         Firefox without this change.
156
157         * Parser/HTML5-8266-ParseOnly.html:
158
159 2018-08-27  Aditya Keerthi  <akeerthi@apple.com>
160
161         Consolidate ENABLE_INPUT_TYPE_COLOR and ENABLE_INPUT_TYPE_COLOR_POPOVER
162         https://bugs.webkit.org/show_bug.cgi?id=188931
163
164         Reviewed by Wenson Hsieh.
165
166         * StitchMarker/wtf/FeatureDefines.h: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.
167
168 2018-08-23  Don Olmstead  <don.olmstead@sony.com>
169
170         [CMake] Have checks are not getting set inside CMake properly
171         https://bugs.webkit.org/show_bug.cgi?id=188901
172
173         Reviewed by Michael Catanzaro.
174
175         Add notification that MallocBench is disabled.
176
177         * CMakeLists.txt:
178
179 2018-08-23  Don Olmstead  <don.olmstead@sony.com>
180
181         [CMake] Add HAVE_MALLOC_TRIM definition
182         https://bugs.webkit.org/show_bug.cgi?id=188897
183
184         Reviewed by Konstantin Tokarev.
185
186         MallocBench should only be built on Apple platforms and platforms that
187         have malloc_trim.
188
189         * CMakeLists.txt:
190
191 2018-08-13  Jon Lee  <jonlee@apple.com>
192
193         Update MotionMark version number
194         https://bugs.webkit.org/show_bug.cgi?id=188535
195         <rdar://problem/43254078>
196
197         Reviewed by Said Abou-Hallawa.
198
199         * MotionMark/resources/strings.js: To 1.1.
200
201 2018-08-13  Jon Lee  <jonlee@apple.com>
202
203         [MotionMark] Update Multiply test
204         https://bugs.webkit.org/show_bug.cgi?id=188532
205         <rdar://problem/43252151>
206
207         Reviewed by Said Abou-Hallawa.
208
209         Update Multiply test to have a larger upper limit of number of particles. Cycle through three
210         different ways of hiding an element. Add new Multiple suite that isolates those components for
211         debugging purposes.
212
213         * MotionMark/resources/debug-runner/tests.js:
214         * MotionMark/tests/dom/multiply.html: Added.
215         * MotionMark/tests/dom/resources/multiply.js: Added.
216         * MotionMark/tests/master/resources/multiply.js:
217
218 2018-08-13  Jon Lee  <jonlee@apple.com>
219
220         [MotionMark] Update Leaves test
221         https://bugs.webkit.org/show_bug.cgi?id=188530
222         <rdar://problem/43251862>
223
224         Reviewed by Said Abou-Hallawa.
225
226         Update Leaves test to include opacity and scale. Add new Leaves suite that isolate those components
227         for debugging purposes.
228
229         * MotionMark/resources/debug-runner/tests.js:
230         * MotionMark/tests/dom/leaves.html:
231         * MotionMark/tests/dom/resources/leaves.js:
232         * MotionMark/tests/master/resources/leaves.js:
233
234 2018-08-10  Ben Richards  <benton_richards@apple.com>
235
236         Add ability to ignore process prewarming for launch time benchmark
237         https://bugs.webkit.org/show_bug.cgi?id=188462
238
239         Reviewed by Ryosuke Niwa.
240
241         Added a flag to the new tab benchmark that will open a blank tab before the tab to be measured in order to ignore process prewarming.
242
243         * LaunchTime/launch_time.py:
244         (DefaultLaunchTimeHandler):
245         (DefaultLaunchTimeHandler.on_receive_stop_time): Deleted.
246         (DefaultLaunchTimeHandler.on_receive_stop_signal):
247         (DefaultLaunchTimeHandler.do_HEAD):
248         (DefaultLaunchTimeHandler.do_GET):
249         (DefaultLaunchTimeHandler.do_POST):
250         (LaunchTimeBenchmark):
251         (LaunchTimeBenchmark._standard_deviation): Fixed divide by zero bug when '-n' is set to 1
252         (LaunchTimeBenchmark.open_tab): Added option to open a blank tab
253         (LaunchTimeBenchmark.run):
254         * LaunchTime/new_tab.py:
255         (NewTabBenchmark.initialize):
256         (NewTabBenchmark.run_iteration):
257         (NewTabBenchmark.will_parse_arguments):
258         (NewTabBenchmark.did_parse_arguments):
259         (NewTabBenchmark.ResponseHandler.Handler.get_test_page):
260         (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted.
261         (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_signal):
262         (NewTabBenchmark):
263         * LaunchTime/startup.py:
264         (StartupBenchmark.ResponseHandler.Handler.get_test_page):
265         (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted.
266         (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_signal):
267         (StartupBenchmark):
268
269 2018-08-10  Truitt Savell  <tsavell@apple.com>
270
271         Unreviewed, rolling out r234750.
272
273         Caused 185 perf test failures.
274
275         Reverted changeset:
276
277         "Add ability to ignore process prewarming for launch time
278         benchmark"
279         https://bugs.webkit.org/show_bug.cgi?id=188462
280         https://trac.webkit.org/changeset/234750
281
282 2018-08-09  Ben Richards  <benton_richards@apple.com>
283
284         Add ability to ignore process prewarming for launch time benchmark
285         https://bugs.webkit.org/show_bug.cgi?id=188462
286
287         Reviewed by Ryosuke Niwa.
288
289         Added a flag to the new tab benchmark that will open a blank tab before the tab to be measured in order to ignore process prewarming.
290
291         * LaunchTime/launch_time.py:
292         (DefaultLaunchTimeHandler):
293         (DefaultLaunchTimeHandler.on_receive_stop_time): Deleted.
294         (DefaultLaunchTimeHandler.on_receive_stop_signal):
295         (DefaultLaunchTimeHandler.do_HEAD):
296         (DefaultLaunchTimeHandler.do_GET):
297         (DefaultLaunchTimeHandler.do_POST):
298         (LaunchTimeBenchmark):
299         (LaunchTimeBenchmark._standard_deviation): Fixed divide by zero bug when '-n' is set to 1
300         (LaunchTimeBenchmark.open_tab): Added option to open a blank tab
301         (LaunchTimeBenchmark.run):
302         * LaunchTime/new_tab.py:
303         (NewTabBenchmark.initialize):
304         (NewTabBenchmark.run_iteration):
305         (NewTabBenchmark.will_parse_arguments):
306         (NewTabBenchmark.did_parse_arguments):
307         (NewTabBenchmark.ResponseHandler.Handler.get_test_page):
308         (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted.
309         (NewTabBenchmark.ResponseHandler.Handler.on_receive_stop_signal):
310         (NewTabBenchmark):
311         * LaunchTime/startup.py:
312         (StartupBenchmark.ResponseHandler.Handler.get_test_page):
313         (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_time): Deleted.
314         (StartupBenchmark.ResponseHandler.Handler.on_receive_stop_signal):
315         (StartupBenchmark):
316
317 2018-07-26  Andy VanWagoner  <andy@vanwagoner.family>
318
319         [INTL] Remove INTL sub-feature compile flags
320         https://bugs.webkit.org/show_bug.cgi?id=188081
321
322         Reviewed by Michael Catanzaro.
323
324         Removed old and unused i18n flag.
325
326         * StitchMarker/wtf/FeatureDefines.h:
327
328 2018-07-20  David Fenton  <david_fenton@apple.com>
329
330         REGRESSION (234006) ERROR: Blocked access to external URL http://code.jquery.com/jquery-1.9.1.min.js
331         https://bugs.webkit.org/show_bug.cgi?id=187858
332
333         Unreviewed test gardening, skipped test.
334
335         * Skipped: LaunchTime
336
337 2018-07-19  Ben Richards  <benton_richards@apple.com>
338
339         Add benchmark for WebKit process launch times
340         https://bugs.webkit.org/show_bug.cgi?id=186414
341
342         Reviewed by Ryosuke Niwa.
343
344         Added two benchmarks, one for measuring browser new tab launch time and one for browser startup time.
345
346         * LaunchTime/.gitignore: Added.
347         * LaunchTime/feedback_client.html: Added.
348         Displays benchmark progress in browser
349         * LaunchTime/feedback_server.py: Added.
350         (FeedbackServer): Sends data to feedback_client via websocket
351         (FeedbackServer.__init__):
352         (FeedbackServer._create_app):
353         (FeedbackServer._start_server):
354         (FeedbackServer._send_all_messages):
355         (FeedbackServer.start):
356         (FeedbackServer.stop):
357         (FeedbackServer.send_message): Send a message to the feedback_client
358         (FeedbackServer.wait_until_client_has_loaded): Wait until the feedback_client has opened a websocket connection to the feedback_server
359         (FeedbackServer.MainHandler): Handler factory to create handler that serves feedback_client.html
360         (FeedbackServer.MainHandler.Handler):
361         (FeedbackServer.MainHandler.Handler.get):
362         (FeedbackServer.WSHandler): Handler factory to create handler that sends data to feedback client
363         (FeedbackServer.WSHandler.Handler):
364         (FeedbackServer.WSHandler.Handler.open): On websocket connection opened
365         (FeedbackServer.WSHandler.Handler.on_close): On websocket connection closed
366         * LaunchTime/launch_time.py: Added.
367         (DefaultLaunchTimeHandler): Abstract HTTP request handler for launch time benchmarks
368         (DefaultLaunchTimeHandler.get_test_page): Default test page to be overridden by benchmarks
369         (DefaultLaunchTimeHandler.get_blank_page):
370         (DefaultLaunchTimeHandler.on_receive_stop_time):
371         (DefaultLaunchTimeHandler.do_HEAD):
372         (DefaultLaunchTimeHandler.do_GET):
373         (DefaultLaunchTimeHandler.do_POST):
374         (DefaultLaunchTimeHandler.log_message): Suppresses HTTP logs from SimpleHTTPRequestHandler
375         (LaunchTimeBenchmark): Abstract class which launch time benchmarks inherit from and override methods desired to customize
376         (LaunchTimeBenchmark.__init__):
377         (LaunchTimeBenchmark._parse_browser_bundle_path): Parser for bundle path option
378         (LaunchTimeBenchmark._parse_args):
379         (LaunchTimeBenchmark._run_server): Target function for main server thread
380         (LaunchTimeBenchmark._setup_servers):
381         (LaunchTimeBenchmark._clean_up):
382         (LaunchTimeBenchmark._exit_due_to_exception):
383         (LaunchTimeBenchmark._geometric_mean):
384         (LaunchTimeBenchmark._standard_deviation):
385         (LaunchTimeBenchmark._compute_results): Returns mean and std dev of list of results and pretty prints if should_print=True is specified
386         (LaunchTimeBenchmark._wait_times): Mimic numpy.linspace
387         (LaunchTimeBenchmark.open_tab): Open a browser tab with the html given by self.response_handler.get_test_page
388         (LaunchTimeBenchmark.launch_browser): Open a broser to either the feedback client (if option is set) or a blank page
389         (LaunchTimeBenchmark.quit_browser):
390         (LaunchTimeBenchmark.quit_browser.quit_app):
391         (LaunchTimeBenchmark.quit_browser.is_app_closed):
392         (LaunchTimeBenchmark.close_tab):
393         (LaunchTimeBenchmark.wait):
394         (LaunchTimeBenchmark.log): Print to console and send to feedback client if --feedback-in-browser flag is used
395         (LaunchTimeBenchmark.log_verbose): Only logs if --verbose flag is used
396         (LaunchTimeBenchmark.run):
397         (LaunchTimeBenchmark.group_init): Initialization done before each round of iterations
398         (LaunchTimeBenchmark.run_iteration):
399         (LaunchTimeBenchmark.initialize): Convenience method to be overriden by subclasses which is called at the end of __init__
400         (LaunchTimeBenchmark.will_parse_arguments): Called before argparse.parse_args to let subclasses add new command line arguments
401         (LaunchTimeBenchmark.did_parse_arguments): Called after argparse.parse_args to let subclass initialize based on command line arguments
402         * LaunchTime/new_tab.py: Added
403         (NewTabBenchmark):
404         (NewTabBenchmark._parse_wait_time): Parser for wait time option
405         (NewTabBenchmark.initialize):
406         (NewTabBenchmark.run_iteration):
407         (NewTabBenchmark.group_init):
408         (NewTabBenchmark.will_parse_arguments):
409         (NewTabBenchmark.did_parse_arguments):
410         (NewTabBenchmark.ResponseHandler):
411         (NewTabBenchmark.ResponseHandler.Handler):
412         (NewTabBenchmark.ResponseHandler.Handler.get_test_page):
413         * LaunchTime/startup.py: Added
414         (StartupBenchmark): This benchmark measures browser startup time and initial page load time
415         (StartupBenchmark.initialize):
416         (StartupBenchmark.run_iteration):
417         (StartupBenchmark.ResponseHandler):
418         (StartupBenchmark.ResponseHandler.Handler):
419         (StartupBenchmark.ResponseHandler.Handler.get_test_page):
420         * LaunchTime/thirdparty/__init__.py: Added.
421         (AutoinstallImportHook): Auto installs tornado package for feedback server
422         (AutoinstallImportHook.__init__):
423         (AutoinstallImportHook._ensure_autoinstalled_dir_is_in_sys_path):
424         (AutoinstallImportHook.find_module):
425         (AutoinstallImportHook._install_tornado):
426         (AutoinstallImportHook.greater_than_equal_to_version):
427         (AutoinstallImportHook._install):
428         (AutoinstallImportHook.get_latest_pypi_url):
429         (AutoinstallImportHook.install_binary):
430         (autoinstall_everything):
431         (get_os_info):
432
433 2018-06-25  Jon Lee  <jonlee@apple.com>
434
435         [MotionMark] Add support for version numbers
436         https://bugs.webkit.org/show_bug.cgi?id=186479
437
438         Reviewed by Said Abou-Hallawa.
439
440         Add support for displaying the version number as well as including it in the JSON results.
441
442         When loading the front page, script replaces any element with classname version with the
443         version number of the benchmark, which is stored in Strings.version.
444
445         The JSON structure for the results includes a new version property:
446             {
447               "version": "1.0",
448               "options": { ... },
449               "data": [ ... ]
450             }
451
452         When dragging a results file, the version listed will come from the JSON file. Older
453         results will not have had the version property, in which case it will default to "1.0".
454
455         * MotionMark/index.html: Update title to some other default. Script will update it.
456         Include the version number in the logo title.
457         * MotionMark/developer.html: Ditto.
458         * MotionMark/about.html: Ditto.
459
460         * MotionMark/resources/runner/motionmark.js:
461         (ResultsDashboard): Update constructor to include version. This is used when serializing
462         results out to JSON, and displaying the results panel in developer mode.
463         (ResultsDashboard._processData): When running the benchmark, include benchmark version string
464         in the results object.
465         (ResultsDashboard.version):
466         (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the
467         benchmark version string to the dashboard, which holds the results.
468         (window.sectionsManager.setSectionVersion): Helper function to update the element in the
469         section with the class name version.
470         (window.benchmarkController.initialize): Populate all DOM elements with class name "version"
471         with the version string. Update the page title.
472         (window.benchmarkController.showResults): When showing results, update the version string
473         based on what is included in the JSON results, which would be the same as the benchmark version.
474         * MotionMark/resources/runner/motionmark.css: Include missing copyright. Wrap the SVG logo
475         in a div and include the version string.
476         * MotionMark/resources/strings.js: Add strings for the page title template, and the version.
477
478         * MotionMark/resources/debug-runner/motionmark.css:
479         * MotionMark/resources/debug-runner/motionmark.js:
480         (window.benchmarkRunnerClient.willStartFirstIteration): When running the benchmark, pass the
481         benchmark version string to the dashboard, which holds the results.
482         (window.benchmarkController.initialize): Populate all DOM elements with class name "version"
483         with the version string. Update the page title. When dragging in JSON results, look for
484         version to pass to the dashboard. If it doesn't exist, default to "1.0".
485         (window.benchmarkController.showResults): When showing results, update the version string
486         based on what is included in the JSON results, instead of the current benchmark version.
487         * MotionMark/resources/debug-runner/tests.js: Update page title template.
488
489 2018-06-08  Jon Lee  <jonlee@apple.com>
490
491         [MotionMark] Rename Suits test files
492         https://bugs.webkit.org/show_bug.cgi?id=186447
493
494         Reviewed by Said Abou-Hallawa.
495
496         * MotionMark/resources/runner/tests.js:
497         * MotionMark/tests/master/resources/suits.js: Renamed from PerformanceTests/MotionMark/tests/master/resources/svg-particles.js.
498         * MotionMark/tests/master/suits.html: Renamed from PerformanceTests/MotionMark/tests/master/svg-particles.html.
499         * MotionMark/tests/svg/suits.html:
500
501 2018-06-08  Jon Lee  <jonlee@apple.com>
502
503         Add sub-tests based on Suits
504         https://bugs.webkit.org/show_bug.cgi?id=186260
505
506         Reviewed by Said Abou-Hallawa.
507
508         Add a new developer Suits suite with sub-tests that isolate parts of each particle.
509         The sub-tests are:
510             - Particles using only clip paths
511             - Particles using only shapes
512             - Particles that have no gradients
513             - Particles that have no rotation
514             - Particles that do not move around at all (but all of the physics calculations are
515             still performed)
516
517         * MotionMark/resources/debug-runner/tests.js:
518         * MotionMark/tests/master/resources/svg-particles.js: Rename the stage, particle, and
519         benchmark to "Suits" from "SVG". Change SuitsParticle so that we guarantee 50% clip and
520         shape paths rather than relying on random chance. Wrap a check around creation of the
521         gradient element, and use a simple fill color when we aren't using a gradient.
522         * MotionMark/tests/svg/suits.html: Added.
523         * MotionMark/tests/svg/suits.js: Added.
524         Look for the query string and set the particle based on what is selected.
525
526 2018-06-06  Jon Lee  <jonlee@apple.com>
527
528         Allow the ramp controller to run tests that take less time than the initial ramp-up phase
529         https://bugs.webkit.org/show_bug.cgi?id=186257
530
531         Reviewed by Said Abou-Hallawa.
532
533         * MotionMark/tests/resources/main.js: Extend the desired end timestamp when ramp-up occurs.
534         Previously the controller assumed that the duration of the test was always longer than the
535         time it took to figure out the order of magnitude of particles to render. When that range
536         is determined, the end timestamp is then extended. If the duration is too short, the controller
537         would throw an exception. The fix is to continue extending the timestamp every time the order of
538         magnitude tiers up.
539
540         In general testing with really short durations isn't practical, but sometimes it is
541         desired for debugging.
542
543         To avoid confusion of the private variables, I renamed Benchmark._startTimestamp to
544         Benchmark._benchmarkStartTimestamp, to disambiguate from Controller._startTimestamp.
545         Benchmark._startTimestamp is set once and never changed, after the initial 100ms warm-up.
546         Controller._startTimestamp is initialized to 0 (which means "not initialized"), and then after
547         the warm up is complete, set in Controller.start() to the same wall clock timestamp, and never
548         changed afterwards.
549
550 2018-06-06  Jon Lee  <jonlee@apple.com>
551
552         Remove unneeded data processing in MotionMark
553         https://bugs.webkit.org/show_bug.cgi?id=186256
554
555         Reviewed by Said Abou-Hallawa.
556
557         Remove calculation of average frame rate based on multiple samples at a given complexity.
558         It is not used in the calculation of the score, and is just extra work to do at the end
559         of a test.
560
561         * MotionMark/developer.html: Remove options to show average data and regression based on
562         that data.
563         * MotionMark/resources/debug-runner/graph.js: Remove data. Update the time graph that
564         shows the relationship between the break point in the regression against the complexity
565         graph.
566         * MotionMark/resources/debug-runner/motionmark.css: Make the confidence intervals easier
567         to see.
568         * MotionMark/resources/runner/motionmark.js: Simplify score calculation now that we are
569         only calculating regressions on the raw data. We were calculating it based on the averages,
570         but that was just for analysis, and not used in the actual score. Get rid of the
571         |complexitySamples| local variable.
572         * MotionMark/resources/strings.js: Remove unneeded string constant.
573         * MotionMark/tests/resources/main.js:
574         (processSamples): Refactor so that more of it can be shared between Controller and
575         RampController. It also avoids processing the raw samples (controllerSamples) twice for
576         the ramp controller.
577         (_processComplexitySamples): Remove logic to calculate averages based on complexity.
578         (_processMarks): Split this out from the old processSamples.
579         (_processControllerSamples): Split this out from the old processSamples.
580
581 2018-06-06  Jon Lee  <jonlee@apple.com>
582
583         Strip out more characters when creating permalinks
584         https://bugs.webkit.org/show_bug.cgi?id=186259
585
586         Reviewed by Said Abou-Hallawa.
587
588         Tests and suites may have names that make permalinks to the tests less readable when
589         shared. Expand the set of characters that are stripped out of the names.
590
591         * MotionMark/resources/debug-runner/motionmark.js: Refactor to call
592         stripUnwantedCharactersForURL. For existing links, decode the suite and test names.
593         * MotionMark/resources/extensions.js:
594         (Utilities.stripUnwantedCharactersForURL): Rename from stripNonASCIICharacters.
595         Remove any non-alphanumeric character.
596
597 2018-06-04  Jon Lee  <jonlee@apple.com>
598
599         Remove unnecessary MotionMark controllers
600         https://bugs.webkit.org/show_bug.cgi?id=186255
601
602         Reviewed by Said Abou-Hallawa.
603
604         Get rid of the ramp30 and the fixed-with-a-step controllers, which aren't used for testing
605         or debugging.
606
607         * MotionMark/developer.html: Move the "ramp" option as first, since that is the default
608         controller for the benchmark.
609         * MotionMark/resources/debug-runner/motionmark.js:
610         * MotionMark/resources/runner/motionmark.js: Added missing copyright notice.
611         * MotionMark/tests/resources/main.js:
612
613 2018-05-25  Myles C. Maxfield  <mmaxfield@apple.com>
614
615         Improve the performance of Font::canRenderCombiningCharacterSequence()
616         https://bugs.webkit.org/show_bug.cgi?id=185933
617
618         Reviewed by Ryosuke Niwa.
619
620         * Layout/ComplexLongUnique.html: Added.
621
622 2018-05-25  Saam Barati  <sbarati@apple.com>
623
624         Have a memory test where we can validate JSCs mini memory mode
625         https://bugs.webkit.org/show_bug.cgi?id=185932
626
627         Reviewed by Mark Lam.
628
629         We add a directory here with the contents of the testmem benchmark.
630         To run it, use `Tools/Scripts/run-testmem`. To add new tests in the future,
631         you just need to add JS files to this directory.
632
633         * testmem: Added.
634         * testmem/air.js: Added.
635         * testmem/base64.js: Added.
636         * testmem/basic.js: Added.
637         * testmem/box2d.js: Added.
638         * testmem/crypto-md5.js: Added.
639         * testmem/date-format-tofte.js: Added.
640         * testmem/earley-boyer.js: Added.
641         * testmem/hash-map.js: Added.
642         * testmem/regex-dna.js: Added.
643         * testmem/splay.js: Added.
644         * testmem/tagcloud.js: Added.
645
646 2018-05-22  Ryan Haddad  <ryanhaddad@apple.com>
647
648         Unreviewed, rolling out r232052.
649
650         Breaks internal builds.
651
652         Reverted changeset:
653
654         "Use more C++17"
655         https://bugs.webkit.org/show_bug.cgi?id=185176
656         https://trac.webkit.org/changeset/232052
657
658 2018-05-21  Yusuke Suzuki  <utatane.tea@gmail.com>
659
660         Use more C++17
661         https://bugs.webkit.org/show_bug.cgi?id=185176
662
663         Reviewed by JF Bastien.
664
665         * MallocBench/MallocBench.xcodeproj/project.pbxproj:
666         * MediaTime/Configurations/Base.xcconfig:
667         * MediaTime/MediaTime.xcodeproj/project.pbxproj:
668
669 2018-04-30  Myles C. Maxfield  <mmaxfield@apple.com>
670
671         Improve the performance of FontCascadeDescription's effectiveFamilies
672         https://bugs.webkit.org/show_bug.cgi?id=184720
673
674         Reviewed by Simon Fraser.
675
676         This performance test calls SystemFontDatabase::systemFontCascadeList() around 2,000,000 times (before
677         this patch is applied), which is roughly equivalent to the page we found the performance problem on.
678         The calling pattern is roughly equivalent in this test.
679
680         * Layout/system-ui.html: Added.
681
682 2018-03-08  Antti Koivisto  <antti@apple.com>
683
684         Update StyleBench version number in page title to 0.3
685
686         * StyleBench/index.html:
687
688         There has been a bunch of changes, most notably the addition of attribute selector test step.
689
690 2018-02-16  Dean Jackson  <dino@apple.com>
691
692         Use OPENGL macros to be more clear about which OpenGL/ES WebGL uses on Cocoa
693         https://bugs.webkit.org/show_bug.cgi?id=182894
694
695         Reviewed by Tim Horton.
696
697         Rename OPENGL_ES_2 to OPENGL_ES.
698
699         * StitchMarker/wtf/Platform.h:
700
701 2018-02-09  Ryosuke Niwa  <rniwa@webkit.org>
702
703         Make run-perf-tests work with Speedometer 2.0 and re-enable the test
704         https://bugs.webkit.org/show_bug.cgi?id=182088
705
706         Reviewed by Antti Koivisto.
707
708         This patch updates the test harness to report new metrics of Speedometer 2.0.
709
710         Replaced the total time by the geometric mean of the time spent in each suite, and added scores
711         as a metric in addition to time. Also, updated the PerfTestRunner harness and the results template
712         to support "Score" metric with "pt" as its unit.
713
714         * Skipped: Unskipped the test.
715         * Speedometer/resources/benchmark-report.js:
716         (window.benchmarkClient.willStartFirstIteration..createTest): Added the unit as an optional argument
717         to report the score in addition to time. Also report the geomean of time instead of the total time.
718         (window.benchmarkClient.willStartFirstIteration): Report the geomean of time.
719         (window.benchmarkClient.didRunSuites): Record the entire measuredValues instead of just tests.
720         (window.benchmarkClient.didFinishLastIteration): Report the scores.
721
722 2018-02-09  Ross Kirsling  <ross.kirsling@sony.com>
723
724         Use REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR on any non-Windows port.
725         https://bugs.webkit.org/show_bug.cgi?id=182623
726
727         Reviewed by Alex Christensen.
728
729         * StitchMarker/wtf/Platform.h:
730         Simplify #if.
731
732 2018-02-01  Antti Koivisto  <antti@apple.com>
733
734         StyleBench: Attribute selectors and other improvements
735         https://bugs.webkit.org/show_bug.cgi?id=182387
736
737         Reviewed by Joseph Pecoraro.
738
739         - Add some attributes to elements in all tests
740         - Add some attribute selectors to stylesheets in all tests
741         - Also add some * selectors to all stylesheets.
742         - Add attribute mutation step to all suites
743         - Make test steps do more mutations (25->100) and reduce the number of steps to keep testing time in check.
744           Too fast steps were running into timer resolution limits.
745
746         * StyleBench/resources/style-bench.js:
747         (defaultConfiguration):
748         (prototype.randomAttributeName):
749         (prototype.randomAttributeValue):
750         (prototype.randomAttributeSelector):
751         (prototype.makeCompoundSelector):
752         (prototype.makeElement):
753         (prototype.addClasses):
754         (prototype.removeClasses):
755         (prototype.mutateAttributes):
756         (prototype.async.runForever):
757         * StyleBench/resources/tests.js:
758         (makeSteps):
759         (makeSuite):
760
761 2018-02-01  Geoffrey Garen  <ggaren@apple.com>
762
763         Make MallocBench easier for non-WebKit engineers to run
764         https://bugs.webkit.org/show_bug.cgi?id=182415
765
766         Reviewed by Saam Barati.
767
768         * MallocBench/MallocBench.xcodeproj/project.pbxproj: Use c++14 so we
769         can make_unique.
770
771         Specify that we support all Darwin platforms so you can test them.
772
773         * MallocBench/run-malloc-benchmarks: Specify the path to MallocBench
774         and libmbmalloc explicitly, rather than computing them implicitly
775         using webkitdirs. Non-WebKit folks don't have the directory structure
776         required by webkitdirs.
777
778         Remove Linux-specific and cmake-specific behaviors because we only
779         needed them in the world of implicit path computation.
780
781 2018-01-31  Ryosuke Niwa  <rniwa@webkit.org>
782
783         Make run-perf-tests work with StyleBench and re-enable it
784         https://bugs.webkit.org/show_bug.cgi?id=182322
785
786         Reviewed by Antti Koivisto.
787
788         This patch updates the test harness to report new metrics of StyleBench.
789
790         Replaced the total time by the geometric mean of the time spent in each suite, and added scores
791         as a metric in addition to time. Also, updated the PerfTestRunner harness and the results template
792         to support "Score" metric with "pt" as its unit.
793
794         * Skipped: Unskipped the test.
795         * StyleBench/resources/benchmark-report.js:
796         (window.benchmarkClient.willStartFirstIteration..createTest): Added the unit as an optional argument
797         to report the score in addition to time. Also report the geomean of time instead of the total time.
798         (window.benchmarkClient.willStartFirstIteration): Report the geomean of time.
799         (window.benchmarkClient.didRunSuites): Record the entire measuredValues instead of just tests.
800         (window.benchmarkClient.didFinishLastIteration): Report the scores.
801         * resources/results-template.html: Added "Score" as a metric and "pt" as its unit.
802         * resources/runner.js:
803         (PerfTestRunner..finish): Ditto.
804
805 2018-01-30  Ryosuke Niwa  <rniwa@webkit.org>
806
807         StyleBench: Generate more mutation steps
808         https://bugs.webkit.org/show_bug.cgi?id=182291
809
810         Rubber-stamped by Antti Koivisto
811
812         Use zero-based index instead of one-based index.
813
814         * StyleBench/resources/tests.js:
815         (makeSteps):
816
817 2018-01-30  Antti Koivisto  <antti@apple.com>
818
819         StyleBench: Generate more mutation steps
820         https://bugs.webkit.org/show_bug.cgi?id=182291
821
822         Reviewed by Ryosuke Niwa.
823
824         The test should be doing multiple rounds of mutations in a single document to test what is supposed to test (like it did before r227756).
825         This also makes test results more stable and less dependent on possible first-time costs.
826
827         * StyleBench/resources/benchmark-runner.js:
828
829         Adjust correctionFactor to match the new steps count. With 1.5 Firefox is ~72rpm.
830
831         * StyleBench/resources/tests.js:
832         (makeSteps):
833
834         Generate 10 rounds of class/element mutation steps.
835         Give each generated step unique name so reporting works.
836         Make individual steps do fewer mutations.
837
838 2018-01-29  Antti Koivisto  <antti@apple.com>
839
840         StyleBench: Remove : from a test name
841         https://bugs.webkit.org/show_bug.cgi?id=182258
842
843         Reviewed by Ryosuke Niwa.
844
845         It breaks reporting.
846
847         * StyleBench/resources/style-bench.js:
848         (nthPseudoClassConfiguration):
849
850 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
851
852         Temporarily skip StyleBench until webkit.org/b/182088 is fixed.
853
854         * Skipped:
855
856 2018-01-29  Ryosuke Niwa  <rniwa@webkit.org>
857
858         Make StyleBench compatible with run-benchmark and run-perf-tests
859         https://bugs.webkit.org/show_bug.cgi?id=182262
860
861         Reviewed by Antti Koivisto.
862
863         Copied resource files referenced from Speedometer directory since run-benchmark needs to be able
864         to checkout each benchmark separately.
865
866         Removed the code to create tests of the same name five times in makeSteps since this
867         won't be compatible with either run-benchmark or run-perf-tests.
868
869         * StyleBench/index.html: Removed the code to show warnings for local files since run-benchmark
870         doesn't use HTTP server in WebDriver mode.
871         * StyleBench/resources/benchmark-report.js: Copied from resources/benchmark-report.js.
872         * StyleBench/resources/benchmark-runner.js: Copied from resources/benchmark-runner.js.
873         (BenchmarkRunner.prototype._finalize): Use the correction factor of 8 instead of 5 in StyleBench.
874         * StyleBench/resources/gauge.png: Copied from resources/gauge.png.
875         * StyleBench/resources/gauge@2x.png: Copied from resources/gauge@2x.png.
876         * StyleBench/resources/main.css: Copied from resources/main.css.
877         * StyleBench/resources/main.js: Copied from resources/main.js.
878         * StyleBench/resources/tests.js:
879         (makeSteps): Only make each test once.
880
881 2018-01-26  Chris Nardi  <cnardi@chromium.org>
882
883         Addressing post-review comments after r226614
884         https://bugs.webkit.org/show_bug.cgi?id=182151
885
886         Reviewed by Myles C. Maxfield.
887
888         * StitchMarker/wtf/text/StringImpl.h:
889         (WTF::isSpaceOrNewline):
890         * StitchMarker/wtf/text/TextBreakIterator.cpp:
891         (WTF::numCodeUnitsInGraphemeClusters):
892         * StitchMarker/wtf/text/TextBreakIterator.h:
893
894 2018-01-22  Antti Koivisto  <antti@apple.com>
895
896         StyleBench: Separate test for :nth pseudo classes
897         https://bugs.webkit.org/show_bug.cgi?id=181932
898
899         Reviewed by Sam Weinig.
900
901         Optimization strategies for nth are different from other structural pseudo classes (:first-child etc). Move them to a separate test.
902
903         * StyleBench/resources/style-bench.js:
904         (structuralPseudoClassConfiguration):
905         (nthPseudoClassConfiguration):
906
907             Add a new configuration.
908
909         (predefinedConfigurations):
910         (pseudoClassConfiguration): Deleted.
911
912 2018-01-17  Ryosuke Niwa  <rniwa@webkit.org>
913
914         Temporarily skip Speedometer until we fix the metrics.
915
916         * Skipped:
917
918 2018-01-16  Alex Christensen  <achristensen@webkit.org>
919
920         Fix Mac CMake build after r222900
921
922         * MallocBench/MallocBench/CMakeLists.txt:
923         The mbmalloc target doesn't exist if we're not in developer mode, so only use it if we are.
924
925 2018-01-09  Ryosuke Niwa  <rniwa@webkit.org>
926
927         Speedometer 2.0: Update the About page.
928         https://bugs.webkit.org/show_bug.cgi?id=175918
929
930         Reviewed by Keith Miller.
931
932         Updated the about page for Speedometer 2.0.
933
934         * Speedometer/index.html:
935
936 == Rolled over to ChangeLog-2018-01-01 ==