Bug 160125 - Butterflies should be allocated in Auxiliary MarkedSpace instead of CopiedSpace and we should rewrite as much of the GC as needed to make this not a regression
Summary: Butterflies should be allocated in Auxiliary MarkedSpace instead of CopiedSpa...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: WebKit Nightly Build
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords: InRadar
Depends on: 160171 161492 161946
Blocks: 161062 159658 161581
  Show dependency treegraph
 
Reported: 2016-07-23 14:42 PDT by Filip Pizlo
Modified: 2017-02-03 15:22 PST (History)
26 users (show)

See Also:


Attachments
it begins! (11.82 KB, patch)
2016-07-23 14:43 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
I think that JSObject.cpp handles butterflies correctly now (23.79 KB, patch)
2016-07-23 16:43 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
audited JSObject.cpp again and audited JSArray.cpp (26.31 KB, patch)
2016-07-24 16:23 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
started working on ButterflyInlines.h (42.84 KB, patch)
2016-07-25 11:23 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
audited PolymorphicAccess.cpp and DFGSpeculativeJIT64.cpp (51.98 KB, patch)
2016-07-25 16:17 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
started working on DFGSpeculativeJIT.cpp (54.50 KB, patch)
2016-07-25 16:30 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
audited DFGSpeculativeJIT.cpp, 64.cpp, and 32_64.cpp. (60.35 KB, patch)
2016-07-25 17:04 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
possibly done (70.81 KB, patch)
2016-07-26 13:28 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
crashes for any interesting program (75.46 KB, patch)
2016-07-26 14:54 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
it ran some interesting programs (77.55 KB, patch)
2016-07-26 15:10 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
passing so many tests (80.54 KB, patch)
2016-07-27 09:58 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
passing more tests than ever (83.19 KB, patch)
2016-07-27 10:58 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
starting to get quite solid (93.37 KB, patch)
2016-07-27 14:01 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
so awesome (94.87 KB, patch)
2016-07-28 10:37 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
passing even more tests (96.98 KB, patch)
2016-07-28 14:00 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
passes all open source debug JSC tests (98.18 KB, patch)
2016-07-29 12:56 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
fixed release build (114.68 KB, patch)
2016-07-29 13:49 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
rebased patch with changelog (126.67 KB, patch)
2016-07-29 14:09 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
fixing internal fuzz test failures (136.74 KB, patch)
2016-07-29 17:13 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
fixed the deltablue bug (157.68 KB, patch)
2016-07-30 12:27 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
fixed a lot of bugs (165.18 KB, patch)
2016-07-30 17:53 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
work in progress (188.40 KB, patch)
2016-07-31 20:00 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
oh man this might actually work (191.96 KB, patch)
2016-07-31 20:10 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
performance (81.85 KB, text/plain)
2016-08-02 17:28 PDT, Filip Pizlo
no flags Details
latest patch (195.68 KB, patch)
2016-08-02 17:29 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
latest patch (195.48 KB, patch)
2016-08-02 17:57 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
latest (198.56 KB, patch)
2016-08-03 11:29 PDT, Filip Pizlo
buildbot: commit-queue-
Details | Formatted Diff | Diff
Archive of layout-test-results from ews114 for mac-yosemite (1.23 MB, application/zip)
2016-08-03 12:29 PDT, Build Bot
no flags Details
new approach to size classes (219.23 KB, patch)
2016-08-04 12:57 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
last version before large allocation apocalypse (220.38 KB, patch)
2016-08-04 20:08 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
large allocation apocalypse has begun (272.40 KB, patch)
2016-08-04 21:00 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
large allocation rewrite compiles! (285.77 KB, patch)
2016-08-04 22:59 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
large allocation rewrite is passing tests (289.34 KB, patch)
2016-08-05 13:12 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
I just realized that I need to fix all of those MarkedBlock::blockFor() things (318.77 KB, patch)
2016-08-05 14:18 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
latest (319.87 KB, patch)
2016-08-05 17:27 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
latest (339.92 KB, patch)
2016-08-05 22:00 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
started working on concurrent sweeper (353.32 KB, patch)
2016-08-08 11:47 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
concurrent sweeper compiles (364.69 KB, patch)
2016-08-08 16:10 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
latest before concurrent sweeper (336.34 KB, patch)
2016-08-08 16:11 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
concurrent sweeper just swept some things (368.56 KB, patch)
2016-08-08 18:03 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
concurrent sweeper is becoming reliable (370.09 KB, patch)
2016-08-08 19:30 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
concurrent sweeper is starting to look like a net win (377.67 KB, patch)
2016-08-08 21:36 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
started rewriting the allocator to use bump'n'pop (396.12 KB, patch)
2016-08-09 13:10 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
bump'n'pop is written (411.69 KB, patch)
2016-08-09 13:58 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
bump'n'pop compiles! (422.94 KB, patch)
2016-08-09 14:52 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
bump'n'pop is starting to work! (423.74 KB, patch)
2016-08-09 18:47 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
bump'n'pop passes all tests (424.01 KB, patch)
2016-08-10 12:52 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
bump'n'pop without concurrent sweep (387.58 KB, patch)
2016-08-10 19:10 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
bump'n'pop neutral on Kraken (396.71 KB, patch)
2016-08-11 22:01 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
getting all of WK to build (427.05 KB, patch)
2016-08-12 13:01 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
da patch (459.71 KB, patch)
2016-08-12 14:30 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (461.84 KB, patch)
2016-08-13 16:42 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (462.24 KB, patch)
2016-08-13 16:54 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (468.66 KB, patch)
2016-08-13 20:51 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (472.09 KB, patch)
2016-08-13 21:15 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (472.62 KB, patch)
2016-08-13 21:29 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (472.80 KB, patch)
2016-08-13 21:52 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (472.83 KB, patch)
2016-08-13 22:10 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (473.31 KB, patch)
2016-08-13 22:36 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (512.50 KB, patch)
2016-08-14 15:36 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (513.18 KB, patch)
2016-08-14 15:47 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (513.58 KB, patch)
2016-08-14 16:04 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (515.79 KB, patch)
2016-08-14 19:17 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (550.96 KB, patch)
2016-08-15 00:00 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (551.70 KB, patch)
2016-08-15 10:18 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (554.44 KB, patch)
2016-08-15 10:49 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (554.61 KB, patch)
2016-08-15 11:22 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (554.85 KB, patch)
2016-08-15 12:03 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (559.25 KB, patch)
2016-08-15 13:31 PDT, Filip Pizlo
ggaren: review-
Details | Formatted Diff | Diff
the patch (564.06 KB, patch)
2016-08-16 12:59 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (559.31 KB, patch)
2016-08-16 13:09 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (562.76 KB, patch)
2016-08-17 17:46 PDT, Filip Pizlo
buildbot: commit-queue-
Details | Formatted Diff | Diff
Archive of layout-test-results from ews101 for mac-yosemite (1009.58 KB, application/zip)
2016-08-17 19:00 PDT, Build Bot
no flags Details
Archive of layout-test-results from ews105 for mac-yosemite-wk2 (1.14 MB, application/zip)
2016-08-17 19:04 PDT, Build Bot
no flags Details
Archive of layout-test-results from ews123 for ios-simulator-elcapitan-wk2 (768.21 KB, application/zip)
2016-08-17 19:52 PDT, Build Bot
no flags Details
Archive of layout-test-results from ews124 for ios-simulator-elcapitan-wk2 (764.87 KB, application/zip)
2016-08-17 21:53 PDT, Build Bot
no flags Details
the patch (563.86 KB, patch)
2016-08-22 13:53 PDT, Filip Pizlo
buildbot: commit-queue-
Details | Formatted Diff | Diff
Archive of layout-test-results from ews102 for mac-yosemite (1.04 MB, application/zip)
2016-08-22 15:07 PDT, Build Bot
no flags Details
Archive of layout-test-results from ews104 for mac-yosemite-wk2 (960.13 KB, application/zip)
2016-08-22 15:09 PDT, Build Bot
no flags Details
the patch (564.56 KB, patch)
2016-08-22 15:29 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (564.72 KB, patch)
2016-08-22 15:59 PDT, Filip Pizlo
buildbot: commit-queue-
Details | Formatted Diff | Diff
Archive of layout-test-results from ews112 for mac-yosemite (330.90 KB, application/zip)
2016-08-22 17:05 PDT, Build Bot
no flags Details
patch for landing (568.36 KB, patch)
2016-08-23 12:20 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
splitting MarkedBlock's meta-data out into a handle (613.75 KB, patch)
2016-08-26 13:18 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
I think that the versioning is done (625.13 KB, patch)
2016-08-26 15:05 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
got some things to compile (633.78 KB, patch)
2016-08-26 15:22 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
it compiles! (634.46 KB, patch)
2016-08-26 17:22 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
compiles and passes some tests (637.68 KB, patch)
2016-08-26 19:00 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
even more things (641.27 KB, patch)
2016-08-28 17:19 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
sooooooper fast MarkedSpace (649.99 KB, patch)
2016-08-29 16:28 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
fixed a debug assert (651.34 KB, patch)
2016-08-30 16:45 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
fixed the debug assert for real (651.69 KB, patch)
2016-08-30 17:09 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
pretty good patch (676.93 KB, patch)
2016-08-31 12:36 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
fixing the forgotten butterfly bug (693.08 KB, patch)
2016-08-31 13:52 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
fixing the forgotten butterfly bug, passing tests (705.11 KB, patch)
2016-08-31 15:38 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
fast MarkedSpace might be complete (709.24 KB, patch)
2016-08-31 21:12 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
rebased with bugs (704.27 KB, patch)
2016-09-01 10:32 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
rebased patch (703.24 KB, patch)
2016-09-01 12:55 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
fixes (703.78 KB, patch)
2016-09-01 13:17 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
more (713.40 KB, patch)
2016-09-01 20:05 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
rebased again (713.60 KB, patch)
2016-09-01 20:39 PDT, Filip Pizlo
keith_miller: review+
Details | Formatted Diff | Diff
patch for landing (714.13 KB, patch)
2016-09-04 22:02 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
patch for landing (714.44 KB, patch)
2016-09-05 11:45 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
patch for landing (715.07 KB, patch)
2016-09-05 13:52 PDT, Filip Pizlo
buildbot: commit-queue-
Details | Formatted Diff | Diff
Archive of layout-test-results from ews116 for mac-yosemite (1.67 MB, application/zip)
2016-09-05 16:34 PDT, Build Bot
no flags Details
patch for landing (714.93 KB, patch)
2016-09-05 17:24 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2016-07-23 14:42:56 PDT
Things.
Comment 1 Filip Pizlo 2016-07-23 14:43:27 PDT
Created attachment 284422 [details]
it begins!
Comment 2 Filip Pizlo 2016-07-23 14:43:48 PDT
I've audited JSObject.h and JSObjectInlines.h.
Comment 3 Filip Pizlo 2016-07-23 16:43:39 PDT
Created attachment 284428 [details]
I think that JSObject.cpp handles butterflies correctly now
Comment 4 Filip Pizlo 2016-07-24 16:23:46 PDT
Created attachment 284455 [details]
audited JSObject.cpp again and audited JSArray.cpp
Comment 5 Filip Pizlo 2016-07-25 11:23:50 PDT
Created attachment 284506 [details]
started working on ButterflyInlines.h
Comment 6 Filip Pizlo 2016-07-25 16:17:48 PDT
Created attachment 284540 [details]
audited PolymorphicAccess.cpp and DFGSpeculativeJIT64.cpp
Comment 7 Filip Pizlo 2016-07-25 16:30:04 PDT
Created attachment 284543 [details]
started working on DFGSpeculativeJIT.cpp
Comment 8 Saam Barati 2016-07-25 16:36:25 PDT
(In reply to comment #6)
> Created attachment 284540 [details]
> audited PolymorphicAccess.cpp and DFGSpeculativeJIT64.cpp
It's probably worth checking out InlineAccess.cpp though it should be OK
Comment 9 Filip Pizlo 2016-07-25 17:04:48 PDT
Created attachment 284550 [details]
audited DFGSpeculativeJIT.cpp, 64.cpp, and 32_64.cpp.
Comment 10 Filip Pizlo 2016-07-26 13:28:46 PDT
Created attachment 284621 [details]
possibly done
Comment 11 Filip Pizlo 2016-07-26 14:54:01 PDT
Created attachment 284635 [details]
crashes for any interesting program

But at least it compiles!
Comment 12 Filip Pizlo 2016-07-26 15:10:38 PDT
Created attachment 284642 [details]
it ran some interesting programs
Comment 13 Filip Pizlo 2016-07-27 09:58:52 PDT
Created attachment 284705 [details]
passing so many tests
Comment 14 Filip Pizlo 2016-07-27 10:58:15 PDT
Created attachment 284709 [details]
passing more tests than ever
Comment 15 Filip Pizlo 2016-07-27 14:01:57 PDT
Created attachment 284728 [details]
starting to get quite solid
Comment 16 Filip Pizlo 2016-07-28 10:37:34 PDT
Created attachment 284788 [details]
so awesome

I think that it's basically right.  I don't know what the perf is yet, since I'm still playing in debug mode.
Comment 17 Filip Pizlo 2016-07-28 14:00:37 PDT
Created attachment 284814 [details]
passing even more tests
Comment 18 Filip Pizlo 2016-07-28 14:19:54 PDT
Here's what's failing now in debug tests.  I haven't run internal tests or any benchmarks.


** The following JSC stress test failures have been introduced:
	jsc-layout-tests.yaml/js/script-tests/array-functions-non-arrays.js.layout
	jsc-layout-tests.yaml/js/script-tests/array-functions-non-arrays.js.layout-dfg-eager-no-cjit
	jsc-layout-tests.yaml/js/script-tests/array-functions-non-arrays.js.layout-ftl-eager-no-cjit
	jsc-layout-tests.yaml/js/script-tests/array-functions-non-arrays.js.layout-ftl-no-cjit
	jsc-layout-tests.yaml/js/script-tests/array-functions-non-arrays.js.layout-no-cjit
	jsc-layout-tests.yaml/js/script-tests/array-functions-non-arrays.js.layout-no-ftl
	jsc-layout-tests.yaml/js/script-tests/array-functions-non-arrays.js.layout-no-llint
	mozilla-tests.yaml/js1_2/Array/general2.js.mozilla
	mozilla-tests.yaml/js1_2/Array/general2.js.mozilla-baseline
	mozilla-tests.yaml/js1_2/Array/general2.js.mozilla-dfg-eager-no-cjit-validate-phases
	mozilla-tests.yaml/js1_2/Array/general2.js.mozilla-ftl-eager-no-cjit-validate-phases
	mozilla-tests.yaml/js1_2/Array/general2.js.mozilla-llint
	mozilla-tests.yaml/js1_2/Array/general2.js.mozilla-no-ftl
	regress/script-tests/emscripten-cube2hash.js.always-trigger-copy-phase
	regress/script-tests/emscripten-cube2hash.js.default
	regress/script-tests/emscripten-cube2hash.js.dfg-eager
	regress/script-tests/emscripten-cube2hash.js.dfg-eager-no-cjit-validate
	regress/script-tests/emscripten-cube2hash.js.dfg-maximal-flush-validate-no-cjit
	regress/script-tests/emscripten-cube2hash.js.ftl-eager
	regress/script-tests/emscripten-cube2hash.js.ftl-eager-no-cjit
	regress/script-tests/emscripten-cube2hash.js.ftl-no-cjit-no-inline-validate
	regress/script-tests/emscripten-cube2hash.js.ftl-no-cjit-no-put-stack-validate
	regress/script-tests/emscripten-cube2hash.js.ftl-no-cjit-small-pool
	regress/script-tests/emscripten-cube2hash.js.ftl-no-cjit-validate-sampling-profiler
	regress/script-tests/emscripten-cube2hash.js.no-cjit-validate-phases
	regress/script-tests/emscripten-cube2hash.js.no-ftl
	regress/script-tests/emscripten-cube2hash.js.no-llint

Results for JSC stress tests:
    27 failures found.
Comment 19 Filip Pizlo 2016-07-29 12:56:09 PDT
Created attachment 284889 [details]
passes all open source debug JSC tests

Hooray!
Comment 20 Filip Pizlo 2016-07-29 13:49:16 PDT
Created attachment 284898 [details]
fixed release build
Comment 21 Filip Pizlo 2016-07-29 14:09:49 PDT
Created attachment 284899 [details]
rebased patch with changelog

There are still a handful of internal fuzz test failures.
Comment 22 Filip Pizlo 2016-07-29 17:13:18 PDT
Created attachment 284920 [details]
fixing internal fuzz test failures
Comment 23 WebKit Commit Bot 2016-07-29 17:16:12 PDT
Attachment 284920 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
Total errors found: 2 in 71 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 24 Filip Pizlo 2016-07-29 17:38:04 PDT
(In reply to comment #23)
> Attachment 284920 [details] did not pass style-queue:
> 
> 
> ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before (
> in while(  [whitespace/parens] [5]
> ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before
> ( in while(  [whitespace/parens] [5]
> Total errors found: 2 in 71 files
> 
> 
> If any of these errors are false positives, please file a bug against
> check-webkit-style.

It passes all internal release tests!!!!!
Comment 25 Filip Pizlo 2016-07-29 17:38:27 PDT
(In reply to comment #24)
> (In reply to comment #23)
> > Attachment 284920 [details] did not pass style-queue:
> > 
> > 
> > ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before (
> > in while(  [whitespace/parens] [5]
> > ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before
> > ( in while(  [whitespace/parens] [5]
> > Total errors found: 2 in 71 files
> > 
> > 
> > If any of these errors are false positives, please file a bug against
> > check-webkit-style.
> 
> It passes all internal release tests!!!!!

And as a bonus, it looks like it'll get a perfect score on EWS!
Comment 26 Filip Pizlo 2016-07-29 17:52:16 PDT
Looks like Octane/deltablue crashes with this patch.  Internal tests didn't catch it probably because you have to run long enough to cause the bad GC thing to happen.

Also, this looks like a 1% SunSpider regression.

I'll investigate the deltablue crash first.
Comment 27 Filip Pizlo 2016-07-29 19:26:18 PDT
It appears that deltablue requires an FTL fast path allocation for the bug to happen.  It looks as though the GC swept over a butterfly that some object was still referring to.  At the time the GC tries to visit the butterfly, it's clear that the start of the butterfly has a freelist next pointer and the rest of it has been overwritten by my new poisoning pass, where sweeping overwrites the things it sweeps with dummy values.  Disabling either the FTL or forcing slow path allocations fixes it.

Also, the poisoning is catching tons of bugs in normal tests.  We probably want to run tests in a mode that does this poisoning.

So, I've got a lot of problems to work through:

- 1% SunSpider regression
- deltablue crash due to FTL fast path allocation bug
- crashes when poison-sweeping is enabled, indicating a failure to clear butterflies in some places
Comment 28 Filip Pizlo 2016-07-29 19:34:36 PDT
It looks like disabling generational GC also causes deltablue to run correctly.  So, this may be a missing barrier!
Comment 29 Filip Pizlo 2016-07-29 23:01:41 PDT
Oh man.  It looks like we're GCing in operationNewArrayWithSize, after allocating the butterfly but before allocating the object.  That GC works fine, but the *next* GC goes mad while trying to scan that object.  Between the two GCs, we sweep the block, and we find the butterfly's cell on the free list.

It's a bit strange that we then crash in GC rather than crashing on access to the butterfly.  Maybe it's because deltablue has this perverse pattern of allocating a ton of arrays using "new Array()" syntax, which happens to trigger this bug.

Once I realized that this is the scenario, I was puzzled why it didn't show up in other tests.  Turns out this is oddly difficult to trigger, because you need to do enough array allocations that you trigger slow path on average twice (because you have a 50% chance of doing GC in the butterfly allocation, which would be fine).  On top of that, you can't let those array allocations die immediately, because if they do, then it's OK that a subsequent sweep reuses their space.  Probably none of our other tests managed to make this happen.  Hopefully I can fix that.

Anyway, this implies that the bug is either in the conservative scan or it's some block management goof that I overlooked.  I'll investigate!
Comment 30 Filip Pizlo 2016-07-30 12:27:19 PDT
Created attachment 284951 [details]
fixed the deltablue bug
Comment 31 WebKit Commit Bot 2016-07-30 12:30:19 PDT
Attachment 284951 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 10 in 73 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 32 Filip Pizlo 2016-07-30 17:53:14 PDT
Created attachment 284959 [details]
fixed a lot of bugs
Comment 33 WebKit Commit Bot 2016-07-30 17:55:37 PDT
Attachment 284959 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 11 in 80 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 34 Filip Pizlo 2016-07-30 18:38:25 PDT
Well the initial performance does not look good at all:


Benchmark report for Octane on murderface (MacBookPro11,5).

VMs tested:
"TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r203920)
"AuxButterflies" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r203920)

Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution
times with 95% confidence intervals in milliseconds.

                           TipOfTree               AuxButterflies                                  

encrypt                 0.14851+-0.00109    ?     0.14944+-0.00207       ?
decrypt                 2.50351+-0.00858    !     2.66173+-0.06498       ! definitely 1.0632x slower
deltablue      x2       0.12423+-0.00291    ?     0.12831+-0.00150       ? might be 1.0329x slower
earley                  0.27189+-0.00125          0.27142+-0.00140       
boyer                   4.61240+-0.18630    ?     4.66443+-0.20767       ? might be 1.0113x slower
navier-stokes  x2       4.58228+-0.02339    ?     4.59065+-0.02027       ?
raytrace       x2       0.75334+-0.00821          0.74898+-0.00417       
richards       x2       0.07725+-0.00122          0.07651+-0.00131       
splay          x2       0.32439+-0.00806    !     0.35273+-0.00842       ! definitely 1.0873x slower
regexp         x2      15.27902+-0.44799    ?    15.98953+-0.76619       ? might be 1.0465x slower
pdfjs          x2      39.28188+-0.36968    !    41.32144+-0.65972       ! definitely 1.0519x slower
mandreel       x2      39.42430+-0.22918    ?    39.52220+-0.19200       ?
gbemu          x2      28.13394+-0.46532         28.07904+-0.08672       
closure                 0.45813+-0.00249    ?     0.45892+-0.00280       ?
jquery                  6.15395+-0.03520    ?     6.20382+-0.08116       ?
box2d          x2       8.63123+-0.06943    ?     8.65312+-0.05706       ?
zlib           x2     353.45955+-14.53490       346.99087+-14.45479        might be 1.0186x faster
typescript     x2     584.76957+-13.03125   !   609.30717+-4.58142       ! definitely 1.0420x slower

<geometric>             4.76032+-0.04368    !     4.84578+-0.01081       ! definitely 1.0180x slower


I will investigate!
Comment 35 Filip Pizlo 2016-07-30 18:44:02 PDT
I bet that the problem is how we round up array lengths.  I think it causes the butterfly to usually waste once slot at the end of it.
Comment 36 Filip Pizlo 2016-07-30 18:46:55 PDT
Wow, crazy!  It looks like the collector's heap size accounting is messed up.
Comment 37 Filip Pizlo 2016-07-31 19:59:54 PDT
I fixed the accounting.  Now I have a splay speed-up but lots of other things are regressed.  I think it's because we have internal fragmentation, and I'm working on fixing that.

Benchmark report for Octane on murderface (MacBookPro11,5).

VMs tested:
"TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r203920)
"AuxButterflies" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r203920)

Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution
times with 95% confidence intervals in milliseconds.

                           TipOfTree               AuxButterflies                                  

encrypt                 0.15060+-0.00148          0.14979+-0.00289       
decrypt                 2.53416+-0.03734    !     2.66511+-0.03232       ! definitely 1.0517x slower
deltablue      x2       0.12180+-0.00081    !     0.12857+-0.00149       ! definitely 1.0555x slower
earley                  0.26910+-0.00091    ?     0.27207+-0.00299       ? might be 1.0110x slower
boyer                   4.59272+-0.17746    ?     4.70175+-0.14550       ? might be 1.0237x slower
navier-stokes  x2       4.59859+-0.01503    ?     4.59885+-0.02636       ?
raytrace       x2       0.75150+-0.00519    ?     0.75435+-0.00537       ?
richards       x2       0.07768+-0.00149          0.07601+-0.00081         might be 1.0220x faster
splay          x2       0.32326+-0.00215    ^     0.30997+-0.00255       ^ definitely 1.0429x faster
regexp         x2      15.37102+-0.36116    !    16.52510+-0.25615       ! definitely 1.0751x slower
pdfjs          x2      39.57326+-0.42080    !    40.84356+-0.41645       ! definitely 1.0321x slower
mandreel       x2      39.63574+-0.28791    ?    39.68141+-0.29761       ?
gbemu          x2      27.98538+-0.26435    ?    28.11299+-0.07135       ?
closure                 0.45926+-0.00399    ?     0.46099+-0.00324       ?
jquery                  6.15764+-0.04981    ?     6.18408+-0.03466       ?
box2d          x2       8.67327+-0.13701    ?     8.72572+-0.08408       ?
zlib           x2     356.59756+-2.72695        352.08651+-12.80692        might be 1.0128x faster
typescript     x2     579.68669+-7.88175    !   607.01038+-4.03266       ! definitely 1.0471x slower

<geometric>             4.76350+-0.01556    !     4.82319+-0.01421       ! definitely 1.0125x slower
Comment 38 Filip Pizlo 2016-07-31 20:00:24 PDT
Created attachment 284976 [details]
work in progress

Adding the magic to reduce internal fragmentation.
Comment 39 Filip Pizlo 2016-07-31 20:10:32 PDT
Created attachment 284977 [details]
oh man this might actually work
Comment 40 WebKit Commit Bot 2016-07-31 21:33:18 PDT
Attachment 284977 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2764:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2765:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 13 in 85 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 41 Filip Pizlo 2016-08-02 17:28:57 PDT
Created attachment 285168 [details]
performance
Comment 42 Filip Pizlo 2016-08-02 17:29:59 PDT
Created attachment 285169 [details]
latest patch

It probably needs to be rebased.
Comment 43 Filip Pizlo 2016-08-02 17:47:01 PDT
What I'm consistently finding is that the benchmarks that have regressions are also now using less memory.

That makes this feel like a win rather than a loss.  I'm going to see what happens when I run things in the full browser.
Comment 44 Filip Pizlo 2016-08-02 17:57:11 PDT
Created attachment 285170 [details]
latest patch
Comment 45 WebKit Commit Bot 2016-08-02 17:59:22 PDT
Attachment 285170 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2765:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2766:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 13 in 85 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 46 Filip Pizlo 2016-08-03 10:38:54 PDT
It looks like there are two things causing MarkedSpace to be a regression:

- MarkedBlocks are small, while CopiedBlocks are large.  The large size of CopiedBlocks makes a huge difference for certain common allocation sizes, like arrays of length 1024.  The allocation size for a contiguous butterfly would be 8200 bytes, which is more than half of a 16KB MarkedBlock.  So, we waste 16384-8200=8184 bytes for every 1024 array allocation, unless we make MarkedBlocks larger.  But if we make MarkedBlocks larger, we suffer fragmentation because of the very simplistic arrangement of size classes.  We should probably use exponential size classes rather than linear ones.

- Free-list creation is expensive.  In CopiedSpace we are optimized for the case that lots of objects all die at once, which happens to be how the web works.  Usually, you don't have to do any work to deal with the fragmentation in a CopiedBlock.  You just bump-allocate in a freshly allocated one, or one that has just been zeroed and nothing else.  But in MarkedSpace we have to create free-lists.  I think we should explore adding something different than free-lists in MarkedSpace.  I'm even thinking about making the allocation fast path be a bump/free-list hybrid, and modifying the sweep to quickly identify completely free MarkedBlocks.  If a MarkedBlock is completely free then we can tell the allocation fast paths to use bump.  Bump can be the default.  We could even make it the only inline fast path in some cases.

Anyway, here are the current perf results, after I made the MarkedBlock size 64KB:

Benchmark report for Octane and Kraken on murderface (MacBookPro11,5).

VMs tested:
"TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r204055)
"AuxButterflies" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r204055)

Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                TipOfTree               AuxButterflies                                  
Octane:
   encrypt                                   0.14292+-0.00108    !     0.14731+-0.00229       ! definitely 1.0308x slower
   decrypt                                   2.61144+-0.07626    ?     2.61413+-0.01196       ?
   deltablue                        x2       0.12511+-0.00246    ?     0.12594+-0.00327       ?
   earley                                    0.26931+-0.00154          0.26653+-0.00134         might be 1.0104x faster
   boyer                                     4.54482+-0.14269          4.40210+-0.11607         might be 1.0324x faster
   navier-stokes                    x2       4.61712+-0.02800    ?     4.64155+-0.04537       ?
   raytrace                         x2       0.75079+-0.00358    ^     0.73628+-0.00672       ^ definitely 1.0197x faster
   richards                         x2       0.07606+-0.00121    ?     0.07630+-0.00071       ?
   splay                            x2       0.32302+-0.00165    ^     0.29880+-0.00354       ^ definitely 1.0811x faster
   regexp                           x2      15.18275+-0.29877    !    16.14390+-0.22540       ! definitely 1.0633x slower
   pdfjs                            x2      39.65732+-0.54782    !    41.18570+-0.49433       ! definitely 1.0385x slower
   mandreel                         x2      39.84480+-0.37770         39.68316+-0.32085       
   gbemu                            x2      27.64703+-0.17189    !    30.02397+-0.29912       ! definitely 1.0860x slower
   closure                                   0.45987+-0.00338    ?     0.46161+-0.00211       ?
   jquery                                    6.20639+-0.07152          6.18832+-0.01875       
   box2d                            x2       8.62061+-0.07246    ?     8.69544+-0.09890       ?
   zlib                             x2     356.85201+-12.85325   ?   363.19929+-5.87951       ? might be 1.0178x slower
   typescript                       x2     589.75472+-13.20071       588.84249+-11.13164      

   <geometric>                               4.76057+-0.01421    !     4.79734+-0.01661       ! definitely 1.0077x slower

                                                TipOfTree               AuxButterflies                                  
Kraken:
   ai-astar                                   81.943+-1.153      ?      84.326+-3.194         ? might be 1.0291x slower
   audio-beat-detection                       36.129+-0.694             36.030+-0.273         
   audio-dft                                  95.417+-2.099             94.261+-1.822           might be 1.0123x faster
   audio-fft                                  27.771+-0.062      !      28.017+-0.081         ! definitely 1.0089x slower
   audio-oscillator                           44.660+-0.242      !      47.534+-0.297         ! definitely 1.0643x slower
   imaging-darkroom                           56.812+-0.415      ?      57.180+-1.283         ?
   imaging-desaturate                         42.957+-2.272             41.078+-0.194           might be 1.0457x faster
   imaging-gaussian-blur                      59.911+-4.382             58.325+-3.676           might be 1.0272x faster
   json-parse-financial                       32.442+-2.261             31.679+-0.211           might be 1.0241x faster
   json-stringify-tinderbox                   21.662+-0.654      ?      22.498+-1.237         ? might be 1.0386x slower
   stanford-crypto-aes                        35.099+-0.779      !      38.181+-1.694         ! definitely 1.0878x slower
   stanford-crypto-ccm                        32.910+-1.183      ?      34.935+-1.775         ? might be 1.0616x slower
   stanford-crypto-pbkdf2                     87.896+-0.528      !      92.195+-2.434         ! definitely 1.0489x slower
   stanford-crypto-sha256-iterative           29.388+-0.900      ?      30.566+-1.666         ? might be 1.0401x slower

   <arithmetic>                               48.928+-0.436      !      49.772+-0.405         ! definitely 1.0172x slower

                                                TipOfTree               AuxButterflies                                  
Geomean of preferred means:
   <scaled-result>                           15.2617+-0.0536     !     15.4522+-0.0730        ! definitely 1.0125x slower
Comment 47 Filip Pizlo 2016-08-03 11:29:19 PDT
Created attachment 285254 [details]
latest
Comment 48 WebKit Commit Bot 2016-08-03 11:36:34 PDT
Attachment 285254 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2765:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2766:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 13 in 90 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 49 Build Bot 2016-08-03 12:28:56 PDT
Comment on attachment 285254 [details]
latest

Attachment 285254 [details] did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/1805789

Number of test failures exceeded the failure limit.
Comment 50 Build Bot 2016-08-03 12:29:02 PDT
Created attachment 285260 [details]
Archive of layout-test-results from ews114 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews114  Port: mac-yosemite  Platform: Mac OS X 10.10.5
Comment 51 Filip Pizlo 2016-08-04 12:57:21 PDT
Created attachment 285349 [details]
new approach to size classes

This has a totally new approach to MarkedSpace size classes.  I'm hoping that this makes it easier to use larger marked blocks.
Comment 52 Filip Pizlo 2016-08-04 20:08:01 PDT
Created attachment 285396 [details]
last version before large allocation apocalypse
Comment 53 Filip Pizlo 2016-08-04 21:00:14 PDT
Created attachment 285399 [details]
large allocation apocalypse has begun
Comment 54 Filip Pizlo 2016-08-04 22:59:00 PDT
Created attachment 285401 [details]
large allocation rewrite compiles!
Comment 55 Filip Pizlo 2016-08-05 13:12:10 PDT
Created attachment 285444 [details]
large allocation rewrite is passing tests
Comment 56 Filip Pizlo 2016-08-05 14:18:53 PDT
Created attachment 285450 [details]
I just realized that I need to fix all of those MarkedBlock::blockFor() things

Hope crap this is ballooning.
Comment 57 Filip Pizlo 2016-08-05 16:05:31 PDT
Here's a good illustration of the trade-offs that I'm trying to resolve by rewriting how we do large allocations.

If I just allocate butterflies in marked space, things go bad because many butterflies are just larger than sizeof(MarkedBlock) and so they hit our disastrous large allocation path.

The AuxButterflies16KB version makes things a bit better by at least cleaning up the size classes, but this isn't enough to avoid slow-downs on Octane and Kraken.

Increasing the block size to 64KB does reduce the slow-downs in Octane and Kraken but it creates a slow-down in SunSpider, probably because we now allocate more memory right out of the gate.

So, I think we want a hybrid of AuxButterflies16KB and AuxButterflies64KB, where we allocate small marked blocks but don't waste memory for large butterflies.  To do that we need a new large allocation path!


Benchmark report for SunSpider, Octane, and Kraken on murderface (MacBookPro11,5).

VMs tested:
"TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r204128)
"SimpleAuxButterflies" at /Volumes/Data/quartary/OpenSource/WebKitBuild/Release/jsc (r204128)
"AuxButterflies16KB" at /Volumes/Data/quinary/OpenSource/WebKitBuild/Release/jsc (r204128)
"AuxButterflies64KB" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r204128)

Collected 10 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for
warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                TipOfTree            SimpleAuxButterflies       AuxButterflies16KB        AuxButterflies64KB      AuxButterflies64KB v. TipOfTree
SunSpider:
   3d-cube                                    4.4844+-0.0647     !      5.0431+-0.0498     ?      5.0754+-0.1433     ?      5.2062+-0.0668        ! definitely 1.1609x slower
   3d-morph                                   4.8011+-0.1857            4.7892+-0.2552            4.7074+-0.0399     ?      4.7546+-0.1605        
   3d-raytrace                                4.6572+-0.0589     ?      4.8237+-0.1817            4.6222+-0.0670     !      4.7955+-0.0985        ? might be 1.0297x slower
   access-binary-trees                        1.8976+-0.0330            1.8917+-0.0773     ?      1.9192+-0.0439     ?      1.9330+-0.0546        ? might be 1.0186x slower
   access-fannkuch                            5.2757+-0.2463     ?      5.3504+-0.0674     ^      5.1893+-0.0893     ?      5.2857+-0.0785        ?
   access-nbody                               2.3810+-0.1931            2.2882+-0.1280            2.2782+-0.0484     !      2.4673+-0.1080        ? might be 1.0362x slower
   access-nsieve                              2.8488+-0.0334            2.8037+-0.0389     ?      2.8376+-0.1148            2.8294+-0.0223        
   bitops-3bit-bits-in-byte                   1.0832+-0.1192            1.0556+-0.0465            1.0365+-0.0296     ?      1.2336+-0.3704        ? might be 1.1389x slower
   bitops-bits-in-byte                        2.5031+-0.0860            2.4543+-0.0313            2.4366+-0.0324     ?      2.5662+-0.2114        ? might be 1.0252x slower
   bitops-bitwise-and                         1.9174+-0.1362            1.8626+-0.0378     ?      1.8883+-0.0760     ?      1.9614+-0.0710        ? might be 1.0229x slower
   bitops-nsieve-bits                         2.9576+-0.1271     ?      2.9968+-0.1063            2.9110+-0.0290     ?      3.0239+-0.1058        ? might be 1.0224x slower
   controlflow-recursive                      2.1719+-0.0127     ?      2.2257+-0.0506            2.2011+-0.0429     ?      2.2100+-0.0313        ? might be 1.0176x slower
   crypto-aes                                 4.1922+-0.0939     !      4.4516+-0.1445            4.2357+-0.0788     ?      4.3728+-0.1270        ? might be 1.0431x slower
   crypto-md5                                 2.5801+-0.0564     ?      2.6380+-0.1585            2.5790+-0.0428     ?      2.6941+-0.1326        ? might be 1.0442x slower
   crypto-sha1                                2.5943+-0.0386     ?      2.6258+-0.0389     ?      2.6397+-0.0285     ?      2.6621+-0.0599        ? might be 1.0262x slower
   date-format-tofte                          6.4005+-0.2395     ?      6.5240+-0.2378     ?      6.5627+-0.2380     ?      6.8419+-0.2697        ? might be 1.0690x slower
   date-format-xparb                          4.4459+-0.0317     ?      4.5613+-0.2296            4.4573+-0.1501     ?      4.5766+-0.0532        ! definitely 1.0294x slower
   math-cordic                                2.6047+-0.1115            2.5863+-0.0423     ?      2.5985+-0.0227     ?      2.7637+-0.1679        ? might be 1.0611x slower
   math-partial-sums                          3.7212+-0.0493     ?      3.8688+-0.2066            3.7585+-0.0705     ?      4.0084+-0.2710        ? might be 1.0772x slower
   math-spectral-norm                         1.9491+-0.0278     ?      1.9608+-0.0450            1.9526+-0.0613     ?      1.9940+-0.0589        ? might be 1.0230x slower
   regexp-dna                                 6.2235+-0.4707            6.1266+-0.1453            6.1064+-0.1101            6.0533+-0.1326          might be 1.0281x faster
   string-base64                              4.4976+-0.2075            4.4254+-0.1358            4.3271+-0.0448     !      4.4467+-0.0708          might be 1.0115x faster
   string-fasta                               5.2094+-0.1420     ?      5.2497+-0.0913            5.1925+-0.0464     ?      5.3633+-0.1489        ? might be 1.0295x slower
   string-tagcloud                            8.2615+-0.3758            8.0670+-0.2049            8.0214+-0.1713     ?      8.3930+-0.2691        ? might be 1.0159x slower
   string-unpack-code                        17.4966+-0.3606           17.3569+-0.2993     ?     18.2648+-0.6339     ?     18.2784+-0.3744        ! definitely 1.0447x slower
   string-validate-input                      4.1611+-0.0964     ?      4.2257+-0.0682     ?      4.3071+-0.2034            4.2407+-0.0565        ? might be 1.0191x slower

   <arithmetic>                               4.2814+-0.0216     ?      4.3174+-0.0384            4.3118+-0.0289     !      4.4214+-0.0354        ! definitely 1.0327x slower

                                                TipOfTree            SimpleAuxButterflies       AuxButterflies16KB        AuxButterflies64KB      AuxButterflies64KB v. TipOfTree
Octane:
   encrypt                                   0.14559+-0.00225    !     0.15000+-0.00205          0.14845+-0.00332    ?     0.14895+-0.00297       ? might be 1.0231x slower
   decrypt                                   2.57292+-0.03250    !     2.62363+-0.00868          2.61100+-0.00489    ?     2.62455+-0.01301       ! definitely 1.0201x slower
   deltablue                        x2       0.12439+-0.00132    !     0.12865+-0.00202          0.12669+-0.00208          0.12606+-0.00188       ? might be 1.0134x slower
   earley                                    0.26990+-0.00160    ?     0.27189+-0.00120          0.27084+-0.00156    ^     0.26454+-0.00105       ^ definitely 1.0203x faster
   boyer                                     4.57432+-0.11169    ?     4.60830+-0.10973    ?     4.61912+-0.11172          4.48958+-0.10283         might be 1.0189x faster
   navier-stokes                    x2       4.60487+-0.01864    ?     4.60681+-0.01197    ?     4.61745+-0.02900          4.61106+-0.01406       ?
   raytrace                         x2       0.74891+-0.00386    ?     0.75037+-0.00492          0.74907+-0.00335    ^     0.73189+-0.00440       ^ definitely 1.0232x faster
   richards                         x2       0.07629+-0.00069    ?     0.07679+-0.00112    ?     0.07759+-0.00096          0.07701+-0.00137       ?
   splay                            x2       0.32571+-0.00295    ^     0.31420+-0.00187    !     0.32565+-0.00486    ^     0.31286+-0.00616       ^ definitely 1.0411x faster
   regexp                           x2      15.50033+-0.66766    !    16.49235+-0.23073         16.19040+-0.19243    ^    15.66231+-0.21639       ? might be 1.0104x slower
   pdfjs                            x2      39.39239+-0.35663    !    41.78375+-0.29215    ^    40.49726+-0.54108    ?    40.89425+-0.23561       ! definitely 1.0381x slower
   mandreel                         x2      39.71818+-0.26691    ?    39.80092+-0.23399         39.70865+-0.14213    ?    39.77723+-0.19827       ?
   gbemu                            x2      27.62646+-0.17355    !    29.28948+-0.19248    ^    27.80526+-0.22206    !    29.72521+-0.27890       ! definitely 1.0760x slower
   closure                                   0.45988+-0.00216    ?     0.46313+-0.00264    ?     0.46380+-0.00238    ?     0.46502+-0.00327       ? might be 1.0112x slower
   jquery                                    6.21443+-0.03311          6.20131+-0.05835    !     6.37222+-0.03338    ^     6.27906+-0.03439       ? might be 1.0104x slower
   box2d                            x2       8.62782+-0.05768    ?     8.71136+-0.03586    ?     8.75362+-0.03841          8.67463+-0.04658       ?
   zlib                             x2     343.02766+-10.56765   ?   356.89487+-4.55687        344.37725+-9.78342    ?   348.80072+-9.91226       ? might be 1.0168x slower
   typescript                       x2     582.11401+-8.04523    !   595.62290+-4.71067    ?   597.37607+-3.04969        592.25625+-5.55931       ? might be 1.0174x slower

   <geometric>                               4.74911+-0.01914    !     4.84402+-0.01169          4.81331+-0.02062          4.79250+-0.01935       ! definitely 1.0091x slower

                                                TipOfTree            SimpleAuxButterflies       AuxButterflies16KB        AuxButterflies64KB      AuxButterflies64KB v. TipOfTree
Kraken:
   ai-astar                                   81.944+-1.232      ?      83.676+-1.940             83.073+-0.718             82.230+-0.534         ?
   audio-beat-detection                       35.724+-0.132      !      39.441+-0.101             39.313+-0.106      ^      35.817+-0.274         ?
   audio-dft                                  96.028+-1.792             95.003+-2.349      ?      95.447+-1.846             94.994+-1.422           might be 1.0109x faster
   audio-fft                                  28.078+-0.756      !      31.442+-0.216      ?      31.594+-0.177      ^      27.925+-0.161         
   audio-oscillator                           45.268+-0.954      ?      45.509+-0.435      ?      45.637+-0.449             45.397+-0.317         ?
   imaging-darkroom                           56.784+-0.177      ?      56.908+-0.244      ?      57.116+-0.411             56.947+-0.219         ?
   imaging-desaturate                         41.677+-1.319             40.919+-0.253      ?      42.322+-2.175             41.292+-0.197         
   imaging-gaussian-blur                      55.877+-1.287             55.555+-1.137      ?      56.577+-1.358             55.324+-1.321         
   json-parse-financial                       32.082+-1.499      ?      33.303+-1.392      ?      34.549+-1.559             33.409+-1.604         ? might be 1.0414x slower
   json-stringify-tinderbox                   23.207+-1.646             22.068+-1.049             20.898+-0.763      ?      22.741+-1.320           might be 1.0205x faster
   stanford-crypto-aes                        34.618+-0.176      !      38.038+-1.070      ^      35.995+-0.298             35.610+-0.461         ! definitely 1.0287x slower
   stanford-crypto-ccm                        32.027+-1.133      !      34.666+-1.189             33.743+-1.961      ?      34.924+-1.371         ! definitely 1.0904x slower
   stanford-crypto-pbkdf2                     87.904+-0.819      !      92.863+-1.454             92.479+-1.049             91.927+-0.941         ! definitely 1.0458x slower
   stanford-crypto-sha256-iterative           29.220+-1.031      ?      30.359+-1.234             29.398+-0.283      ?      29.893+-0.645         ? might be 1.0230x slower

   <arithmetic>                               48.603+-0.321      !      49.982+-0.234             49.867+-0.467             49.173+-0.249         ! definitely 1.0117x slower

                                                TipOfTree            SimpleAuxButterflies       AuxButterflies16KB        AuxButterflies64KB      AuxButterflies64KB v. TipOfTree
Geomean of preferred means:
   <scaled-result>                            9.9605+-0.0308     !     10.1486+-0.0337           10.1149+-0.0459     ?     10.1377+-0.0286        ! definitely 1.0178x slower
Comment 58 Filip Pizlo 2016-08-05 17:26:33 PDT
Things are getting better.  But I undid the splay speed-up.  I'll investigate what happened there.


Benchmark report for SunSpider, Octane, and Kraken on murderface (MacBookPro11,5).

VMs tested:
"TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r204128)
"SimpleAuxButterflies" at /Volumes/Data/quartary/OpenSource/WebKitBuild/Release/jsc (r204128)
"AuxButterflies64KB" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r204128)
"AuxButterfliesLargeAlloc" at /Volumes/Data/quinary/OpenSource/WebKitBuild/Release/jsc (r204128)

Collected 10 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for
warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                TipOfTree            SimpleAuxButterflies       AuxButterflies64KB    AuxButterfliesLargeAlloc    AuxButterfliesLargeAlloc v. TipOfTree
SunSpider:
   3d-cube                                    4.5578+-0.1559     !      5.0198+-0.1410     ?      5.1283+-0.0992            5.1174+-0.1121        ! definitely 1.1228x slower
   3d-morph                                   4.7218+-0.0819            4.6649+-0.0384     ?      4.8637+-0.2404            4.7671+-0.1557        ?
   3d-raytrace                                4.7702+-0.1780            4.5675+-0.0695     !      4.9135+-0.1192     ^      4.6527+-0.1056          might be 1.0253x faster
   access-binary-trees                        1.8450+-0.0610     ?      1.8662+-0.0448     ?      1.9291+-0.0521            1.9273+-0.0516        ? might be 1.0446x slower
   access-fannkuch                            5.2317+-0.1742     ?      5.4488+-0.2939            5.1774+-0.1788            5.1562+-0.1787          might be 1.0146x faster
   access-nbody                               2.2598+-0.0258     ?      2.4434+-0.2870            2.4369+-0.0709            2.3413+-0.1447        ? might be 1.0361x slower
   access-nsieve                              2.8322+-0.0350            2.7698+-0.0318     ?      2.8240+-0.0238     ?      2.8501+-0.1076        ?
   bitops-3bit-bits-in-byte                   1.0201+-0.0115     !      1.0897+-0.0581     ?      1.1380+-0.1369            1.0445+-0.0400        ? might be 1.0239x slower
   bitops-bits-in-byte                        2.4361+-0.0394     ?      2.5891+-0.1934            2.5735+-0.1568            2.4573+-0.0502        ?
   bitops-bitwise-and                         1.9754+-0.2558            1.8642+-0.0256     ?      1.9120+-0.0601            1.8836+-0.0545          might be 1.0487x faster
   bitops-nsieve-bits                         2.9440+-0.0916            2.9146+-0.0372     ?      3.0260+-0.1386            2.8997+-0.0223          might be 1.0153x faster
   controlflow-recursive                      2.3048+-0.1584            2.2134+-0.1479     ?      2.2980+-0.1058            2.2444+-0.0762          might be 1.0269x faster
   crypto-aes                                 4.2529+-0.1690     ?      4.4554+-0.1997            4.3481+-0.2286            4.2243+-0.0773        
   crypto-md5                                 2.5201+-0.0354     ?      2.5578+-0.0504     ?      2.7454+-0.3581            2.6090+-0.1143        ? might be 1.0353x slower
   crypto-sha1                                2.6248+-0.0538     ?      2.6739+-0.0661            2.6583+-0.0410            2.6188+-0.0321        
   date-format-tofte                          6.3851+-0.2480     ?      6.3956+-0.2316     ?      6.8543+-0.2600            6.7328+-0.3984        ? might be 1.0545x slower
   date-format-xparb                          4.6708+-0.2768            4.3976+-0.0740     !      4.6877+-0.2152            4.4762+-0.0971          might be 1.0435x faster
   math-cordic                                2.6074+-0.0604     ?      2.7512+-0.2773            2.6849+-0.0866            2.6664+-0.1267        ? might be 1.0226x slower
   math-partial-sums                          3.8396+-0.1665            3.7813+-0.0954     ?      3.8433+-0.1129     ?      3.9779+-0.3178        ? might be 1.0360x slower
   math-spectral-norm                         1.9565+-0.0581            1.9480+-0.0406     ?      1.9707+-0.0256     ?      1.9931+-0.0774        ? might be 1.0187x slower
   regexp-dna                                 6.1790+-0.2704            6.0703+-0.2340     ?      6.2838+-0.2493            6.0842+-0.2282          might be 1.0156x faster
   string-base64                              4.2741+-0.0292     ?      4.3163+-0.0462     !      4.5058+-0.1200     ^      4.3292+-0.0421        ? might be 1.0129x slower
   string-fasta                               5.2731+-0.1846            5.1514+-0.0398     !      5.6360+-0.3093            5.3571+-0.1397        ? might be 1.0159x slower
   string-tagcloud                            7.9739+-0.2367     ?      8.1055+-0.4643            8.0471+-0.0470            8.0419+-0.1938        ?
   string-unpack-code                        18.0191+-0.9203           17.6282+-0.4758     ?     17.6685+-0.3062     ?     17.9680+-0.6064        
   string-validate-input                      4.1739+-0.0550            4.1443+-0.0605     !      4.3240+-0.0926            4.3200+-0.1175        ? might be 1.0350x slower

   <arithmetic>                               4.2942+-0.0477     ?      4.3011+-0.0442     !      4.4030+-0.0412     ^      4.3362+-0.0253        ? might be 1.0098x slower

                                                TipOfTree            SimpleAuxButterflies       AuxButterflies64KB    AuxButterfliesLargeAlloc    AuxButterfliesLargeAlloc v. TipOfTree
Octane:
   encrypt                                   0.14533+-0.00222    !     0.15108+-0.00301          0.15034+-0.00318          0.14689+-0.00193       ? might be 1.0107x slower
   decrypt                                   2.61876+-0.04621    ?     2.62099+-0.00966          2.61268+-0.01044          2.61173+-0.00981       
   deltablue                        x2       0.12177+-0.00130    !     0.12743+-0.00235          0.12631+-0.00231    ?     0.12889+-0.00970       ? might be 1.0585x slower
   earley                                    0.27001+-0.00185    ?     0.27377+-0.00325    ^     0.26454+-0.00055    !     0.27204+-0.00190       ?
   boyer                                     4.58360+-0.11484    ?     4.61276+-0.10187          4.47922+-0.10752    ?     4.67403+-0.09395       ? might be 1.0197x slower
   navier-stokes                    x2       4.61178+-0.01672          4.59953+-0.01391    ?     4.60831+-0.03052          4.60680+-0.01671       
   raytrace                         x2       0.74943+-0.00424          0.74786+-0.00507    ^     0.73181+-0.00439    !     0.74839+-0.00358       
   richards                         x2       0.07658+-0.00081          0.07633+-0.00033    ?     0.07657+-0.00088    ?     0.07683+-0.00084       ?
   splay                            x2       0.32292+-0.00174    ^     0.31468+-0.00217    ^     0.30964+-0.00276    !     0.32906+-0.00146       ! definitely 1.0190x slower
   regexp                           x2      15.40845+-0.33175    !    16.44271+-0.31377    ^    15.55046+-0.21314    ?    15.87594+-0.25650       ? might be 1.0303x slower
   pdfjs                            x2      39.40315+-0.28901    !    41.78232+-0.17371    ^    40.92843+-0.34968    ^    39.73745+-0.21895       ?
   mandreel                         x2      39.76420+-0.20860    ?    40.04070+-0.37404         39.70689+-0.15163         39.67501+-0.22849       
   gbemu                            x2      27.48214+-0.09655    !    29.20368+-0.19523    ?    29.60994+-0.22860    ^    28.95805+-0.07978       ! definitely 1.0537x slower
   closure                                   0.45977+-0.00195          0.45742+-0.00230    ?     0.46260+-0.00396          0.46150+-0.00125       ?
   jquery                                    6.16387+-0.04029    ?     6.19293+-0.02350    !     6.26991+-0.02460    ?     6.32008+-0.03038       ! definitely 1.0253x slower
   box2d                            x2       8.57640+-0.05250    !     8.70619+-0.04156          8.65640+-0.02894    ?     8.69710+-0.04477       ! definitely 1.0141x slower
   zlib                             x2     346.27353+-9.51686    ?   350.26088+-11.41218       346.60460+-13.27221   ?   349.91839+-7.44690       ? might be 1.0105x slower
   typescript                       x2     578.99900+-5.96293    !   601.29929+-9.41440        593.42517+-6.74871    !   611.23459+-4.99278       ! definitely 1.0557x slower

   <geometric>                               4.73984+-0.01428    !     4.83449+-0.02249    ^     4.78119+-0.02763    ?     4.82662+-0.02474       ! definitely 1.0183x slower

                                                TipOfTree            SimpleAuxButterflies       AuxButterflies64KB    AuxButterfliesLargeAlloc    AuxButterfliesLargeAlloc v. TipOfTree
Kraken:
   ai-astar                                   84.832+-2.243             84.517+-2.439             83.084+-1.402             82.637+-0.636           might be 1.0266x faster
   audio-beat-detection                       35.769+-0.161      !      39.823+-0.802      ^      35.775+-0.103      !      36.238+-0.229         ! definitely 1.0131x slower
   audio-dft                                  95.137+-1.304      ?      95.324+-1.607             94.662+-1.678             94.257+-2.111         
   audio-fft                                  27.747+-0.039      !      31.589+-0.182      ^      28.222+-0.694      ?      28.301+-0.288         ! definitely 1.0200x slower
   audio-oscillator                           46.220+-1.275             45.568+-0.252      ?      45.921+-0.906             45.890+-1.417         
   imaging-darkroom                           56.786+-0.152      ?      57.158+-0.439      ?      57.245+-0.493             57.155+-1.013         ?
   imaging-desaturate                         42.108+-1.553             41.327+-0.908             40.871+-0.227      ?      41.819+-0.981         
   imaging-gaussian-blur                      56.755+-0.920      ?      56.818+-1.191             56.646+-1.381      ?      58.442+-2.822         ? might be 1.0297x slower
   json-parse-financial                       32.402+-1.580             31.919+-0.888      ?      33.297+-1.361             32.034+-1.195           might be 1.0115x faster
   json-stringify-tinderbox                   21.794+-0.898             21.729+-1.012      ?      22.078+-1.430             21.260+-1.063           might be 1.0251x faster
   stanford-crypto-aes                        34.456+-0.177      !      37.794+-0.996      ^      35.915+-0.818             35.718+-0.166         ! definitely 1.0366x slower
   stanford-crypto-ccm                        32.319+-0.271      ?      34.418+-2.566      ?      34.672+-1.910             33.376+-1.641         ? might be 1.0327x slower
   stanford-crypto-pbkdf2                     87.982+-0.875      !      92.421+-1.269      ?      92.911+-1.910             91.968+-0.703         ! definitely 1.0453x slower
   stanford-crypto-sha256-iterative           29.130+-0.628      ?      29.284+-0.367      !      31.145+-1.422             29.470+-0.369         ? might be 1.0117x slower

   <arithmetic>                               48.817+-0.279      !      49.978+-0.396             49.460+-0.395             49.183+-0.458         ? might be 1.0075x slower

                                                TipOfTree            SimpleAuxButterflies       AuxButterflies64KB    AuxButterfliesLargeAlloc    AuxButterfliesLargeAlloc v. TipOfTree
Geomean of preferred means:
   <scaled-result>                            9.9784+-0.0543     !     10.1286+-0.0441     ?     10.1352+-0.0435           10.0966+-0.0355        ! definitely 1.0118x slower
Comment 59 Filip Pizlo 2016-08-05 17:27:20 PDT
Created attachment 285467 [details]
latest

I managed to slow down splay in the process.  I'll investigate.
Comment 60 Filip Pizlo 2016-08-05 21:54:02 PDT
I wanted to know where the remaining performance deficit came from.  I was wondering if maybe the choice of size classes played a role.  It seems that Octane *really loves* the old size classes, but everything else prefers the new ones.

ExpSizeClasses = whats in the patch
DirectOldClasses = the patch but with old size classes
IndirectOldClasses = like DirectOldClasses but with the size classes tweaked to optimize block packing

VMs tested:
"TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r204128)
"ExpSizeClasses" at /Volumes/Data/quinary/OpenSource/ExpSizeClasses/WebKitBuild/Release/jsc
"DirectOldClasses" at /Volumes/Data/quinary/OpenSource/DirectOldClasses/WebKitBuild/Release/jsc
"IndirectOldClasses" at /Volumes/Data/quinary/OpenSource/IndirectOldClasses/WebKitBuild/Release/jsc

Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for
warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                TipOfTree               ExpSizeClasses           DirectOldClasses         IndirectOldClasses      IndirectOldClasses v. TipOfTree
SunSpider:
   3d-cube                                    4.5713+-0.1336     !      5.0494+-0.0895     ?      5.1134+-0.1517            4.9361+-0.1613        ! definitely 1.0798x slower
   3d-morph                                   4.7587+-0.1678            4.7172+-0.1335     ?      4.9244+-0.4627            4.6917+-0.0823          might be 1.0143x faster
   3d-raytrace                                4.6127+-0.0936     ?      4.6283+-0.1122     ?      4.7605+-0.3481     ?      4.7839+-0.1956        ? might be 1.0371x slower
   access-binary-trees                        1.8947+-0.0329     ?      1.9413+-0.0441            1.9032+-0.0428     ?      1.9670+-0.1587        ? might be 1.0382x slower
   access-fannkuch                            5.4318+-0.2776            5.3228+-0.2452            5.1283+-0.2630     ?      5.1472+-0.3419          might be 1.0553x faster
   access-nbody                               2.3580+-0.1475            2.3185+-0.2706            2.2800+-0.0654            2.2188+-0.0317          might be 1.0628x faster
   access-nsieve                              2.9406+-0.2026            2.7893+-0.0160     ?      2.7992+-0.0267            2.7901+-0.0368          might be 1.0539x faster
   bitops-3bit-bits-in-byte                   1.0318+-0.0333     ?      1.0687+-0.0858            1.0610+-0.0866            1.0485+-0.0690        ? might be 1.0161x slower
   bitops-bits-in-byte                        2.4114+-0.0641     ?      2.6401+-0.2822            2.4675+-0.0285     ?      2.4968+-0.0978        ? might be 1.0354x slower
   bitops-bitwise-and                         1.9052+-0.0929            1.8793+-0.0695     ?      1.9561+-0.1351            1.8972+-0.1016        
   bitops-nsieve-bits                         2.9928+-0.1339            2.8914+-0.0361     ?      2.9301+-0.0478            2.8868+-0.0523          might be 1.0367x faster
   controlflow-recursive                      2.2178+-0.0957            2.2164+-0.1160     ?      2.2295+-0.1044     ?      2.4235+-0.3840        ? might be 1.0927x slower
   crypto-aes                                 4.2458+-0.0500     ?      4.3111+-0.3310            4.1906+-0.0357     ?      4.3183+-0.1692        ? might be 1.0171x slower
   crypto-md5                                 2.6381+-0.1321            2.5339+-0.0505     ?      2.5637+-0.0878            2.5403+-0.0333          might be 1.0385x faster
   crypto-sha1                                2.5945+-0.0867     ?      2.6085+-0.0961     ?      2.7609+-0.2194            2.7193+-0.1899        ? might be 1.0481x slower
   date-format-tofte                          6.3042+-0.2751     ?      6.5833+-0.1479     ?      6.7733+-0.2939            6.5526+-0.2845        ? might be 1.0394x slower
   date-format-xparb                          4.4419+-0.0402     ?      4.6832+-0.3377            4.5682+-0.1467            4.5032+-0.1912        ? might be 1.0138x slower
   math-cordic                                2.5768+-0.0357     ?      2.7225+-0.2591            2.5730+-0.0332     ?      2.7295+-0.3784        ? might be 1.0592x slower
   math-partial-sums                          4.0279+-0.6042            3.7950+-0.1552            3.7302+-0.0889     ?      3.7598+-0.0648          might be 1.0713x faster
   math-spectral-norm                         1.9377+-0.0416     ?      1.9602+-0.1397     ?      2.0427+-0.1656            1.9125+-0.0622          might be 1.0132x faster
   regexp-dna                                 6.3999+-1.0044            6.0369+-0.1126     ?      6.1108+-0.3615     ?      6.1691+-0.2085          might be 1.0374x faster
   string-base64                              4.3101+-0.0718     ?      4.3868+-0.1615            4.3417+-0.1152     ?      4.5407+-0.5264        ? might be 1.0535x slower
   string-fasta                               5.3610+-0.2860     ?      5.4854+-0.6229            5.2203+-0.0912     ?      5.3229+-0.1980        
   string-tagcloud                            8.0385+-0.4025            7.9395+-0.1997            7.9065+-0.0420     ?      7.9573+-0.1214          might be 1.0102x faster
   string-unpack-code                        17.6949+-1.2300     ?     18.1212+-0.7715     ?     18.1484+-0.5639     ?     18.1807+-1.5347        ? might be 1.0275x slower
   string-validate-input                      4.1226+-0.0741     ?      4.1957+-0.0678     ?      4.2442+-0.0706            4.1733+-0.0484        ? might be 1.0123x slower

   <arithmetic>                               4.3008+-0.0376     ?      4.3394+-0.0677            4.3357+-0.0559            4.3333+-0.0851        ? might be 1.0076x slower

                                                TipOfTree               ExpSizeClasses           DirectOldClasses         IndirectOldClasses      IndirectOldClasses v. TipOfTree
Octane:
   encrypt                                   0.14540+-0.00374    ?     0.14796+-0.00397          0.14768+-0.00342          0.14755+-0.00302       ? might be 1.0148x slower
   decrypt                                   2.61147+-0.07250    ?     2.62061+-0.01689    ?     2.62201+-0.00775    ?     2.62537+-0.01012       ?
   deltablue                        x2       0.12297+-0.00258    ?     0.12660+-0.00287    ?     0.12811+-0.00391          0.12780+-0.00144       ! definitely 1.0393x slower
   earley                                    0.26887+-0.00113    ?     0.27137+-0.00249    ?     0.27357+-0.00492          0.27184+-0.00132       ! definitely 1.0111x slower
   boyer                                     4.61803+-0.18233          4.57228+-0.18381    ?     4.61550+-0.17271          4.60799+-0.16707       
   navier-stokes                    x2       4.59828+-0.03302    ?     4.60812+-0.02303          4.58978+-0.01544    ?     4.60754+-0.00971       ?
   raytrace                         x2       0.75081+-0.00875          0.74838+-0.00504          0.74761+-0.00500    ?     0.74823+-0.00658       
   richards                         x2       0.07631+-0.00227          0.07553+-0.00085    ?     0.07733+-0.00138          0.07680+-0.00093       ?
   splay                            x2       0.32254+-0.00181    !     0.32819+-0.00279    ^     0.31650+-0.00326    ?     0.31692+-0.00479         might be 1.0177x faster
   regexp                           x2      15.56761+-0.34274    ?    16.18753+-0.59306    ?    16.40115+-0.66024    ?    16.48602+-0.50356       ! definitely 1.0590x slower
   pdfjs                            x2      39.57508+-0.40768    ?    39.66896+-0.32532         39.43343+-0.49412    ?    40.15574+-0.48806       ? might be 1.0147x slower
   mandreel                         x2      39.69488+-0.46114    ?    39.86782+-0.37096         39.74301+-0.47906    ?    39.97507+-0.30770       ?
   gbemu                            x2      27.68700+-0.24353    !    28.96460+-0.06953    ?    28.97904+-0.29675    ?    29.14228+-0.20618       ! definitely 1.0526x slower
   closure                                   0.45700+-0.00256    ?     0.46171+-0.00318    ?     0.46317+-0.00360    ?     0.46343+-0.00406       ? might be 1.0141x slower
   jquery                                    6.21000+-0.03053    !     6.28359+-0.01969    ^     6.22171+-0.03593    ?     6.24991+-0.06855       ?
   box2d                            x2       8.60905+-0.04744    ?     8.72229+-0.08093    ?     8.76527+-0.06503          8.73209+-0.07573       ? might be 1.0143x slower
   zlib                             x2     346.02143+-20.97996   ?   354.07517+-18.93867   ?   354.76976+-2.95834        344.07296+-16.38411      
   typescript                       x2     582.43848+-7.14311    !   612.81498+-10.57648       595.84648+-6.68457    ?   600.65658+-4.14792       ! definitely 1.0313x slower

   <geometric>                               4.75048+-0.02721    !     4.82525+-0.01967          4.81979+-0.02503    ?     4.82098+-0.02027       ! definitely 1.0148x slower

                                                TipOfTree               ExpSizeClasses           DirectOldClasses         IndirectOldClasses      IndirectOldClasses v. TipOfTree
Kraken:
   ai-astar                                   81.137+-0.550      ?      83.009+-3.126             82.492+-1.842      ?      82.988+-2.403         ? might be 1.0228x slower
   audio-beat-detection                       36.287+-1.097             36.284+-0.227      ?      36.472+-0.527             36.026+-0.156         
   audio-dft                                  95.328+-2.642             95.294+-2.300             94.772+-2.513             94.685+-2.771         
   audio-fft                                  27.846+-0.152      !      28.398+-0.245      ?      28.812+-1.496             28.360+-0.183         ! definitely 1.0185x slower
   audio-oscillator                           45.312+-0.587      ?      45.377+-0.535             45.348+-1.938      ?      45.478+-1.709         ?
   imaging-darkroom                           56.738+-0.148      ?      58.412+-2.030             56.628+-0.071      ?      56.746+-0.184         ?
   imaging-desaturate                         41.020+-0.654             40.869+-0.325      ?      41.089+-0.370      ?      41.833+-2.558         ? might be 1.0198x slower
   imaging-gaussian-blur                      56.816+-1.760             55.732+-2.005      ?      56.809+-1.715             56.146+-2.071           might be 1.0119x faster
   json-parse-financial                       31.936+-1.092      ?      32.005+-0.914      ?      33.350+-1.700             31.656+-0.682         
   json-stringify-tinderbox                   22.596+-2.495             20.895+-0.791      ?      21.714+-1.674             20.750+-1.329           might be 1.0889x faster
   stanford-crypto-aes                        34.636+-0.556      ?      35.995+-1.244      !      38.019+-0.398      ?      38.773+-2.096         ! definitely 1.1194x slower
   stanford-crypto-ccm                        33.176+-1.515      ?      33.667+-2.683      ?      35.546+-2.020      ?      36.222+-3.999         ? might be 1.0918x slower
   stanford-crypto-pbkdf2                     87.796+-1.531      !      92.402+-1.060             92.372+-1.642             92.105+-1.090         ! definitely 1.0491x slower
   stanford-crypto-sha256-iterative           28.856+-0.766      ?      29.751+-0.757             29.508+-0.343      ?      30.146+-0.654         ? might be 1.0447x slower

   <arithmetic>                               48.534+-0.394      !      49.149+-0.216      ?      49.495+-0.404             49.422+-0.879         ? might be 1.0183x slower

                                                TipOfTree               ExpSizeClasses           DirectOldClasses         IndirectOldClasses      IndirectOldClasses v. TipOfTree
Geomean of preferred means:
   <scaled-result>                            9.9717+-0.0289     !     10.0959+-0.0403     ?     10.1128+-0.0567           10.1066+-0.0993        ! definitely 1.0135x slower
Comment 61 Filip Pizlo 2016-08-05 21:57:39 PDT
I still need to measure the in-browser performance effect of this change.  I still need to measure perf on ES6 benchmarks.

Here are some things that I can try to improve the perf:

- Find users of heapCell->heap()/vm() that can be changed to heapCell->markedBlock().heap()/vm().

- Make totally empty blocks available for reuse by any size class.

- Enable some kind of allocator that doesn't sweep.
Comment 62 Filip Pizlo 2016-08-05 22:00:49 PDT
Created attachment 285481 [details]
latest
Comment 63 Filip Pizlo 2016-08-08 11:47:56 PDT
Created attachment 285575 [details]
started working on concurrent sweeper

I think that if I can get the GC to sweep concurrently then this will resolve the perf problems.
Comment 64 Filip Pizlo 2016-08-08 13:58:45 PDT
I think that in addition to concurrent sweeping we want to add a bump allocator as well.  The concurrent sweeper matches the incremental sweeper's algorithm, in the sense that it will free blocks that are completely empty.  But that means that later, we will have to produce a new free list for the block.

So, we probably want to move to a world where a freshly allocated block does not need to be swept.  That means enabling a bump allocator.  Weird.
Comment 65 Filip Pizlo 2016-08-08 16:10:38 PDT
Created attachment 285600 [details]
concurrent sweeper compiles
Comment 66 Filip Pizlo 2016-08-08 16:11:04 PDT
Created attachment 285601 [details]
latest before concurrent sweeper
Comment 67 Filip Pizlo 2016-08-08 18:03:06 PDT
Created attachment 285623 [details]
concurrent sweeper just swept some things
Comment 68 Filip Pizlo 2016-08-08 18:30:31 PDT
Holy cow, the concurrent sweeper looks super promising!  Speed-ups on raytrace and deltablue.  But that's with block freeing totally disabled.  Enabling it seems like a bad idea for perf, unless we add a bump allocator.  Also, it looks like I need to make sure that the concurrent sweeper only uses one thread.

There are still some bugs.  I'll fix the bugs and then get back to:

- Cap the number of threads that the concurrent sweeper uses.
- Implement the bump allocator.
Comment 69 Filip Pizlo 2016-08-08 19:30:28 PDT
Created attachment 285625 [details]
concurrent sweeper is becoming reliable

Fixed a bunch of bugs from running JSC tests.  I don't know yet if it passes all of them.
Comment 70 Filip Pizlo 2016-08-08 21:35:29 PDT
Looks like concurrent sweeping is having a decisively positive effect in Octane, but it still slows down some things.  This is with the sweeper hacked to run only one thread and to avoid freeing blocks.  We can turn freeing blocks on when if add a bump allocator, or if we make the sweeper free blocks only after they have sat around for a while.  I'm hopeful that this will remove any slow-downs, because I think that the slow-downs are caused by the sweeper having to do work that potentially interferes with the mutator, in terms of both memory traffic and lock contention.

Now I need to try the following things:

- Play a bit more with some data gathering to see what is going on in regressed tests.  For example, maybe it's just a matter of tuning how we deal with lock contention.

- Implement a bump allocator that we will use when a block is completely empty.  Optimize the sweeper for detecting completely free blocks.
Comment 71 Filip Pizlo 2016-08-08 21:36:13 PDT
Created attachment 285630 [details]
concurrent sweeper is starting to look like a net win
Comment 72 Filip Pizlo 2016-08-09 13:10:14 PDT
Created attachment 285665 [details]
started rewriting the allocator to use bump'n'pop

Bump'n'pop better be awesome because the name is awesome.
Comment 73 Filip Pizlo 2016-08-09 13:58:38 PDT
Created attachment 285673 [details]
bump'n'pop is written
Comment 74 Filip Pizlo 2016-08-09 14:52:04 PDT
Created attachment 285678 [details]
bump'n'pop compiles!
Comment 75 Filip Pizlo 2016-08-09 18:47:05 PDT
Created attachment 285706 [details]
bump'n'pop is starting to work!
Comment 76 Filip Pizlo 2016-08-10 12:52:04 PDT
Created attachment 285746 [details]
bump'n'pop passes all tests

Still need to measure perf.
Comment 77 Filip Pizlo 2016-08-10 19:10:07 PDT
Created attachment 285804 [details]
bump'n'pop without concurrent sweep

This looks like it's now neutral on Octane!!  Yay!

TipOfTree = unmodified r204218
Old = last version before concurrent sweeper
BumpNPop, BumpNPop2 = this patch, in two different directories

Note that I'm hitting the old pathology where regexp, jquery, and closure get different perf depending on the directory in which the VM was built.  BumpNPop2 uses the same directory as TipOfTree to make sure that this effect is removed.


Benchmark report for SunSpider, Octane, and Kraken on murderface (MacBookPro11,5).

VMs tested:
"TipOfTree" at /Volumes/Data/secondary/OpenSource/Baseline/WebKitBuild/Release/jsc
"Old" at /Volumes/Data/quinary/OpenSource/WebKitBuild/Release/jsc (r204218)
"BumpNPop" at /Volumes/Data/octonary/OpenSource/WebKitBuild/Release/jsc (r204218)
"BumpNPop2" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r204218)

Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation
for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in
milliseconds.

                                                TipOfTree                    Old                     BumpNPop                 BumpNPop2             BumpNPop2 v. TipOfTree  
SunSpider:
   3d-cube                                    4.5102+-0.1487     !      5.1216+-0.1353     ^      4.5409+-0.2681     ?      4.8132+-0.3383        ? might be 1.0672x slower
   3d-morph                                   4.6531+-0.0405     ?      4.6580+-0.1169     ?      4.7105+-0.1462            4.6780+-0.0363        ?
   3d-raytrace                                4.8856+-0.4038            4.8013+-0.3129     ?      4.8672+-0.2349            4.6500+-0.0510          might be 1.0507x faster
   access-binary-trees                        1.9019+-0.0859            1.8678+-0.0294     ?      2.0153+-0.1667            1.9141+-0.0993        ?
   access-fannkuch                            5.1544+-0.0678     ?      5.2241+-0.1810     ?      5.3591+-0.0703            5.3282+-0.3330        ? might be 1.0337x slower
   access-nbody                               2.3298+-0.1685            2.3030+-0.0973     ?      2.4967+-0.1924            2.4193+-0.1989        ? might be 1.0384x slower
   access-nsieve                              2.8919+-0.3141            2.8433+-0.1954            2.8297+-0.0276     ?      2.8945+-0.1341        ?
   bitops-3bit-bits-in-byte                   1.0195+-0.0565            1.0182+-0.0473     !      1.0917+-0.0133            1.0854+-0.0607        ? might be 1.0647x slower
   bitops-bits-in-byte                        2.4639+-0.0438            2.4118+-0.0413     ?      2.5142+-0.0837     ?      2.6663+-0.2180        ? might be 1.0822x slower
   bitops-bitwise-and                         1.8719+-0.0961     ?      1.8723+-0.0483     ?      1.9989+-0.2695            1.8975+-0.0175        ? might be 1.0137x slower
   bitops-nsieve-bits                         2.9019+-0.0425     ?      2.9190+-0.0730     ?      2.9907+-0.0538            2.9573+-0.0126        ! definitely 1.0191x slower
   controlflow-recursive                      2.1722+-0.0217     ?      2.1856+-0.0493     ?      2.2593+-0.0950            2.2550+-0.0831        ? might be 1.0381x slower
   crypto-aes                                 4.2222+-0.1356            4.1497+-0.0547     ?      4.2011+-0.0708            4.1461+-0.0305          might be 1.0184x faster
   crypto-md5                                 2.5133+-0.0402     ?      2.5187+-0.0173     !      2.5992+-0.0468            2.5776+-0.0381        ? might be 1.0256x slower
   crypto-sha1                                2.6084+-0.0417     ?      2.7385+-0.1625            2.6805+-0.0518            2.6449+-0.0745        ? might be 1.0140x slower
   date-format-tofte                          6.1847+-0.4142     ?      6.4399+-0.1236     ?      6.7136+-0.1750            6.6706+-0.4083        ? might be 1.0786x slower
   date-format-xparb                          4.6070+-0.2506            4.4371+-0.1492            4.4120+-0.0738     ?      4.4294+-0.1453          might be 1.0401x faster
   math-cordic                                2.5641+-0.0689     ?      2.5730+-0.0916     ?      2.6283+-0.0221     ?      2.6530+-0.0511        ? might be 1.0347x slower
   math-partial-sums                          3.7917+-0.1702     ?      3.8841+-0.2335            3.8498+-0.0766     ?      4.1337+-0.6499        ? might be 1.0902x slower
   math-spectral-norm                         1.8965+-0.0226     ?      1.9354+-0.0990     ?      2.0190+-0.0574            1.9655+-0.0694        ? might be 1.0364x slower
   regexp-dna                                 6.0745+-0.1356            6.0070+-0.1102     ?      6.0284+-0.1866     ?      6.2696+-0.1622        ? might be 1.0321x slower
   string-base64                              4.4771+-0.5307            4.2825+-0.0575     ?      4.5188+-0.2182            4.3438+-0.1063          might be 1.0307x faster
   string-fasta                               5.1517+-0.1502     ?      5.2061+-0.0697     ?      5.3914+-0.1214            5.2718+-0.0423        ? might be 1.0233x slower
   string-tagcloud                            7.8049+-0.0987     ?      7.9655+-0.1094     ?      8.3491+-0.4816            7.9033+-0.1583        ? might be 1.0126x slower
   string-unpack-code                        17.8951+-1.3847           17.4709+-0.7121     ?     18.0605+-0.4680           17.9611+-0.7172        ?
   string-validate-input                      4.1502+-0.1498     ?      4.1524+-0.0445     ?      4.2147+-0.1484            4.0361+-0.0911          might be 1.0283x faster

   <arithmetic>                               4.2576+-0.0366     ?      4.2687+-0.0278     !      4.3593+-0.0369            4.3294+-0.0566        ? might be 1.0169x slower

                                                TipOfTree                    Old                     BumpNPop                 BumpNPop2             BumpNPop2 v. TipOfTree  
Octane:
   encrypt                                   0.14476+-0.00328    ?     0.14661+-0.00274    ?     0.14866+-0.00384    ?     0.14970+-0.00429       ? might be 1.0341x slower
   decrypt                                   2.57430+-0.03647    ?     2.61699+-0.01619          2.60539+-0.02770    ?     2.60710+-0.01603       ? might be 1.0127x slower
   deltablue                        x2       0.12266+-0.00192    ?     0.12526+-0.00207    ^     0.11981+-0.00228          0.11826+-0.00222       ^ definitely 1.0372x faster
   earley                                    0.26796+-0.00184    ?     0.27096+-0.00144    ^     0.24341+-0.00150    ?     0.24515+-0.00246       ^ definitely 1.0930x faster
   boyer                                     4.60767+-0.13332    ?     4.62969+-0.17402    ^     4.24718+-0.03132    ?     4.29252+-0.04687       ^ definitely 1.0734x faster
   navier-stokes                    x2       4.63936+-0.04316          4.60898+-0.02129          4.59540+-0.01736          4.59052+-0.01767         might be 1.0106x faster
   raytrace                         x2       0.75328+-0.00945          0.74596+-0.00391    ^     0.68460+-0.00952          0.68253+-0.00399       ^ definitely 1.1037x faster
   richards                         x2       0.07667+-0.00097    ?     0.07772+-0.00111    ?     0.07792+-0.00181          0.07734+-0.00169       ?
   splay                            x2       0.32063+-0.00271    !     0.32675+-0.00236    ?     0.32861+-0.00350          0.32777+-0.00377       ! definitely 1.0223x slower
   regexp                           x2      15.07482+-0.34836    ?    15.73560+-0.46811    ?    16.56263+-0.38962         15.64944+-0.82349       ? might be 1.0381x slower
   pdfjs                            x2      38.43163+-0.27050    !    39.27510+-0.34859    ?    39.41035+-0.17664         39.29058+-0.44678       ! definitely 1.0223x slower
   mandreel                         x2      39.58686+-0.34236         39.57227+-0.37747    ?    39.63965+-0.52755    ?    39.80746+-0.36685       ?
   gbemu                            x2      27.45948+-0.12615    !    28.79096+-0.08305         28.46024+-0.58094         27.92600+-0.20944       ! definitely 1.0170x slower
   closure                                   0.45384+-0.00254    ?     0.45704+-0.00190    !     0.47016+-0.00170    ^     0.45942+-0.00303       ! definitely 1.0123x slower
   jquery                                    6.13444+-0.04507    !     6.24461+-0.04501    !     6.40197+-0.03764    ^     6.28301+-0.03553       ! definitely 1.0242x slower
   box2d                            x2       8.62802+-0.10037    ?     8.68864+-0.04338          8.68134+-0.04807    ^     8.56835+-0.05126       
   zlib                             x2     345.31786+-10.89157   ?   346.37151+-4.46046    ?   353.48161+-4.17705        344.34608+-12.25836      
   typescript                       x2     574.15755+-8.85817    !   595.70988+-8.14278    ?   609.29163+-6.17972        602.61056+-9.12053       ! definitely 1.0496x slower

   <geometric>                               4.71940+-0.02306    !     4.79255+-0.01553    ^     4.75954+-0.01145    ^     4.70871+-0.03242         might be 1.0023x faster

                                                TipOfTree                    Old                     BumpNPop                 BumpNPop2             BumpNPop2 v. TipOfTree  
Kraken:
   ai-astar                                   82.688+-2.239             81.205+-1.463      !      91.049+-3.348      ?      92.126+-2.656         ! definitely 1.1141x slower
   audio-beat-detection                       35.630+-0.101      !      36.232+-0.257      ?      36.642+-1.233             36.340+-0.277         ! definitely 1.0199x slower
   audio-dft                                  96.561+-3.455             93.347+-2.870      ?      94.519+-4.170             92.440+-0.359         ^ definitely 1.0446x faster
   audio-fft                                  27.801+-0.252      ?      28.344+-0.666             28.194+-0.192      ?      28.910+-1.506         ? might be 1.0399x slower
   audio-oscillator                           44.757+-0.505      ?      45.813+-2.004             45.081+-0.432      ?      45.304+-0.492         ? might be 1.0122x slower
   imaging-darkroom                           56.623+-0.146             56.565+-0.190             56.531+-0.152      ?      57.403+-1.987         ? might be 1.0138x slower
   imaging-desaturate                         40.912+-0.272      ?      42.097+-2.699             40.808+-0.549             40.582+-0.223         
   imaging-gaussian-blur                      56.055+-3.222      ?      57.025+-0.132             55.727+-2.242      ?      56.284+-3.545         ?
   json-parse-financial                       31.786+-1.434             31.654+-0.261      ?      31.848+-0.728             30.983+-0.576           might be 1.0259x faster
   json-stringify-tinderbox                   20.884+-1.205      ?      22.496+-1.417             21.276+-1.426      ?      21.498+-2.061         ? might be 1.0294x slower
   stanford-crypto-aes                        34.299+-0.295      !      35.543+-0.256      ^      34.797+-0.384      ?      35.664+-1.610         ? might be 1.0398x slower
   stanford-crypto-ccm                        32.432+-0.341      ?      33.271+-1.802             33.055+-0.724             31.355+-2.422           might be 1.0343x faster
   stanford-crypto-pbkdf2                     87.356+-0.796      !      92.518+-2.405      ^      89.131+-0.219      ?      89.162+-0.797         ! definitely 1.0207x slower
   stanford-crypto-sha256-iterative           28.321+-0.205      !      29.007+-0.249             28.808+-0.142      ?      29.689+-1.990         ? might be 1.0483x slower

   <arithmetic>                               48.293+-0.481      ?      48.937+-0.323      ?      49.105+-0.507      ?      49.124+-0.678         ? might be 1.0172x slower

                                                TipOfTree                    Old                     BumpNPop                 BumpNPop2             BumpNPop2 v. TipOfTree  
Geomean of preferred means:
   <scaled-result>                            9.9002+-0.0668     ?     10.0038+-0.0400     ?     10.0622+-0.0436           10.0045+-0.0650        ? might be 1.0105x slower
Comment 78 Filip Pizlo 2016-08-10 19:25:16 PDT
Next steps:

- Figure out the 10% ai-astar slow-down.  This seems like something I could easily fix.  It seems to be specific to bump'n'pop.  It's probably FTL-related, since the slow-down goes away with FTL disabled.

- Determine WTF is happening in SunSpider, and if it even matters when we run in browser.  Probably 2d-cube regression is real but that's not enough to explain everything.

- Run more benchmarks, like PLT, Speedometer, and ES6SampleBench.

- Tighten up the FTL allocation paths.  I think that we want the FTL allocation path to be a patchpoint.

- Explore sweeping totally empty blocks eagerly, and having a fast block reuse path.

- Maybe just finish eradicating copied space in this patch, since there's a chance that when we remove copying entirely, we'll get a bigger speed-up.

- Look at larger marked blocks again.

- Measure time spent in allocation slow paths in SunSpider.  It would be great to know if the allocation time went up!  Also measure the allocation time when we don't bottom out in the GC.
Comment 79 Filip Pizlo 2016-08-11 22:01:34 PDT
Created attachment 285893 [details]
bump'n'pop neutral on Kraken
Comment 80 Filip Pizlo 2016-08-12 13:01:20 PDT
Created attachment 285935 [details]
getting all of WK to build
Comment 81 Filip Pizlo 2016-08-12 14:30:36 PDT
Created attachment 285950 [details]
da patch

I'm hoping for a perfect score on EWS.
Comment 82 WebKit Commit Bot 2016-08-12 14:33:09 PDT
This patch modifies the JS builtins code generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-builtins-generator-tests --reset-results`)
Comment 83 WebKit Commit Bot 2016-08-12 14:33:57 PDT
Attachment 285950 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8404:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8424:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:248:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:326:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2765:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2766:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:346:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:480:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:494:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 29 in 195 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 84 Filip Pizlo 2016-08-13 16:42:49 PDT
Created attachment 286010 [details]
the patch

Fix some build issues.
Comment 85 Filip Pizlo 2016-08-13 16:54:14 PDT
Created attachment 286011 [details]
the patch

More fixes.
Comment 86 Filip Pizlo 2016-08-13 18:38:17 PDT
I'm working with some rebase hell right now.  Looks like stress/rest-parameter-many-arguments is failing.
Comment 87 Filip Pizlo 2016-08-13 20:31:59 PDT
(In reply to comment #86)
> I'm working with some rebase hell right now.  Looks like
> stress/rest-parameter-many-arguments is failing.

I think I fixed it.  It was a genuine bug, not a rebase artifact.
Comment 88 Filip Pizlo 2016-08-13 20:51:54 PDT
Created attachment 286012 [details]
the patch

Rebased and fixed a problem with having a bad time that was revealed by debug testing.
Comment 89 WebKit Commit Bot 2016-08-13 20:55:41 PDT
Attachment 286012 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 196 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 90 Filip Pizlo 2016-08-13 21:15:36 PDT
Created attachment 286013 [details]
the patch

More fixes.
Comment 91 WebKit Commit Bot 2016-08-13 21:17:56 PDT
Attachment 286013 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 202 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 92 Filip Pizlo 2016-08-13 21:29:58 PDT
Created attachment 286014 [details]
the patch

More fixes.
Comment 93 WebKit Commit Bot 2016-08-13 21:34:07 PDT
Attachment 286014 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 202 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 94 Filip Pizlo 2016-08-13 21:52:31 PDT
Created attachment 286015 [details]
the patch

More fixes.
Comment 95 WebKit Commit Bot 2016-08-13 21:56:15 PDT
Attachment 286015 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 202 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 96 Filip Pizlo 2016-08-13 22:10:11 PDT
Created attachment 286016 [details]
the patch

More fixes!
Comment 97 WebKit Commit Bot 2016-08-13 22:12:19 PDT
Attachment 286016 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 202 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 98 Filip Pizlo 2016-08-13 22:36:33 PDT
Created attachment 286017 [details]
the patch

More fixes!
Comment 99 WebKit Commit Bot 2016-08-13 22:38:48 PDT
Attachment 286017 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 37 in 203 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 100 Filip Pizlo 2016-08-14 15:36:50 PDT
Created attachment 286033 [details]
the patch

More things.
Comment 101 WebKit Commit Bot 2016-08-14 15:41:09 PDT
Attachment 286033 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 41 in 231 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 102 Filip Pizlo 2016-08-14 15:47:09 PDT
Created attachment 286034 [details]
the patch
Comment 103 WebKit Commit Bot 2016-08-14 15:51:28 PDT
Attachment 286034 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 41 in 233 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 104 Filip Pizlo 2016-08-14 16:04:24 PDT
Created attachment 286036 [details]
the patch

More fixes!
Comment 105 WebKit Commit Bot 2016-08-14 16:08:20 PDT
Attachment 286036 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 41 in 234 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 106 Filip Pizlo 2016-08-14 19:17:52 PDT
Created attachment 286048 [details]
the patch

More fixes!
Comment 107 WebKit Commit Bot 2016-08-14 19:21:12 PDT
Attachment 286048 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 41 in 239 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 108 Filip Pizlo 2016-08-14 22:01:25 PDT
Man, it sure looks like Windows is still seeing Opcode.h from weird places.

I'm taking more measures to make sure this won't happen.  It's *really weird* when Opcode.h gets included all over the place because it means that its generated artifacts also have to be available to include.
Comment 109 Filip Pizlo 2016-08-15 00:00:53 PDT
Created attachment 286050 [details]
the patch

Making more changes to remove accidental inclusion of so much JSC stuff from outside JSC.  I'd rather fix these issues as they arise rather than work around them.
Comment 110 WebKit Commit Bot 2016-08-15 00:04:11 PDT
Attachment 286050 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:450:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 50 in 263 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 111 Filip Pizlo 2016-08-15 10:18:47 PDT
Created attachment 286063 [details]
the patch
Comment 112 WebKit Commit Bot 2016-08-15 10:22:19 PDT
Attachment 286063 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:450:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 50 in 263 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 113 Filip Pizlo 2016-08-15 10:49:06 PDT
Created attachment 286067 [details]
the patch

Rebased again.
Comment 114 WebKit Commit Bot 2016-08-15 10:53:12 PDT
Attachment 286067 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:450:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 50 in 266 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 115 Filip Pizlo 2016-08-15 11:22:15 PDT
Created attachment 286069 [details]
the patch
Comment 116 WebKit Commit Bot 2016-08-15 11:24:54 PDT
Attachment 286069 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5411:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5426:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5429:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5480:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5495:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5500:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5512:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:450:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 50 in 266 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 117 Filip Pizlo 2016-08-15 12:03:44 PDT
Created attachment 286074 [details]
the patch

More fixes!
Comment 118 WebKit Commit Bot 2016-08-15 12:08:06 PDT
Attachment 286074 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5410:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5425:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5428:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5479:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5494:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5499:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5511:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:450:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 50 in 267 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 119 Filip Pizlo 2016-08-15 13:31:52 PDT
Created attachment 286087 [details]
the patch
Comment 120 WebKit Commit Bot 2016-08-15 13:35:09 PDT
Attachment 286087 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5410:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5425:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5428:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:247:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:325:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5479:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5494:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5499:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5511:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12910:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12925:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:450:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:349:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:483:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:497:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 50 in 275 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 121 Filip Pizlo 2016-08-15 15:41:03 PDT
Comment on attachment 286087 [details]
the patch

Oh no!  This breaks Speedometer!  I'm going to investigate this super-reproducible crash.
Comment 122 Filip Pizlo 2016-08-15 15:52:06 PDT
I've got a no-JIT crash in the EmberJS-TodoMVC test in Speedometer.  Should be fun...
Comment 123 Filip Pizlo 2016-08-15 15:56:43 PDT
It happens even with bump disabled.
Comment 124 Geoffrey Garen 2016-08-15 16:14:24 PDT
Comment on attachment 286087 [details]
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=286087&action=review

I think it should be a priority to remove CopiedSpace soon -- both for the potential speedup you mention and to fight entropy and reduce technical debt.

> Source/JavaScriptCore/ChangeLog:38
> +          requested length can't just be fulfilled with the current allocation size. This safegoard

safeguard

> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8494
> +        DFG_ASSERT(m_graph, m_node, allocator); // It would be CRAZY if the class was too large!

Since this is a function template, can we also static_assert that our size is smaller than the largest GC size?

Might also be nice for allocateCell<T> to do the same, to validate our believe that no callee is a large object.

> Source/JavaScriptCore/heap/MarkedSpace.cpp:247
> +void MarkedSpace::sweepABit()
> +{
> +    sweepLargeAllocations();
> +}

I think it would be clearer to remove this function and call sweepLargeAllocations() directly.

The point here is that large allocations are not recycled, so you have to sweep them manually.

> Source/JavaScriptCore/runtime/AuxiliaryBarrier.h:34
> +// it, other than interpreting a falsish value as not need a barrier. It's OK to use this for either

falsy

not needing

> Source/JavaScriptCore/runtime/AuxiliaryBarrierInlines.h:48
> +template<typename T>
> +template<typename U>
> +AuxiliaryBarrier<T>::AuxiliaryBarrier(VM& vm, JSCell* owner, U&& value)
> +{
> +    m_value = std::forward<U>(value);
> +    vm.heap.writeBarrier(owner);
> +}
> +
> +template<typename T>
> +template<typename U>
> +void AuxiliaryBarrier<T>::set(VM& vm, JSCell* owner, U&& value)
> +{
> +    m_value = std::forward<U>(value);
> +    vm.heap.writeBarrier(owner);
> +}

I think you forgot the check for "falsy value not needing a barrier", no?

> Source/JavaScriptCore/runtime/JSArray.cpp:48
> +#if 0
> +#define LOGIT() dataLog(RawPointer(this), ": ", WTF_PRETTY_FUNCTION, "\n");
> +#else
> +#define LOGIT() do { } while(false)
> +#endif

This macro and its callers seem just below the threshold of something that should land.

> Source/JavaScriptCore/runtime/Operations.h:209
>  
> +inline bool resetFreeCellsBadly()
> +{
> +    return !ASSERT_DISABLED || Options::resetFreeCellsBadly();
> +}
> +
> +inline void resetBadly(void* base, size_t size)
> +{
> +    for (size_t i = size / sizeof(EncodedJSValue); i--;) {
> +        static_cast<EncodedJSValue*>(base)[i] = JSValue::encode(
> +            bitwise_cast<JSCell*>(static_cast<intptr_t>(666 * 8)));
> +    }
> +}

Let's call this "scribbleFreeCells" because "badly" is vague and MallocScribble is a thing on Darwin.

Can we use 0xbbadbeef since that's our ASSERT marker in other places?
Comment 125 Geoffrey Garen 2016-08-15 16:15:31 PDT
Comment on attachment 286087 [details]
the patch

r- because of the crash, but I'm happy with this patch once the crash and comments are addressed.
Comment 126 Filip Pizlo 2016-08-15 18:51:48 PDT
(In reply to comment #124)
> Comment on attachment 286087 [details]
> the patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=286087&action=review
> 
> I think it should be a priority to remove CopiedSpace soon -- both for the
> potential speedup you mention and to fight entropy and reduce technical debt.
> 
> > Source/JavaScriptCore/ChangeLog:38
> > +          requested length can't just be fulfilled with the current allocation size. This safegoard
> 
> safeguard
> 
> > Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8494
> > +        DFG_ASSERT(m_graph, m_node, allocator); // It would be CRAZY if the class was too large!
> 
> Since this is a function template, can we also static_assert that our size
> is smaller than the largest GC size?
> 
> Might also be nice for allocateCell<T> to do the same, to validate our
> believe that no callee is a large object.
> 
> > Source/JavaScriptCore/heap/MarkedSpace.cpp:247
> > +void MarkedSpace::sweepABit()
> > +{
> > +    sweepLargeAllocations();
> > +}
> 
> I think it would be clearer to remove this function and call
> sweepLargeAllocations() directly.
> 
> The point here is that large allocations are not recycled, so you have to
> sweep them manually.
> 
> > Source/JavaScriptCore/runtime/AuxiliaryBarrier.h:34
> > +// it, other than interpreting a falsish value as not need a barrier. It's OK to use this for either
> 
> falsy
> 
> not needing
> 
> > Source/JavaScriptCore/runtime/AuxiliaryBarrierInlines.h:48
> > +template<typename T>
> > +template<typename U>
> > +AuxiliaryBarrier<T>::AuxiliaryBarrier(VM& vm, JSCell* owner, U&& value)
> > +{
> > +    m_value = std::forward<U>(value);
> > +    vm.heap.writeBarrier(owner);
> > +}
> > +
> > +template<typename T>
> > +template<typename U>
> > +void AuxiliaryBarrier<T>::set(VM& vm, JSCell* owner, U&& value)
> > +{
> > +    m_value = std::forward<U>(value);
> > +    vm.heap.writeBarrier(owner);
> > +}
> 
> I think you forgot the check for "falsy value not needing a barrier", no?
> 
> > Source/JavaScriptCore/runtime/JSArray.cpp:48
> > +#if 0
> > +#define LOGIT() dataLog(RawPointer(this), ": ", WTF_PRETTY_FUNCTION, "\n");
> > +#else
> > +#define LOGIT() do { } while(false)
> > +#endif
> 
> This macro and its callers seem just below the threshold of something that
> should land.
> 
> > Source/JavaScriptCore/runtime/Operations.h:209
> >  
> > +inline bool resetFreeCellsBadly()
> > +{
> > +    return !ASSERT_DISABLED || Options::resetFreeCellsBadly();
> > +}
> > +
> > +inline void resetBadly(void* base, size_t size)
> > +{
> > +    for (size_t i = size / sizeof(EncodedJSValue); i--;) {
> > +        static_cast<EncodedJSValue*>(base)[i] = JSValue::encode(
> > +            bitwise_cast<JSCell*>(static_cast<intptr_t>(666 * 8)));
> > +    }
> > +}
> 
> Let's call this "scribbleFreeCells" because "badly" is vague and
> MallocScribble is a thing on Darwin.
> 
> Can we use 0xbbadbeef since that's our ASSERT marker in other places?

Thanks for the feedback!  All sounds sensible.  I'll address it once I figure out the crash.
Comment 127 Filip Pizlo 2016-08-15 18:52:06 PDT
Still crashes with gengc disabled.
Comment 128 Filip Pizlo 2016-08-15 19:03:31 PDT
(In reply to comment #124)
> > Source/JavaScriptCore/runtime/Operations.h:209
> >  
> > +inline bool resetFreeCellsBadly()
> > +{
> > +    return !ASSERT_DISABLED || Options::resetFreeCellsBadly();
> > +}
> > +
> > +inline void resetBadly(void* base, size_t size)
> > +{
> > +    for (size_t i = size / sizeof(EncodedJSValue); i--;) {
> > +        static_cast<EncodedJSValue*>(base)[i] = JSValue::encode(
> > +            bitwise_cast<JSCell*>(static_cast<intptr_t>(666 * 8)));
> > +    }
> > +}
> 
> Let's call this "scribbleFreeCells" because "badly" is vague and
> MallocScribble is a thing on Darwin.
> 
> Can we use 0xbbadbeef since that's our ASSERT marker in other places?

Actually, I don't think we want to!  0xbbadbeef, and anything that ends in beef, will not pass the JSC cell check, since if the second-lowest bit (0x2) is set, then we assume that it might be a false-true-undefined-null value.

We could do 0xbbadbeef * 16, aka 0xbbadbeef0, or even 0xbadbeef0.  But on 32-bit, that could be an actual pointer value.  That's sort of why I picked 666 * 8.
Comment 129 Filip Pizlo 2016-08-15 21:29:06 PDT
I found the bug.  It's not a big deal: concatMemcpy was assuming it could memcpy from a Undecided array to a non-Undecided array, which doesn't actually work, since the Undecided array has garbage in it.  This code just needed an extra check.
Comment 130 Geoffrey Garen 2016-08-16 10:46:14 PDT
> > Can we use 0xbbadbeef since that's our ASSERT marker in other places?
> 
> Actually, I don't think we want to!  0xbbadbeef, and anything that ends in
> beef, will not pass the JSC cell check, since if the second-lowest bit (0x2)
> is set, then we assume that it might be a false-true-undefined-null value.
> 
> We could do 0xbbadbeef * 16, aka 0xbbadbeef0, or even 0xbadbeef0.  But on
> 32-bit, that could be an actual pointer value.  That's sort of why I picked
> 666 * 8.

0xbbadbeef0 and 0xbadbeef0 would be close enough to call out being ASSERT markers.

666 * 8 actually can be a pointer on Darwin since it's beyond the 4kB NULL page -- though both 666 * 8 and 0xbad????? are not pointers in practice on Darwin.

I think the only guaranteed non-pointer on Darwin 32-bit is something like 0x00000bad, since that's in the unmapped NULL page.

I suppose all our 0xbadbeef ASSERT markers have the potential to point to mapped memory and therefore not crash 100% -- but I think the value of consistency probably outweighs that small risk.
Comment 131 Oliver Hunt 2016-08-16 10:52:40 PDT
> I suppose all our 0xbadbeef ASSERT markers have the potential to point to
> mapped memory and therefore not crash 100% -- but I think the value of
> consistency probably outweighs that small risk.

They follow on the assignment with a __builtin_trap() to be safe
Comment 132 Filip Pizlo 2016-08-16 12:40:13 PDT
(In reply to comment #130)
> > > Can we use 0xbbadbeef since that's our ASSERT marker in other places?
> > 
> > Actually, I don't think we want to!  0xbbadbeef, and anything that ends in
> > beef, will not pass the JSC cell check, since if the second-lowest bit (0x2)
> > is set, then we assume that it might be a false-true-undefined-null value.
> > 
> > We could do 0xbbadbeef * 16, aka 0xbbadbeef0, or even 0xbadbeef0.  But on
> > 32-bit, that could be an actual pointer value.  That's sort of why I picked
> > 666 * 8.
> 
> 0xbbadbeef0 and 0xbadbeef0 would be close enough to call out being ASSERT
> markers.
> 
> 666 * 8 actually can be a pointer on Darwin since it's beyond the 4kB NULL
> page -- though both 666 * 8 and 0xbad????? are not pointers in practice on
> Darwin.
> 
> I think the only guaranteed non-pointer on Darwin 32-bit is something like
> 0x00000bad, since that's in the unmapped NULL page.
> 
> I suppose all our 0xbadbeef ASSERT markers have the potential to point to
> mapped memory and therefore not crash 100% -- but I think the value of
> consistency probably outweighs that small risk.

I'll use 0xbadbeef0.
Comment 133 Filip Pizlo 2016-08-16 12:46:38 PDT
(In reply to comment #124)
> Comment on attachment 286087 [details]
> the patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=286087&action=review
> 
> I think it should be a priority to remove CopiedSpace soon -- both for the
> potential speedup you mention and to fight entropy and reduce technical debt.
> 
> > Source/JavaScriptCore/ChangeLog:38
> > +          requested length can't just be fulfilled with the current allocation size. This safegoard
> 
> safeguard

Fixed.

> 
> > Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8494
> > +        DFG_ASSERT(m_graph, m_node, allocator); // It would be CRAZY if the class was too large!
> 
> Since this is a function template, can we also static_assert that our size
> is smaller than the largest GC size?

Can't do it.  Notice that this function takes a dynamic size argument.

> 
> Might also be nice for allocateCell<T> to do the same, to validate our
> believe that no callee is a large object.
> 
> > Source/JavaScriptCore/heap/MarkedSpace.cpp:247
> > +void MarkedSpace::sweepABit()
> > +{
> > +    sweepLargeAllocations();
> > +}
> 
> I think it would be clearer to remove this function and call
> sweepLargeAllocations() directly.
> 
> The point here is that large allocations are not recycled, so you have to
> sweep them manually.

Fixed.

> 
> > Source/JavaScriptCore/runtime/AuxiliaryBarrier.h:34
> > +// it, other than interpreting a falsish value as not need a barrier. It's OK to use this for either
> 
> falsy
> 
> not needing

Fixed.

> 
> > Source/JavaScriptCore/runtime/AuxiliaryBarrierInlines.h:48
> > +template<typename T>
> > +template<typename U>
> > +AuxiliaryBarrier<T>::AuxiliaryBarrier(VM& vm, JSCell* owner, U&& value)
> > +{
> > +    m_value = std::forward<U>(value);
> > +    vm.heap.writeBarrier(owner);
> > +}
> > +
> > +template<typename T>
> > +template<typename U>
> > +void AuxiliaryBarrier<T>::set(VM& vm, JSCell* owner, U&& value)
> > +{
> > +    m_value = std::forward<U>(value);
> > +    vm.heap.writeBarrier(owner);
> > +}
> 
> I think you forgot the check for "falsy value not needing a barrier", no?

Extra branch on the value versus extra branch on the owner.

The comment about falsy values is in regards to the clear() method, which has no barrier.

> 
> > Source/JavaScriptCore/runtime/JSArray.cpp:48
> > +#if 0
> > +#define LOGIT() dataLog(RawPointer(this), ": ", WTF_PRETTY_FUNCTION, "\n");
> > +#else
> > +#define LOGIT() do { } while(false)
> > +#endif
> 
> This macro and its callers seem just below the threshold of something that
> should land.

I'll remove them.

> 
> > Source/JavaScriptCore/runtime/Operations.h:209
> >  
> > +inline bool resetFreeCellsBadly()
> > +{
> > +    return !ASSERT_DISABLED || Options::resetFreeCellsBadly();
> > +}
> > +
> > +inline void resetBadly(void* base, size_t size)
> > +{
> > +    for (size_t i = size / sizeof(EncodedJSValue); i--;) {
> > +        static_cast<EncodedJSValue*>(base)[i] = JSValue::encode(
> > +            bitwise_cast<JSCell*>(static_cast<intptr_t>(666 * 8)));
> > +    }
> > +}
> 
> Let's call this "scribbleFreeCells" because "badly" is vague and
> MallocScribble is a thing on Darwin.

I called it scribble.

> 
> Can we use 0xbbadbeef since that's our ASSERT marker in other places?

I used 0xbadbeef0.
Comment 134 Filip Pizlo 2016-08-16 12:59:15 PDT
Created attachment 286195 [details]
the patch

Addresses review feedback, fixed the goofy Speedometer crash.
Comment 135 Filip Pizlo 2016-08-16 13:01:13 PDT
Comment on attachment 286195 [details]
the patch

No need for another review.
Comment 136 Filip Pizlo 2016-08-16 13:09:35 PDT
Created attachment 286196 [details]
the patch

Rebased.
Comment 137 WebKit Commit Bot 2016-08-16 13:12:55 PDT
Attachment 286196 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8435:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8455:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5418:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5433:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5436:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:248:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:326:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5479:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5494:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5499:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5511:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12952:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12967:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:450:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:344:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:478:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:492:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 50 in 276 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 138 Filip Pizlo 2016-08-16 13:26:14 PDT
(In reply to comment #124)
> Comment on attachment 286087 [details]
> the patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=286087&action=review
> 
> I think it should be a priority to remove CopiedSpace soon -- both for the
> potential speedup you mention and to fight entropy and reduce technical debt.

I forgot to reply to this earlier.  My plan is to do one patch per client of CopiedSpace.  Next up are typed arrays.

I started with butterflies because I knew they would be hardest, but it's still possible that the typed array patch will turn into another ordeal! ;-)

The current list of clients is:

enum CopyToken {
    TypedArrayVectorCopyToken,
    MapBackingStoreCopyToken,
    DirectArgumentsOverridesCopyToken
};
Comment 139 Filip Pizlo 2016-08-16 19:18:39 PDT
Well it looks like I'm going to have more pain to deal with.  The patch is a ~2% Speedometer regression. :-(

It looks like I can get rid of some of that regression by enabling LargeAllocation for smaller sizes.  I'm playing with that right now.
Comment 140 Filip Pizlo 2016-08-17 17:46:18 PDT
Created attachment 286351 [details]
the patch

Neutral JetStream, neutral Speedometer, progression on Octane, tiny regression on Kraken, big regression on SunSpider (5%).
Comment 141 WebKit Commit Bot 2016-08-17 17:50:09 PDT
Attachment 286351 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:101:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8438:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8458:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5416:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5431:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5434:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:248:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.cpp:326:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5477:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5492:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5497:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5509:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/RegExpMatchesArray.h:73:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12952:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12967:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:450:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:45:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:365:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:499:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/heap/MarkedSpace.cpp:513:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/ConservativeRoots.cpp:78:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 50 in 276 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 142 Filip Pizlo 2016-08-17 18:00:26 PDT
Comment on attachment 286351 [details]
the patch

This doesn't need another review.
Comment 143 Build Bot 2016-08-17 19:00:03 PDT
Comment on attachment 286351 [details]
the patch

Attachment 286351 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/1890042

New failing tests:
webgl/1.0.2/conformance/context/constants.html
js/regress/lots-of-fields.html
fast/workers/worker-terminate-forever.html
fast/workers/worker-document-leak.html
fast/canvas/webgl/constants.html
fast/workers/dedicated-worker-lifecycle.html
fast/workers/worker-lifecycle.html
fast/workers/worker-close-more.html
Comment 144 Build Bot 2016-08-17 19:00:15 PDT
Created attachment 286354 [details]
Archive of layout-test-results from ews101 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews101  Port: mac-yosemite  Platform: Mac OS X 10.10.5
Comment 145 Build Bot 2016-08-17 19:03:57 PDT
Comment on attachment 286351 [details]
the patch

Attachment 286351 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/1890046

New failing tests:
webgl/1.0.2/conformance/context/constants.html
js/regress/lots-of-fields.html
fast/workers/worker-terminate-forever.html
fast/workers/worker-document-leak.html
fast/canvas/webgl/constants.html
fast/workers/dedicated-worker-lifecycle.html
fast/workers/worker-lifecycle.html
fast/workers/worker-close-more.html
Comment 146 Build Bot 2016-08-17 19:04:08 PDT
Created attachment 286356 [details]
Archive of layout-test-results from ews105 for mac-yosemite-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews105  Port: mac-yosemite-wk2  Platform: Mac OS X 10.10.5
Comment 147 Build Bot 2016-08-17 19:51:50 PDT
Comment on attachment 286351 [details]
the patch

Attachment 286351 [details] did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/1890113

New failing tests:
js/regress/lots-of-fields.html
fast/workers/dedicated-worker-lifecycle.html
Comment 148 Build Bot 2016-08-17 19:52:01 PDT
Created attachment 286359 [details]
Archive of layout-test-results from ews123 for ios-simulator-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews123  Port: ios-simulator-elcapitan-wk2  Platform: Mac OS X 10.11.5
Comment 149 Build Bot 2016-08-17 21:53:11 PDT
Comment on attachment 286351 [details]
the patch

Attachment 286351 [details] did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/1890582

New failing tests:
js/regress/lots-of-fields.html
fast/workers/dedicated-worker-lifecycle.html
Comment 150 Build Bot 2016-08-17 21:53:20 PDT
Created attachment 286362 [details]
Archive of layout-test-results from ews124 for ios-simulator-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews124  Port: ios-simulator-elcapitan-wk2  Platform: Mac OS X 10.11.5
Comment 151 Filip Pizlo 2016-08-22 13:53:11 PDT
Created attachment 286617 [details]
the patch

Rebased again.  I'm getting close to being able to land this.  I still have to run PLT and membuster.
Comment 152 WebKit Commit Bot 2016-08-22 14:00:09 PDT
Attachment 286617 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5415:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5430:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5433:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5476:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5491:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5496:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5508:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 37 in 275 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 153 Build Bot 2016-08-22 15:07:41 PDT
Comment on attachment 286617 [details]
the patch

Attachment 286617 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/1922936

New failing tests:
fast/workers/worker-close-more.html
fast/workers/worker-terminate-forever.html
fast/workers/worker-document-leak.html
fast/workers/dedicated-worker-lifecycle.html
fast/workers/worker-lifecycle.html
Comment 154 Build Bot 2016-08-22 15:07:54 PDT
Created attachment 286626 [details]
Archive of layout-test-results from ews102 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews102  Port: mac-yosemite  Platform: Mac OS X 10.10.5
Comment 155 Build Bot 2016-08-22 15:09:09 PDT
Comment on attachment 286617 [details]
the patch

Attachment 286617 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/1922944

New failing tests:
fast/workers/worker-close-more.html
fast/workers/worker-terminate-forever.html
fast/workers/worker-document-leak.html
fast/workers/dedicated-worker-lifecycle.html
fast/workers/worker-lifecycle.html
Comment 156 Build Bot 2016-08-22 15:09:18 PDT
Created attachment 286627 [details]
Archive of layout-test-results from ews104 for mac-yosemite-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews104  Port: mac-yosemite-wk2  Platform: Mac OS X 10.10.5
Comment 157 Filip Pizlo 2016-08-22 15:29:25 PDT
Created attachment 286631 [details]
the patch

Added some fixes for finalizing large allocations.  The last-minute change to reduce the large allocation threshold is still causing some fallout.
Comment 158 WebKit Commit Bot 2016-08-22 15:32:48 PDT
Attachment 286631 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5415:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5430:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5433:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5488:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5493:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5505:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 36 in 275 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 159 Filip Pizlo 2016-08-22 15:59:58 PDT
Created attachment 286633 [details]
the patch

More fixes for large allocations.
Comment 160 WebKit Commit Bot 2016-08-22 16:03:33 PDT
Attachment 286633 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5415:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5430:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5433:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5488:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5493:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5505:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 36 in 275 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 161 Build Bot 2016-08-22 17:05:30 PDT
Comment on attachment 286633 [details]
the patch

Attachment 286633 [details] did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/1923524

Number of test failures exceeded the failure limit.
Comment 162 Build Bot 2016-08-22 17:05:40 PDT
Created attachment 286640 [details]
Archive of layout-test-results from ews112 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews112  Port: mac-yosemite  Platform: Mac OS X 10.10.5
Comment 163 Filip Pizlo 2016-08-23 11:57:58 PDT
(In reply to comment #162)
> Created attachment 286640 [details]
> Archive of layout-test-results from ews112 for mac-yosemite
> 
> The attached test failures were seen while running run-webkit-tests on the
> mac-debug-ews.
> Bot: ews112  Port: mac-yosemite  Platform: Mac OS X 10.10.5

Fixed.  UnlinkedCodeBlock was using MarkedBlock::blockFor().
Comment 164 Filip Pizlo 2016-08-23 12:20:01 PDT
Created attachment 286754 [details]
patch for landing

OMG everything looks so ready.
Comment 165 WebKit Commit Bot 2016-08-23 12:25:13 PDT
Attachment 286754 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5399:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5414:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5417:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5472:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5477:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5489:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:637:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2761:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2762:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:449:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 36 in 275 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 166 Filip Pizlo 2016-08-23 12:54:33 PDT
Landed in http://trac.webkit.org/changeset/204854
Comment 167 Filip Pizlo 2016-08-23 13:44:25 PDT
CLoop fix in http://trac.webkit.org/changeset/204856
Comment 168 Filip Pizlo 2016-08-24 12:03:05 PDT
Rolled out in https://trac.webkit.org/changeset/204912
Comment 169 Filip Pizlo 2016-08-24 21:46:15 PDT
It looks like the membuster regression was due to changing the blockSize to 16KB.

I'm going to examine in greater detail what the performance is across a bunch of benchmarks with smaller block sizes.  I'm going to try 16KB and 4KB.

I also want to know:

- What's the peak memory usage in Speedometer and JetStream with tip of tree and the various versions of this patch?
- How much of the perf loss for smaller blockSize settings is because we no longer have the MarkedBlock cache?  Maybe the differences in perf arise from bmalloc quirks that could be sidestepped if we allocated directly from the OS.
Comment 170 Geoffrey Garen 2016-08-25 10:08:02 PDT
> - How much of the perf loss for smaller blockSize settings is because we no
> longer have the MarkedBlock cache?  Maybe the differences in perf arise from
> bmalloc quirks that could be sidestepped if we allocated directly from the
> OS.

FWIW, at the time I removed the MarkedBlock cache, the result was perf-neutral. In bmalloc, all allocations <= 32kB allocate from a reasonably fast path.

Perhaps smaller block sizes punish large-ish objects, since so few objects fit per block? If so, maybe we can get a speedup from variable block sizes.

Or maybe smaller block sizes waste more space in the metadata region?
Comment 171 Geoffrey Garen 2016-08-25 10:18:18 PDT
If the configuration that runs slower is the configuration that returns more memory to the OS, maybe it's the memory returning that causes the slowdown.

You can test this theory by comparing (small blocks) vs (small blocks with bmalloc::Heap::scavenge() changed to do nothing).

For example, if the concurrent scavenger runs too soon, even while the benchmark is still touching pages, maybe that's a slowdown, and 64kB blocks avoids the slowdown by making all the blocks unreclaimable.
Comment 172 Filip Pizlo 2016-08-25 10:47:04 PDT
(In reply to comment #170)
> > - How much of the perf loss for smaller blockSize settings is because we no
> > longer have the MarkedBlock cache?  Maybe the differences in perf arise from
> > bmalloc quirks that could be sidestepped if we allocated directly from the
> > OS.
> 
> FWIW, at the time I removed the MarkedBlock cache, the result was
> perf-neutral. In bmalloc, all allocations <= 32kB allocate from a reasonably
> fast path.

Buy that's with CopiedSpace butterflies and CopiedSpace uses larger blocks. Also, I wonder what MarkedBlock::blockSize was back then. 

> 
> Perhaps smaller block sizes punish large-ish objects, since so few objects
> fit per block? If so, maybe we can get a speedup from variable block sizes.

All tested configurations have a large allocation cutoff at 400 bytes. 

> 
> Or maybe smaller block sizes waste more space in the metadata region?

I did the math at some point at this seemed negligible. Also, smaller block sizes consistently yield lower memory usage. I'm seeing significant membusyer progressions from 4KB block sizes.
Comment 173 Filip Pizlo 2016-08-25 10:49:02 PDT
(In reply to comment #171)
> If the configuration that runs slower is the configuration that returns more
> memory to the OS, maybe it's the memory returning that causes the slowdown.
> 
> You can test this theory by comparing (small blocks) vs (small blocks with
> bmalloc::Heap::scavenge() changed to do nothing).
> 
> For example, if the concurrent scavenger runs too soon, even while the
> benchmark is still touching pages, maybe that's a slowdown, and 64kB blocks
> avoids the slowdown by making all the blocks unreclaimable.

I'm really sympathetic to using malloc under the collector. But if I start messing with the lifecycle of MarkedBlocks, I think we will want to go back to using PageAllocation or similar.
Comment 174 Filip Pizlo 2016-08-25 14:10:06 PDT
It looks like the problem is that clearing mark bits takes a *lot longer* when the blockSize is 4KB.

Theories:
- Clang appears to emit an actual call to memset (or a specialized friend, not sure yet) when 64KB, but emits an inline sled of stores when 4KB.  Maybe the memset is doing non-temporal stores or some other optimization to amortize the cost?
- Could be as simple as the bits being further apart. We could put the bits in a table on the side if we knew for sure that this was the problem.

I think that other things may also be taking longer, but I haven't fully investigated those yet.
Comment 175 Geoffrey Garen 2016-08-25 14:36:24 PDT
> I'm really sympathetic to using malloc under the collector. But if I start
> messing with the lifecycle of MarkedBlocks, I think we will want to go back
> to using PageAllocation or similar.

Sure -- but even then, you'll want to know if returning memory to the OS is an important bottleneck, since you'll have to reproduce that behavior.
Comment 176 Geoffrey Garen 2016-08-25 14:37:44 PDT
64bytes * 8bitsperbyte * 16bytesperatom = 8kB.

So, any block size less than 8kB wastes part of the mark bit cache line.
Comment 177 Filip Pizlo 2016-08-25 15:12:23 PDT
Here's a basic stat that demonstrates the problem with small blockSizes:

Time to full GC in Octane/splay with 64KB blocks: about 11ms.
Time to walk all blocks to read their hasAnyMarked bit with 4KB blocks: about 4ms.

This is why 4KB is slower.  Basically any scan of the marked blocks takes a super long time.

On the other hand, the "convergence" part of GC - where we do the bulk of our marking - still takes almost exactly the same amount of time as before.
Comment 178 Filip Pizlo 2016-08-25 15:13:55 PDT
(In reply to comment #177)
> Here's a basic stat that demonstrates the problem with small blockSizes:
> 
> Time to full GC in Octane/splay with 64KB blocks: about 11ms.
> Time to walk all blocks to read their hasAnyMarked bit with 4KB blocks:
> about 4ms.

With 64KB blocks, this takes about 0.347162 ms.  That's about right.  4ms * 4KB / 64KB = 0.25.
Comment 179 Filip Pizlo 2016-08-25 15:22:55 PDT
All of these problems happen when we enumerate over all MarkedBlocks, not when we find a MarkedBlock by way of some owning object - that part is just as fast with 4KB as 64KB.

The solution is clear: move all, or almost all, of the MarkedBlock meta-data into a table on the side.

MarkedBlock would no longer be a doubly-linked list node.  That part probably contributes to the badness.  MarkedBlocks would instead be listed in a Vector<> or similar.

This Vector<> would not directly hold MarkedBlock*.  Instead it would hold a MetaMarkedBlock, which would contain most of what MarkedBlock currently has in its header: the mark bits, the WeakSet, etc.  MarkedBlock would have a pointer back to its MetaMarkedBlock.  In this world, MarkedBlock would also have a direct pointer to VM, so that those queries can still be fast.

This way, the random-access case of touching MarkedBlocks would be penalized by one indirection but in return it would get some locality.  I think this will make no difference in that code, since that code is bottlenecked on function calls, some random checks, and a CAS.

But the MarkedBlock scans would become a lot faster.  Everything would be in one place!
Comment 180 Filip Pizlo 2016-08-25 15:25:21 PDT
Oh, and we should have a list of active WeakSets.  Right now we pay a big price to walk all MarkedBlocks just to find the ones with WeakSets.  That's silly!  When a WeakSet becomes non-empty, it should shove itself into the global list of active WeakSets.  That list can be pruned during collection.

In splay, this would make a huge difference.  We pay a big price for walking those MarkedBlocks to find WeakSets, even though there are only about 30 active WeakSets and over 50,000 blocks.
Comment 181 Filip Pizlo 2016-08-26 09:08:08 PDT
I've implemented a m_activeWeakSets vector.  That speeds things up significantly.

However, we still have the following problems:
- Clearing mark bits takes a long time.
- Snapshotting marked space takes a long time.

I believe that snapshotting takes a long time because the way we find marked blocks is by traversing a doubly-linked list, which means that each step along the way is a TLB and cache miss, or even a page fault if we're under stress.

All of this can be wished away if we store the meta-data for a MarkedBlock separately from the bock itself.
Comment 182 Filip Pizlo 2016-08-26 09:45:29 PDT
Unfortunately, accessing the mark bits via an indirection appears to be a 5% slow-down over base 4KB.  It increases GC time significantly.  So, I'm not sure we want this.

I'm considering this approach:

- MarkedBlock is split into "MarkedBlock" and "MarkedBlock::Meta".  The block itself holds the mark bits, a version number, a pointer to the meta, a VM pointer, and the cells themselves.  The meta holds all other information.  We could put hasAnyMarked in either place, but maybe the block itself would be best.

- We reset mark bits lazily.  The first step of marking will be to compare the block's version to the current heap version.  If different, perform the clearMarks step before proceeding.

The use of data-on-the-side would speed up all block walks, which includes:
- Block snapshotting.
- Eden markbit clearing.

The use of the version number would speed up full markbit clearing.  Hopefully, by avoiding the pointer-chasing inherent in mark-bits-in-meta, this will not slow down marking as much.
Comment 183 Filip Pizlo 2016-08-26 10:05:26 PDT
Fantastic news!  Adding a version check in testAndSetMarked is perf-neutral!

I added a compare-branch in the testAndSetMarked path that does basically this:

if (markedBlock->m_version != slotVisitor->m_version)
    callSlowPath();

We execute this on all paths leading into this code.
Comment 184 Filip Pizlo 2016-08-26 13:18:53 PDT
Created attachment 287135 [details]
splitting MarkedBlock's meta-data out into a handle

Work in progress.
Comment 185 Filip Pizlo 2016-08-26 15:05:00 PDT
Created attachment 287156 [details]
I think that the versioning is done

I haven't tried compiling it yet.  It's a scary change!!
Comment 186 Filip Pizlo 2016-08-26 15:22:57 PDT
Created attachment 287159 [details]
got some things to compile
Comment 187 Filip Pizlo 2016-08-26 17:22:37 PDT
Created attachment 287178 [details]
it compiles!
Comment 188 Filip Pizlo 2016-08-26 19:00:32 PDT
Created attachment 287186 [details]
compiles and passes some tests
Comment 189 Filip Pizlo 2016-08-26 19:01:41 PDT
(In reply to comment #183)
> Fantastic news!  Adding a version check in testAndSetMarked is perf-neutral!
> 
> I added a compare-branch in the testAndSetMarked path that does basically
> this:
> 
> if (markedBlock->m_version != slotVisitor->m_version)
>     callSlowPath();
> 
> We execute this on all paths leading into this code.

The crappy thing about this is that callSlowPath() needs to do locking, and the whole thingy needs a load-load fence:

if (condition)
    slowPath()
loadLoadFence()

Otherwise, you get crazy race conditions.

Hopefully this doesn't get in the way of perf.  I'm still testing this code in Debug, so I don't have any perf data yet.
Comment 190 Filip Pizlo 2016-08-28 17:14:37 PDT
It looks like even with a log of hacks, the 4KB version of the code still underperforms the 64KB by a lot, especially on splay.

I think I found one area that could be improved a ton.  We spend a lot of time sweeping blocks that are 100% full!  Probably, sweeping those blocks is much cheaper when the work is amortized.

We can get around this by having the SlotVisitor track the number of objects marked in each block.  When the count reaches a certain threshold, it can remove the block from the list of blocks that we would sweep.
Comment 191 Filip Pizlo 2016-08-28 17:19:13 PDT
(In reply to comment #190)
> It looks like even with a log of hacks, the 4KB version of the code still
> underperforms the 64KB by a lot, especially on splay.
> 
> I think I found one area that could be improved a ton.  We spend a lot of
> time sweeping blocks that are 100% full!  Probably, sweeping those blocks is
> much cheaper when the work is amortized.
> 
> We can get around this by having the SlotVisitor track the number of objects
> marked in each block.  When the count reaches a certain threshold, it can
> remove the block from the list of blocks that we would sweep.

And the obvious problem with this is that we'd now have two atomic memory operations in MarkedBlock, rather than just one.  Ouch!

We could actually make this count racy.  This is intriguing.  It would at worst undercount the population in the block, but with some useful rules:

- If a block is empty then the count will definitely be zero.
- If a block is non-empty then the count will definitely be non-zero.
- The reported count for a non-empty block with N live objects will be between 1 and N, inclusive.

This means that we can rely on the count to do what m_hasAnyMarked does currently and we can rely on it for retirement, without using any atomic operations.  At worst, the count will be too low, causing us to not retire a block that we should have retired.  That's totally fine!
Comment 192 Filip Pizlo 2016-08-28 17:19:55 PDT
Created attachment 287244 [details]
even more things

I said I would rewrite the GC.  I didn't realize how true this statement would be.
Comment 193 Filip Pizlo 2016-08-29 16:28:44 PDT
Created attachment 287346 [details]
sooooooper fast MarkedSpace

This amends the code that previously landed with many optimizations to MarkedSpace. Basically, most of the GC is O(num MarkedBlocks). It's funny, and surprising, but true. Of course there is the actual marking phase, which is O(live objects). Usually, the marking phase is long compared to all of the O(num MarkedBlocks) phases, so you don't notice those other phases.

Those per-block phases can become expensive because they mean cache+TLB misses on each block!  In trunk, this isn't a problem, but moving butterflies into MarkedSpace increases the number of MarkedBlocks without increasing the number of objects. This led to slow-downs that I observed throughout the development of this patch, but that seemed to resolve themselves when I moved to 64KB MarkedBlocks. Of course, that all makes sense. CopiedBlocks were already 64KB. So although CopiedSpace has various algorithms that are O(num CopiedBlocks), you didn't notice it because there were 1/4 as many CopiedBlocks as MarkedBlocks per unit data. Moving that data into MarkedSpace meant quadrupling the amount of per-block overhead for that data. Obviously, benchmarks that allocated a lot of butterflies suffered as a result, but often got faster (due to other optimizations in this patch) if you switches to 64KB. Moving data from CopiedSpace into a super-optimized MarkedSpace is a speed-up when the number of blocks stays the same, but a slow-down when the number of blocks increases.

This new patch attacks the problem of per-block costs directly, to enable us to use smaller blocks in MarkedSpace without nearly the same kinds of slow-downs. The optimizations are:

- MarkedBlock meta-data is allocated on the side using fastMalloc, so that it can enjoy better cache locality with respect to other MarkedBlock meta-datas, to the extent that the malloc feels it's OK to do it. This makes looping over all MarkedBlocks about 2x faster.
- We no longer loop over MarkedBlocks to get to WeakSets. We track the set of active WeakSets: those that have at least one Weak in them. In that set, we separately track those active WeakSets that belong to a MarkedBlock that may have new objects from those that don't. This enables super fast WeakSet scans.
- We no longer do anything to clear mark bits! Holy cow! We used block the mark bits and block state behind a 64-bit version number. When the version is older than the current Heap version, we lazily clear the mark bits and set the block state to Marked. So, to clear all mark bits, we increment the version. This removes one of the block scans.
- We no longer sort all marked blocks for snapshotting. We know which blocks are in the snapshot, so eden snapshotting only has to walk the blocks with new objects.
- We no longer have to sweep retired blocks when allocating! Marking will now track the number of objects in a block on the fly, and when it saturates, it will retire the block. This was a big win because it's common to find a ton of blocks that are full or almost full. The allocator may end up spending lots of time just noting that the blocks are full. Remember, each block is a TLB miss and cache miss all the way to RAM! So, having the marker do it when it already had to touch the darn block for other reasons causes the VM to run faster.

I haven't run all benchmarks, but on benchmarks like splay, this seems to basically run as fast as 64KB blocks in the previous patch while using 16KB blocks.
Comment 194 Filip Pizlo 2016-08-30 16:45:28 PDT
Created attachment 287454 [details]
fixed a debug assert

This is take #1 at fixing a debug assert.  I got it wrong.  I'll have a new patch shortly.
Comment 195 Filip Pizlo 2016-08-30 17:09:16 PDT
Created attachment 287458 [details]
fixed the debug assert for real

This contains the correct fix. The problem is that previously, we made sweep() put the block in the Marked state if it did not yield a free-list.  I think I just did this to make it easier to retire the block. But this is wrong in case sweep() is called with non-null newlyAllocated, for example if we had done stopAllocating() to iterate the heap. In that case, if the sweep() puts the block in the Marked state then it had better preserve the newlyAllocated bits. But sweep() clears those bits. I probably could have fixed that, for example by not clearing the bits if we put the block in the Marked state, but that felt like too much crazy. Instead, I realized that MarkedAllocator should just call didConsumeFreeList() between sweep() and retire(), and if I do this, then I can make sweep() always put the block in the FreeListed state just like before. This felt like a smaller and safer change, so that's what this new version does.
Comment 196 Filip Pizlo 2016-08-31 12:36:24 PDT
Created attachment 287528 [details]
pretty good patch

It's still slower on Speedometer.

It's still slower on Kraken.

The Kraken regression is huge, so I'll investigate that first.
Comment 197 Filip Pizlo 2016-08-31 13:52:18 PDT
Created attachment 287538 [details]
fixing the forgotten butterfly bug

This is adding another change: fixing how we forget about a butterfly if it was allocated just before we took a slow path on cell allocation.

I'm not done with it yet.
Comment 198 Filip Pizlo 2016-08-31 15:38:00 PDT
Created attachment 287552 [details]
fixing the forgotten butterfly bug, passing tests
Comment 199 Filip Pizlo 2016-08-31 21:12:21 PDT
Created attachment 287595 [details]
fast MarkedSpace might be complete
Comment 200 Filip Pizlo 2016-09-01 10:32:19 PDT
Created attachment 287629 [details]
rebased with bugs

This accidentally revealed a nasty object allocation sinking bug.
Comment 201 Filip Pizlo 2016-09-01 12:55:01 PDT
Created attachment 287660 [details]
rebased patch
Comment 202 WebKit Commit Bot 2016-09-01 12:58:36 PDT
Attachment 287660 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5367:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5383:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5401:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:797:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5440:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5452:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5454:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1760:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:643:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2785:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2786:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:55:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:451:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:54:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:98:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h:89:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 42 in 299 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 203 Filip Pizlo 2016-09-01 13:17:45 PDT
Created attachment 287666 [details]
fixes
Comment 204 WebKit Commit Bot 2016-09-01 13:22:16 PDT
Attachment 287666 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5367:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5383:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5401:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:797:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5440:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5452:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5454:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1760:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:643:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2785:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2786:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:55:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:451:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:54:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:98:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:47:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h:89:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 42 in 300 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 205 Filip Pizlo 2016-09-01 20:05:26 PDT
Created attachment 287718 [details]
more
Comment 206 Filip Pizlo 2016-09-01 20:07:40 PDT
A lot of the performance pathologies that I'm still seeing seem to happen around phase-changes, where we may be switching from using one set of sizes to another. This is bad for our GC right now, since we only rebalance size classes under certain conditions.

The next thing I'll try is some way of tracking the set of empty blocks and freeing them at end of GC.  Maybe this will work well!
Comment 207 Filip Pizlo 2016-09-01 20:39:43 PDT
Created attachment 287723 [details]
rebased again
Comment 208 WebKit Commit Bot 2016-09-01 20:43:33 PDT
Attachment 287723 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5367:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5383:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5401:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:797:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5440:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5452:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5454:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1760:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:643:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:61:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2785:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2786:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:55:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:451:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:54:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:98:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSArray.cpp:48:  Missing space before ( in while(  [whitespace/parens] [5]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:40:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:55:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:56:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:56:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h:89:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 56 in 300 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 209 Keith Miller 2016-09-03 12:07:29 PDT
Comment on attachment 287723 [details]
rebased again

View in context: https://bugs.webkit.org/attachment.cgi?id=287723&action=review

Made some comments on the Changelog. I'm going to start on the code.

> Source/JavaScriptCore/ChangeLog:58
> +          turn hyperbolic for large sizes. The size class configuration happens at VM start-up, so
> +          can be controlled with runtime options. I found that a base of 1.4 works pretty well.

so can => so it can

> Source/JavaScriptCore/ChangeLog:94
> +        - Copied space uses 64KB blocks, while marked space used to use 16KB blocks. Allocating a lot
> +          of stuff in 16KB blocks was slower than allocating it in 64KB blocks because the GC had a
> +          log of per-block overhead. I removed this overhead. It's now 2x faster to scan all

What was the cause of the overhead and what did you do to get rid of it, out of curiosity?

> Source/JavaScriptCore/ChangeLog:99
> +          bits because we now used versioned mark bits: to clear then, just increment the 64-bit

used => use.

> Source/JavaScriptCore/ChangeLog:102
> +          the IncrementalSweeper's snapshot because blocks now known if they are in the snapshot.

known => know.

I'm not sure I totally follow this section. It feels a little like a brain dump.
Comment 210 Filip Pizlo 2016-09-03 12:42:11 PDT
I have another idea: what if there is some non-trivial cost that we pay for retirement during marking?  There was with 4KB marked blocks.  What if that is mostly due to the linked list logic, and the need to grab a lock?  The cost here could be significant since we need to touch the two adjacent blocks in order to complete the linked-list removal, and then we need to touch one random block in the retired list.  That's lots of spread-out memory!

If so, we could change the MarkedBlock list into an array rather than a doubly-linked list.  Since it has indices, we could use a bitvector to track "retirement".  A block would be "retired" if it's free.  In other words, the bitvector should probably have a 1 for blocks that are worth allocating in, and a 0 for those that don't qualify (too full or it's a free index).

This would greatly simplify the retirement slow path logic.

It may also speed up sweeping in general to have the MarkedBlocks in an array rather than linked together.  This isn't totally guaranteed, since we load next() as we're sweeping the block, so the linked list logic during lazy sweep gets the benefit of free cache locality.
Comment 211 Keith Miller 2016-09-03 15:54:11 PDT
Comment on attachment 287723 [details]
rebased again

View in context: https://bugs.webkit.org/attachment.cgi?id=287723&action=review

I'm about halfway through the patch, it looks good so far. I have some errands I need to run but I'll post the comments that I have for now.

> Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1761
> +    //if (m_currentIndex == 225)
> +    //    return false;

delete plox.

> Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5367
> +    m_jit.move(TrustedImmPtr(0), storageGPR);
> +            

Does this do anything? It looks like you just store to storageGPR in m_jit.emitAllocateVariableSized(). You do this in a bunch of places.

> Source/JavaScriptCore/jit/AssemblyHelpers.h:1433
> +        negPtr(resultGPR);

Why not move 0?

> Source/JavaScriptCore/jit/AssemblyHelpers.h:1437
> +            addPtr(payloadEndAddr, resultGPR);

Couldn't this just be a move?

> Source/JavaScriptCore/jit/AssemblyHelpers.h:1440
> +            loadPtr(payloadEndAddr, scratchGPR);
> +            addPtr(scratchGPR, resultGPR);

Why does this load on non-x86 but not on x86?
Comment 212 Keith Miller 2016-09-04 15:02:46 PDT
Comment on attachment 287723 [details]
rebased again

View in context: https://bugs.webkit.org/attachment.cgi?id=287723&action=review

r=me with some comments and a CMake build fix. I guess I read more of the interesting bits yesterday than I thought. I made comments on things that I thought seemed weird, if my comments are wrong feel free to ignore them.

> Source/JavaScriptCore/runtime/JSObject.cpp:62
> +#if 0
> +#define LOGIT() dataLog(RawPointer(this), ": ", WTF_PRETTY_FUNCTION, "\n");
> +#else
> +#define LOGIT() do { } while(false)
> +#endif

Maybe these LOGIT macros should be in a shared header somewhere?
Comment 213 Filip Pizlo 2016-09-04 18:39:40 PDT
(In reply to comment #209)
> Comment on attachment 287723 [details]
> rebased again
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=287723&action=review
> 
> Made some comments on the Changelog. I'm going to start on the code.

Thank you for looking at this huge patch!

> 
> > Source/JavaScriptCore/ChangeLog:58
> > +          turn hyperbolic for large sizes. The size class configuration happens at VM start-up, so
> > +          can be controlled with runtime options. I found that a base of 1.4 works pretty well.
> 
> so can => so it can

Today I learned that an ordinary Emacs search (Ctrl-S) for "so can" matches "so\n        can". Fixed.

> 
> > Source/JavaScriptCore/ChangeLog:94
> > +        - Copied space uses 64KB blocks, while marked space used to use 16KB blocks. Allocating a lot
> > +          of stuff in 16KB blocks was slower than allocating it in 64KB blocks because the GC had a
> > +          log of per-block overhead. I removed this overhead. It's now 2x faster to scan all
> 
> What was the cause of the overhead and what did you do to get rid of it, out
> of curiosity?

That's the rest of this paragraph.  I changed "I removed this overhead." to "I removed this overhead:" to make this a little clearer.

> 
> > Source/JavaScriptCore/ChangeLog:99
> > +          bits because we now used versioned mark bits: to clear then, just increment the 64-bit
> 
> used => use.

Fixed.

> 
> > Source/JavaScriptCore/ChangeLog:102
> > +          the IncrementalSweeper's snapshot because blocks now known if they are in the snapshot.
> 
> known => know.

Fixed.

> 
> I'm not sure I totally follow this section. It feels a little like a brain
> dump.

Each of those braindumpy sentences summarizes one of the optimizations towards removing the overhead of having many blocks.
Comment 214 Filip Pizlo 2016-09-04 18:59:55 PDT
(In reply to comment #210)
> I have another idea: what if there is some non-trivial cost that we pay for
> retirement during marking?  There was with 4KB marked blocks.  What if that
> is mostly due to the linked list logic, and the need to grab a lock?  The
> cost here could be significant since we need to touch the two adjacent
> blocks in order to complete the linked-list removal, and then we need to
> touch one random block in the retired list.  That's lots of spread-out
> memory!
> 
> If so, we could change the MarkedBlock list into an array rather than a
> doubly-linked list.  Since it has indices, we could use a bitvector to track
> "retirement".  A block would be "retired" if it's free.  In other words, the
> bitvector should probably have a 1 for blocks that are worth allocating in,
> and a 0 for those that don't qualify (too full or it's a free index).
> 
> This would greatly simplify the retirement slow path logic.
> 
> It may also speed up sweeping in general to have the MarkedBlocks in an
> array rather than linked together.  This isn't totally guaranteed, since we
> load next() as we're sweeping the block, so the linked list logic during
> lazy sweep gets the benefit of free cache locality.

I think that I don't need to do this in this patch, but I should do it in the future.  Filed: https://bugs.webkit.org/show_bug.cgi?id=161581
Comment 215 Filip Pizlo 2016-09-04 21:54:03 PDT
(In reply to comment #211)
> Comment on attachment 287723 [details]
> rebased again
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=287723&action=review
> 
> I'm about halfway through the patch, it looks good so far. I have some
> errands I need to run but I'll post the comments that I have for now.
> 
> > Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1761
> > +    //if (m_currentIndex == 225)
> > +    //    return false;
> 
> delete plox.

Deleted.

> 
> > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5367
> > +    m_jit.move(TrustedImmPtr(0), storageGPR);
> > +            
> 
> Does this do anything? It looks like you just store to storageGPR in
> m_jit.emitAllocateVariableSized(). You do this in a bunch of places.

Yeah, this is part of avoiding forgetting successful butterfly allocations.  The control flow here looks like this:

void* storage = 0;
if (!(storage = tryAllocateButterfly(...)))
    goto slow;
void* result;
if (!(result = tryAllocateObject(..., storage))
    goto slow;
goto done;
slow:
result = operationCreateNewThingy(storage);
storage = result->butterfly;
done:

Notice that there are two jumps to the slow path, one where the storageGPR is zero, and another when it isn't.  This lets the slow path know if we had already succeeded at allocating the butterfly.  If we had (storage not null), then it will use that butterfly instead of wastefully allocating another one.  If we hadn't (storage is null) then it will allocate one.

Hence this move.

> 
> > Source/JavaScriptCore/jit/AssemblyHelpers.h:1433
> > +        negPtr(resultGPR);
> 
> Why not move 0?

Not the same thing.  negPtr(resultGPR) means:

resultGPR := -resultGPR

> 
> > Source/JavaScriptCore/jit/AssemblyHelpers.h:1437
> > +            addPtr(payloadEndAddr, resultGPR);
> 
> Couldn't this just be a move?

Not the same thing.  This means:

resultGPR := resultGPR + *(payloadEndAddr)

So, combined with the statement above, we're doing:

resultGPR := *(payloadEndAddr) - resultGPR

> 
> > Source/JavaScriptCore/jit/AssemblyHelpers.h:1440
> > +            loadPtr(payloadEndAddr, scratchGPR);
> > +            addPtr(scratchGPR, resultGPR);
> 
> Why does this load on non-x86 but not on x86?

The addPtr(payloadEndAddr, resultGPR) is a load.  The load is part of the add.

That's something that x86 can do but other instruction sets can't do.  Since this code is meant to be used from B3 without blocking off scratch registers, the MacroAssembler's built-in emulation of addPtr(Address, RegisterID) will fail (it needs at least one scratch register).  So, we side-step that emulation and do the load/add separately while using our own scratch register.
Comment 216 Filip Pizlo 2016-09-04 21:54:55 PDT
(In reply to comment #212)
> Comment on attachment 287723 [details]
> rebased again
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=287723&action=review
> 
> r=me with some comments and a CMake build fix. I guess I read more of the
> interesting bits yesterday than I thought. I made comments on things that I
> thought seemed weird, if my comments are wrong feel free to ignore them.
> 
> > Source/JavaScriptCore/runtime/JSObject.cpp:62
> > +#if 0
> > +#define LOGIT() dataLog(RawPointer(this), ": ", WTF_PRETTY_FUNCTION, "\n");
> > +#else
> > +#define LOGIT() do { } while(false)
> > +#endif
> 
> Maybe these LOGIT macros should be in a shared header somewhere?

I removed them!  Geoff asked me to remove them, and I forgot.

They were only useful during very early stages of testing this patch, so long ago that it feels like a century.
Comment 217 Filip Pizlo 2016-09-04 22:02:14 PDT
Created attachment 287928 [details]
patch for landing

It probably needs to be rebased, but this is pretty ready:

- Neutral on membuster with 64% certainty.
- Ever-so-tiny speed-up on PLT with 76% certainty.
- Definite JetStream speed-up.
- Slow-down on Kraken and Speedometer, which we've agreed to allow.
Comment 218 WebKit Commit Bot 2016-09-05 00:07:33 PDT
Attachment 287928 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5367:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5383:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5401:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:797:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5440:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5452:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5454:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:643:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2775:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2776:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:55:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:451:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:54:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:98:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:40:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:55:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:56:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:56:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h:89:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 53 in 301 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 219 Filip Pizlo 2016-09-05 11:45:39 PDT
Created attachment 287970 [details]
patch for landing

Fixed builds.
Comment 220 WebKit Commit Bot 2016-09-05 13:18:26 PDT
Attachment 287970 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5367:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5383:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5401:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:797:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5440:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5452:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5454:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:643:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2775:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2776:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:55:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:451:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:54:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:98:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:40:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:55:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:56:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:56:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h:89:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 53 in 301 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 221 Filip Pizlo 2016-09-05 13:42:17 PDT
I'm just running through a bunch of tests.

- I've run debug+release webkit tests.
- I've run debug+release JSC tests.

Now I'm running release asan tests.

I still have to test 32-bit and ARM.
Comment 222 Filip Pizlo 2016-09-05 13:52:24 PDT
Created attachment 287982 [details]
patch for landing

Fixed more build issues.
Comment 223 WebKit Commit Bot 2016-09-05 13:57:42 PDT
Attachment 287982 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5367:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5383:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5401:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:797:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5440:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5452:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5454:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:643:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2775:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2776:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:55:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:451:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:54:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:98:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:40:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:55:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:56:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:56:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h:89:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 53 in 302 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 224 Filip Pizlo 2016-09-05 16:08:23 PDT
Asan tests pass.
Comment 225 Build Bot 2016-09-05 16:34:14 PDT
Comment on attachment 287982 [details]
patch for landing

Attachment 287982 [details] did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/2014205

New failing tests:
http/tests/security/contentSecurityPolicy/worker-csp-blocks-xhr-redirect-cross-origin.html
Comment 226 Build Bot 2016-09-05 16:34:25 PDT
Created attachment 287985 [details]
Archive of layout-test-results from ews116 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews116  Port: mac-yosemite  Platform: Mac OS X 10.10.5
Comment 227 Filip Pizlo 2016-09-05 17:10:35 PDT
(In reply to comment #226)
> Created attachment 287985 [details]
> Archive of layout-test-results from ews116 for mac-yosemite
> 
> The attached test failures were seen while running run-webkit-tests on the
> mac-debug-ews.
> Bot: ews116  Port: mac-yosemite  Platform: Mac OS X 10.10.5

Does not look related at all:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x00000001100096a7 WTFCrash + 39
1   com.apple.WebCore             	0x0000000115b380be WebCore::FrameView::paintContents(WebCore::GraphicsContext&, WebCore::IntRect const&) + 462 (FrameView.cpp:4152)
2   com.apple.WebKitLegacy        	0x000000011df0cf33 -[WebFrame(WebInternal) _drawRect:contentsOnly:] + 803
Comment 228 Filip Pizlo 2016-09-05 17:21:18 PDT
(In reply to comment #225)
> Comment on attachment 287982 [details]
> patch for landing
> 
> Attachment 287982 [details] did not pass mac-debug-ews (mac):
> Output: http://webkit-queues.webkit.org/results/2014205
> 
> New failing tests:
> http/tests/security/contentSecurityPolicy/worker-csp-blocks-xhr-redirect-
> cross-origin.html

Also does not look related, the failure is this extra console message:

CONSOLE MESSAGE: Origin http://127.0.0.1:8000 is not allowed by Access-Control-Allow-Origin.
Comment 229 Filip Pizlo 2016-09-05 17:24:09 PDT
Created attachment 287987 [details]
patch for landing

Rebased again.  Hopefully the last time.
Comment 230 WebKit Commit Bot 2016-09-05 17:33:04 PDT
Attachment 287987 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/heap/HeapUtil.h:31:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:32:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:33:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:37:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:39:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/heap/HeapUtil.h:41:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:196:  The parameter name "propertyName" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5367:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5383:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:5401:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/ObjCCallbackFunction.mm:35:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/heap/Heap.cpp:797:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5440:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5452:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5454:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/ftl/FTLOutput.cpp:643:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:277:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:376:  The parameter name "codeId" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2775:  Declaration has space between type name and * in oldVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/runtime/JSObject.cpp:2776:  Declaration has space between type name and * in newVectorLength * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/jit/JIT.h:52:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/parser/Nodes.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/FreeList.h:35:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/SuperSampler.cpp:55:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkInfo.h:48:  The parameter name "opcodeID" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/CMakeLists.txt:451:  Alphabetical sorting problem. "heap/FreeList.cpp" should be before "heap/FullGCActivityCallback.cpp".  [list/order] [5]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:54:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/heap/MarkedBlock.h:98:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/profiler/ProfilerBytecode.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/bindings/js/JSDOMBinding.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:40:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:45:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:49:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:55:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:56:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/ArrayConventions.cpp:56:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/PropertyTable.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGCallArrayAllocatorSlowPathGenerator.h:89:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/Opcode.h:58:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:131:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:134:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:143:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/ScopedLambda.h:149:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 53 in 302 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 231 Filip Pizlo 2016-09-05 18:05:05 PDT
Landed!  http://trac.webkit.org/changeset/205462
Comment 232 Filip Pizlo 2016-09-05 18:13:36 PDT
I think I fixed cloop build in r205463.
Comment 233 Alexey Proskuryakov 2016-09-05 19:00:10 PDT
CC'ing Ryan for the many false positives.

But looking at EWS machines, I see a number of flaky assertions that do seem to be caused by this change (and I couldn't quickly find the same on regular bots):

Thread 10 Crashed:: WTF Parallel Helper Thread
0   com.apple.JavaScriptCore      	0x00000001084676a7 WTFCrash + 39
1   com.apple.JavaScriptCore      	0x0000000108070e92 JSC::MarkedBlock::flipIfNecessarySlow() + 114
2   com.apple.JavaScriptCore      	0x0000000107648350 JSC::MarkedBlock::flipIfNecessary(unsigned long long) + 64
3   com.apple.JavaScriptCore      	0x0000000107647ead JSC::Heap::isMarked(void const*) + 141
4   com.apple.JavaScriptCore      	0x000000010766f105 JSC::CodeBlock::visitWeakly(JSC::SlotVisitor&) + 85
5   com.apple.JavaScriptCore      	0x0000000107baa2f0 JSC::FunctionExecutable::visitChildren(JSC::JSCell*, JSC::SlotVisitor&) + 368
6   com.apple.JavaScriptCore      	0x000000010827b04f JSC::SlotVisitor::visitChildren(JSC::JSCell const*) + 335
7   com.apple.JavaScriptCore      	0x00000001082798e5 JSC::SlotVisitor::drain() + 229
8   com.apple.JavaScriptCore      	0x0000000108279dc4 JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode) + 1124
9   com.apple.JavaScriptCore      	0x0000000107cd243e JSC::Heap::markRoots(double, void*, void*, int (&) [37])::$_0::operator()() const + 734
10  com.apple.JavaScriptCore      	0x0000000107cd212c WTF::SharedTaskFunctor<void (), JSC::Heap::markRoots(double, void*, void*, int (&) [37])::$_0>::run() + 28
Comment 234 Filip Pizlo 2016-09-05 19:03:37 PDT
(In reply to comment #233)
> CC'ing Ryan for the many false positives.
> 
> But looking at EWS machines, I see a number of flaky assertions that do seem
> to be caused by this change (and I couldn't quickly find the same on regular
> bots):
> 
> Thread 10 Crashed:: WTF Parallel Helper Thread
> 0   com.apple.JavaScriptCore      	0x00000001084676a7 WTFCrash + 39
> 1   com.apple.JavaScriptCore      	0x0000000108070e92
> JSC::MarkedBlock::flipIfNecessarySlow() + 114
> 2   com.apple.JavaScriptCore      	0x0000000107648350
> JSC::MarkedBlock::flipIfNecessary(unsigned long long) + 64
> 3   com.apple.JavaScriptCore      	0x0000000107647ead
> JSC::Heap::isMarked(void const*) + 141
> 4   com.apple.JavaScriptCore      	0x000000010766f105
> JSC::CodeBlock::visitWeakly(JSC::SlotVisitor&) + 85
> 5   com.apple.JavaScriptCore      	0x0000000107baa2f0
> JSC::FunctionExecutable::visitChildren(JSC::JSCell*, JSC::SlotVisitor&) + 368
> 6   com.apple.JavaScriptCore      	0x000000010827b04f
> JSC::SlotVisitor::visitChildren(JSC::JSCell const*) + 335
> 7   com.apple.JavaScriptCore      	0x00000001082798e5
> JSC::SlotVisitor::drain() + 229
> 8   com.apple.JavaScriptCore      	0x0000000108279dc4
> JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode) + 1124
> 9   com.apple.JavaScriptCore      	0x0000000107cd243e
> JSC::Heap::markRoots(double, void*, void*, int (&) [37])::$_0::operator()()
> const + 734
> 10  com.apple.JavaScriptCore      	0x0000000107cd212c
> WTF::SharedTaskFunctor<void (), JSC::Heap::markRoots(double, void*, void*,
> int (&) [37])::$_0>::run() + 28

Whoa, where did you get this stack trace? :-)  Was this from EWS running my patch for landing?  It would be great if EWS made it easier to see crash logs!

I know what is going wrong.  I will post a fix shortly.  Bug here: https://bugs.webkit.org/show_bug.cgi?id=161613
Comment 235 Alexey Proskuryakov 2016-09-05 19:11:56 PDT
> Whoa, where did you get this stack trace? :-)

I VNC'ed into a EWS bot to find some other crash, and saw this. It occurred a few minutes ago, so it was some new patch running into this crash after the patch was landed.

Also, builtin generator test failure: https://build.webkit.org/builders/Apple%20Yosemite%20Release%20WK2%20%28Tests%29/builds/17636/steps/builtins-generator-tests/logs/stdio
Comment 236 Filip Pizlo 2016-09-05 19:14:36 PDT
(In reply to comment #235)
> > Whoa, where did you get this stack trace? :-)
> 
> I VNC'ed into a EWS bot to find some other crash, and saw this. It occurred
> a few minutes ago, so it was some new patch running into this crash after
> the patch was landed.
> 
> Also, builtin generator test failure:
> https://build.webkit.org/builders/
> Apple%20Yosemite%20Release%20WK2%20%28Tests%29/builds/17636/steps/builtins-
> generator-tests/logs/stdio

I'm on it.
Comment 237 Filip Pizlo 2016-09-05 19:18:09 PDT
(In reply to comment #236)
> (In reply to comment #235)
> > > Whoa, where did you get this stack trace? :-)
> > 
> > I VNC'ed into a EWS bot to find some other crash, and saw this. It occurred
> > a few minutes ago, so it was some new patch running into this crash after
> > the patch was landed.
> > 
> > Also, builtin generator test failure:
> > https://build.webkit.org/builders/
> > Apple%20Yosemite%20Release%20WK2%20%28Tests%29/builds/17636/steps/builtins-
> > generator-tests/logs/stdio
> 
> I'm on it.

Fixed in r205465.
Comment 238 Filip Pizlo 2016-09-05 19:45:44 PDT
(In reply to comment #234)
> (In reply to comment #233)
> > CC'ing Ryan for the many false positives.
> > 
> > But looking at EWS machines, I see a number of flaky assertions that do seem
> > to be caused by this change (and I couldn't quickly find the same on regular
> > bots):
> > 
> > Thread 10 Crashed:: WTF Parallel Helper Thread
> > 0   com.apple.JavaScriptCore      	0x00000001084676a7 WTFCrash + 39
> > 1   com.apple.JavaScriptCore      	0x0000000108070e92
> > JSC::MarkedBlock::flipIfNecessarySlow() + 114
> > 2   com.apple.JavaScriptCore      	0x0000000107648350
> > JSC::MarkedBlock::flipIfNecessary(unsigned long long) + 64
> > 3   com.apple.JavaScriptCore      	0x0000000107647ead
> > JSC::Heap::isMarked(void const*) + 141
> > 4   com.apple.JavaScriptCore      	0x000000010766f105
> > JSC::CodeBlock::visitWeakly(JSC::SlotVisitor&) + 85
> > 5   com.apple.JavaScriptCore      	0x0000000107baa2f0
> > JSC::FunctionExecutable::visitChildren(JSC::JSCell*, JSC::SlotVisitor&) + 368
> > 6   com.apple.JavaScriptCore      	0x000000010827b04f
> > JSC::SlotVisitor::visitChildren(JSC::JSCell const*) + 335
> > 7   com.apple.JavaScriptCore      	0x00000001082798e5
> > JSC::SlotVisitor::drain() + 229
> > 8   com.apple.JavaScriptCore      	0x0000000108279dc4
> > JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode) + 1124
> > 9   com.apple.JavaScriptCore      	0x0000000107cd243e
> > JSC::Heap::markRoots(double, void*, void*, int (&) [37])::$_0::operator()()
> > const + 734
> > 10  com.apple.JavaScriptCore      	0x0000000107cd212c
> > WTF::SharedTaskFunctor<void (), JSC::Heap::markRoots(double, void*, void*,
> > int (&) [37])::$_0>::run() + 28
> 
> Whoa, where did you get this stack trace? :-)  Was this from EWS running my
> patch for landing?  It would be great if EWS made it easier to see crash
> logs!
> 
> I know what is going wrong.  I will post a fix shortly.  Bug here:
> https://bugs.webkit.org/show_bug.cgi?id=161613

This should be fixed as of http://trac.webkit.org/changeset/205466
Comment 239 Michael Catanzaro 2016-09-05 20:23:19 PDT
It triggered an huge amount of compiler warnings with GCC (all the same warning, being #included into a bunch of different source files):

In file included from ../../Source/WTF/wtf/StdLibExtras.h:33:0,
                 from ../../Source/WTF/wtf/FastMalloc.h:26,
                 from ../../Source/JavaScriptCore/config.h:54,
                 from ../../Source/JavaScriptCore/b3/B3EliminateCommonSubexpressions.cpp:26:
../../Source/JavaScriptCore/bytecode/Opcode.h:78:54: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
 #define VERIFY_OPCODE_ID(id, size) COMPILE_ASSERT(id <= numOpcodeIDs, ASSERT_THAT_JS_OPCODE_IDS_ARE_VALID);
                                                       
../../Source/WTF/wtf/Assertions.h:366:50: note: in definition of macro ‘COMPILE_ASSERT’
 #define COMPILE_ASSERT(exp, name) static_assert((exp), #name)
                                                  ^~~
DerivedSources/JavaScriptCore/Bytecodes.h:33:5: note: in expansion of macro ‘VERIFY_OPCODE_ID’
     macro(op_enter, 1) \
     ^~~~~
../../Source/JavaScriptCore/bytecode/Opcode.h:44:5: note: in expansion of macro ‘FOR_EACH_BYTECODE_ID’
     FOR_EACH_BYTECODE_ID(macro) \
     ^~~~~~~~~~~~~~~~~~~~
../../Source/JavaScriptCore/bytecode/Opcode.h:51:5: note: in expansion of macro ‘FOR_EACH_CORE_OPCODE_ID_WITH_EXTENSION’
     FOR_EACH_CORE_OPCODE_ID_WITH_EXTENSION( \
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../Source/JavaScriptCore/bytecode/Opcode.h:79:5: note: in expansion of macro ‘FOR_EACH_OPCODE_ID’
     FOR_EACH_OPCODE_ID(VERIFY_OPCODE_ID);
     ^~~~~~~~~~~~~~~~~~
Comment 240 Michael Catanzaro 2016-09-05 20:31:07 PDT
It looks hard to fix. One option is to just silence the warning:

#if COMPILER(GCC)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wtype-limits"
#endif

#define VERIFY_OPCODE_ID(id, size) COMPILE_ASSERT(id <= numOpcodeIDs, ASSERT_THAT_JS_OPCODE_IDS_ARE_VALID);
    FOR_EACH_OPCODE_ID(VERIFY_OPCODE_ID);
#undef VERIFY_OPCODE_ID

#if COMPILER(GCC)
#pragma GCC diagnostic pop
#endif

That looks like a mess, but it works.
Comment 241 Filip Pizlo 2016-09-05 20:34:19 PDT
(In reply to comment #240)
> It looks hard to fix. One option is to just silence the warning:
> 
> #if COMPILER(GCC)
> #pragma GCC diagnostic push
> #pragma GCC diagnostic ignored "-Wtype-limits"
> #endif
> 
> #define VERIFY_OPCODE_ID(id, size) COMPILE_ASSERT(id <= numOpcodeIDs,
> ASSERT_THAT_JS_OPCODE_IDS_ARE_VALID);
>     FOR_EACH_OPCODE_ID(VERIFY_OPCODE_ID);
> #undef VERIFY_OPCODE_ID
> 
> #if COMPILER(GCC)
> #pragma GCC diagnostic pop
> #endif
> 
> That looks like a mess, but it works.

This isn't bad at all.  I think we want to keep the assertion but the presence of the assertion combined with the layout of opcodes guarantees that this assertion will cause the GCC warning.

So, I think it makes sense to disable the warning like this.

RS=me for this fix.
Comment 242 Michael Catanzaro 2016-09-06 07:32:15 PDT
(In reply to comment #241)
> This isn't bad at all.  I think we want to keep the assertion but the
> presence of the assertion combined with the layout of opcodes guarantees
> that this assertion will cause the GCC warning.
> 
> So, I think it makes sense to disable the warning like this.
> 
> RS=me for this fix.

OK then, it's certainly the easiest solution. http://trac.webkit.org/changeset/205477
Comment 243 Radar WebKit Bug Importer 2017-02-03 15:22:44 PST
<rdar://problem/30358070>